From 5c7ff578c7bd2b900d39a1e2aa72decfd7f23e56 Mon Sep 17 00:00:00 2001 From: Vincent Meilinger Date: Sat, 6 Jan 2024 21:28:52 +0100 Subject: [PATCH] Server protocol update (unfinished) --- .../UserInterfaceState.xcuserstate | Bin 0 -> 26049 bytes .../xcschemes/xcschememanagement.plist | 14 +++ .../Localizable.xcstrings | 3 + .../Views/Onboarding/OnboardingView.swift | 102 +++++++++++++++++- .../Views/Onboarding/TokenLoginView.swift | 11 +- .../Views/Onboarding/V2LoginView.swift | 5 +- 6 files changed, 127 insertions(+), 8 deletions(-) create mode 100644 Nextcloud Cookbook iOS Client.xcodeproj/project.xcworkspace/xcuserdata/vincie.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Nextcloud Cookbook iOS Client.xcodeproj/xcuserdata/vincie.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/Nextcloud Cookbook iOS Client.xcodeproj/project.xcworkspace/xcuserdata/vincie.xcuserdatad/UserInterfaceState.xcuserstate b/Nextcloud Cookbook iOS Client.xcodeproj/project.xcworkspace/xcuserdata/vincie.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..1f00a6cca4a5daec45d9f15ccae82ca5578f9c4d GIT binary patch literal 26049 zcmeHv2Yi#&{`Wc0O3O?O-78H8ok^P}ZPUHdHgr!mC2dm(v`tA;pbj_>A|N8-Ld5}X zks%<80*VMIDk1_>M4X_a;y_doQ9*ovPoAcwP=R~z|9{{2-p?zxP0sqA@jKt&I_K23 zG@7ion3(qvMiinEgIL5N2^uguc!tqpHJO{o1RE@MQ%vx!GT3Hr869k{oocMJSzQsH zzp_R;w78@IW|IU(n&3Y)=ZBzThx6^#a>LC6DnA}65h_L{s1%i)QV=HTM$7!T7VX!#poV%KY9o~ zfu2Mw(0a51ZA8zYO=t_+ingH_(N44r?Ln`jH_(3c4myO6p!d*6=woyeeTlw8Ut@$Z zrZ9~e%wi5puoHI11MooXf`?)^?2bLKC-%irI2tRk635_Jtink+8K>YZT#hH=8ax>{ z;bv^XGw@7&E4~fij(I!;&&Bic0(=*~7ca#R;z#hK_zB#O*Wjn|db|O@iTC2S@IL%D z-jCnG2k=3B2)~ODW!{3$+;zrK&?!IzqiieL{UoeNFv9ou_`M{-7??6wT2C=z;W5T1pS6qv&W_K`ZGPI+j+^akQG& z(D8HNte?VbR}IySJM;e8hR34Pfwwz)3azo&!ZR8i|M8GgY-l6qxAFi z3-lIxE4__=k$#EZPQOg=pkJYP(y!6`=(p+p^kKS-{)qmV{)9eF|3IIif24n+f2PmU z=jh+*KNyOk8HQmQjv2xXWri`s86PHy8Noy{N+ym;U=o=WCZEwWBbfrGkQvR4Va77! znDI;tGo7(8R>sD(GBcQ&%q(U$Gl!YSEMe|tmNNG-_cM<(PcZGw8fF8tmD$F;$h^kv zVP0pBGbfnOn9rFnn3K$x%va3U%qiv@=3C|*^9ysH`IWiE{K;aLVF$1S*`e$(){pgP z16Uaw#D=orY#gg*HEc4Q&StPV>`1nlEn&y8?Zbkc00S9eU;tEzRezBkFxKxKe0cvXW4V? zFYI~tSM~z?8~Z!^2YZqIi{rRK++fa)bLT?25nLD-&P8yMTof10#c^sbiA(0Pxg2gH zSHn%>3|uW&$JKL2u7R7(P2n0jE7!)|!p-IG;2z)}?oIAmN#+~MV;LdPAazAlD zb7#48-0u=v!bn&NCy_{;B(9QS5)X-wBvKM3iIylNN=b|)PNJ41O41}*5?xhrb8BPc z5i}SLK|_%g4MXmuiYpY;jBVDj@V6VMs)Oqq4OVLhazU|P-rmxj;xWo33N=&_2!v+Yc33~qRwJ8Hc#wH&9xYsj5X3|NXR!>i%gR(fV1`0 zhQ?N-HP>QpDy}FuT5V>Fp|;Uz$KV`;%}^svyR!S0hT3d%v&~{|Y&2SGGIMph+=N(d zv??nmE?S+Cog1AP8y6EDug;0j&Wg!Ys}gf+q@g`MfZACG%P51j+GI5Wl~E?!lnPVx zTSwwZmcy}^p2)#q@KNbb}~I#&NWhBO}s2oBa2nX z#K2#zEC&9?YGPF~ttLk1Sc*iHg`(CWElNVkCSLRxDyZJ zxek^f2kB5Q%0u}`4~tR&i{M34NGi!BStJJ*Bwtt(DfFpgig{+SVTNh40p?ar>iL>! zF~SVHK&dL5snKLJ8LgvC^|mQuF@3YO1*E0f(p#*jroGtsYLjthj98VW zliAXiXEC%)=}mR?p@+f*Ag8N0b+_vn{U|gZMXf@k(HJxqjU(Q~hxih|RcHblhicFy z;!pfY6j2JJl8vr2*BcekOo7R!=;@N8XVqXx6~;#By0N||7o>fj#oXE=W`J&Bt&s-x zG*oQ1nd*#IdwceeJ@p*@n~WNT{!Kw9G!;!F0YpXuiF_4mLe0pGnn(}{A))Xa`Zqk+ z)MztW>^z*+Rs?+oEd%;gXt3IP+7*&(r0!MC4gD7O6x%S?SLyq<h;bUT_oRs@S?*kz-|k4EeG;))y-u(Y|^U}@`sQgcQZSCrV5AdzGH^rylMJOBk9 zH0Gjt$h{riK}NKrJ4u*;IRcmWTc-

@Ktj-CZN~hUF19ajBr5l^a_uMk^qWLFfgE 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 literal 0 HcmV?d00001 diff --git a/Nextcloud Cookbook iOS Client.xcodeproj/xcuserdata/vincie.xcuserdatad/xcschemes/xcschememanagement.plist b/Nextcloud Cookbook iOS Client.xcodeproj/xcuserdata/vincie.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..caa45f8 --- /dev/null +++ b/Nextcloud Cookbook iOS Client.xcodeproj/xcuserdata/vincie.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Nextcloud Cookbook iOS Client.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Nextcloud Cookbook iOS Client/Localizable.xcstrings b/Nextcloud Cookbook iOS Client/Localizable.xcstrings index 733f767..8a68a9a 100644 --- a/Nextcloud Cookbook iOS Client/Localizable.xcstrings +++ b/Nextcloud Cookbook iOS Client/Localizable.xcstrings @@ -2828,6 +2828,9 @@ } } } + }, + "Use a non-standard port" : { + }, "Validate" : { "localizations" : { diff --git a/Nextcloud Cookbook iOS Client/Views/Onboarding/OnboardingView.swift b/Nextcloud Cookbook iOS Client/Views/Onboarding/OnboardingView.swift index 34b5a2a..02aff48 100644 --- a/Nextcloud Cookbook iOS Client/Views/Onboarding/OnboardingView.swift +++ b/Nextcloud Cookbook iOS Client/Views/Onboarding/OnboardingView.swift @@ -137,6 +137,28 @@ struct LoginLabel: View { } } +struct BorderedLoginTextField: View { + var example: String + @Binding var text: String + @State var color: Color = .white + + var body: some View { + TextField(example, text: $text) + .textFieldStyle(.plain) + .autocorrectionDisabled() + .textInputAutocapitalization(.never) + .foregroundColor(color) + .accentColor(color) + .padding() + .background( + RoundedRectangle(cornerRadius: 10) + .stroke(.white, lineWidth: 2) + .foregroundColor(.clear) + ) + + } +} + struct LoginTextField: View { var example: String @Binding var text: String @@ -152,8 +174,84 @@ struct LoginTextField: View { .padding() .background( RoundedRectangle(cornerRadius: 10) - .stroke(color, lineWidth: 2) - .foregroundColor(.clear) + .foregroundColor(Color.white.opacity(0.2)) ) } } + + +struct ServerAddressField: View { + @Binding var addressString: String + @State var serverAddress: String = "" + @State var serverProtocol: ServerProtocol = .https + @State var serverPort: String = "" + @State var useNonStandardPort: Bool = false + + enum ServerProtocol: String { + case https="https://", http="http://" + + static let all = [https, http] + } + + var body: some View { + VStack(alignment: .leading) { + LoginLabel(text: "Server address") + VStack(alignment: .leading) { + HStack { + Picker(ServerProtocol.https.rawValue, selection: $serverProtocol) { + ForEach(ServerProtocol.all, id: \.self) { + Text($0.rawValue) + } + }.pickerStyle(.menu) + .tint(.white) + .font(.headline) + + LoginTextField(example: "e.g.: example.com", text: $serverAddress) + } + + Toggle("Use a non-standard port", isOn: $useNonStandardPort) + .tint(.white.opacity(0.2)) + .foregroundStyle(.white) + .font(.headline) + .padding(.top) + if useNonStandardPort { + LoginTextField(example: "e.g.: 80", text: $serverPort) + } + + LoginLabel(text: "Full server address") + .padding(.top) + Text(createServerAddressString()) + .foregroundColor(.white) + .padding(.vertical, 5) + } + .padding() + .background( + RoundedRectangle(cornerRadius: 10) + .stroke(.white, lineWidth: 2) + .foregroundColor(.clear) + ) + }.animation(.easeInOut, value: useNonStandardPort) + } + + func createServerAddressString() -> String { + if useNonStandardPort && serverPort != "" { + addressString = serverProtocol.rawValue + serverAddress + ":" + serverPort + } else { + addressString = serverProtocol.rawValue + serverAddress + } + return addressString + } +} + +struct ServerAddressField_Preview: PreviewProvider { + static var previews: some View { + ServerAddressField(addressString: .constant(""), + serverAddress: "example.com", + serverProtocol: .https, + serverPort: "80", + useNonStandardPort: true) + .previewLayout(.sizeThatFits) + .padding() + .background(Color.nextcloudBlue) + } +} diff --git a/Nextcloud Cookbook iOS Client/Views/Onboarding/TokenLoginView.swift b/Nextcloud Cookbook iOS Client/Views/Onboarding/TokenLoginView.swift index e974a05..d112349 100644 --- a/Nextcloud Cookbook iOS Client/Views/Onboarding/TokenLoginView.swift +++ b/Nextcloud Cookbook iOS Client/Views/Onboarding/TokenLoginView.swift @@ -8,6 +8,8 @@ import Foundation import SwiftUI + + struct TokenLoginView: View { @Binding var showAlert: Bool @Binding var alertMessage: String @@ -24,15 +26,16 @@ struct TokenLoginView: View { var body: some View { VStack(alignment: .leading) { - LoginLabel(text: "Server address") + /*LoginLabel(text: "Server address") LoginTextField(example: "e.g.: example.com", text: $userSettings.serverAddress) .focused($focusedField, equals: .server) .textContentType(.URL) .submitLabel(.next) .padding(.bottom) - + */ + ServerAddressField(addressString: $userSettings.serverAddress) LoginLabel(text: "User name") - LoginTextField(example: "username", text: $userSettings.username) + BorderedLoginTextField(example: "username", text: $userSettings.username) .focused($focusedField, equals: .username) .textContentType(.username) .submitLabel(.next) @@ -40,7 +43,7 @@ struct TokenLoginView: View { LoginLabel(text: "App Token") - LoginTextField(example: "can be generated in security settings of your nextcloud", text: $userSettings.token) + BorderedLoginTextField(example: "can be generated in security settings of your nextcloud", text: $userSettings.token) .focused($focusedField, equals: .token) .textContentType(.password) .submitLabel(.join) diff --git a/Nextcloud Cookbook iOS Client/Views/Onboarding/V2LoginView.swift b/Nextcloud Cookbook iOS Client/Views/Onboarding/V2LoginView.swift index 79d6180..f974a7d 100644 --- a/Nextcloud Cookbook iOS Client/Views/Onboarding/V2LoginView.swift +++ b/Nextcloud Cookbook iOS Client/Views/Onboarding/V2LoginView.swift @@ -50,7 +50,7 @@ struct V2LoginView: View { var body: some View { ScrollView { VStack(alignment: .leading) { - LoginLabel(text: "Server address") + /*LoginLabel(text: "Server address") .padding() LoginTextField(example: "e.g.: example.com", text: $userSettings.serverAddress, color: loginStage == .serverAddress ? .white : .secondary) .focused($focusedField, equals: .server) @@ -62,7 +62,8 @@ struct V2LoginView: View { loginStage = loginStage.next() } } - + */ + ServerAddressField(addressString: $userSettings.serverAddress) CollapsibleView { VStack(alignment: .leading) { Text("Make sure to enter the server address in the form 'example.com'. Currently, only servers using the 'https' protocol are supported.")