From 78b3b12ec1cd02e440c954add8d320f2f6b954ad Mon Sep 17 00:00:00 2001 From: Evgeny Date: Thu, 21 Nov 2024 17:02:55 +0000 Subject: [PATCH] ios: button to open conditions and changes (#5225) --- .../Onboarding/ChooseServerOperators.swift | 3 ++ .../NetworkAndServers/NetworkAndServers.swift | 12 ++++--- .../NetworkAndServers/OperatorView.swift | 35 ++++++++++++++++--- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift b/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift index 471d27ea50..19d67bc62c 100644 --- a/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift +++ b/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift @@ -9,6 +9,8 @@ import SwiftUI import SimpleXChat +let conditionsURL = URL(string: "https://github.com/simplex-chat/simplex-chat/blob/stable/PRIVACY.md")! + struct OnboardingButtonStyle: ButtonStyle { @EnvironmentObject var theme: AppTheme var isDisabled: Bool = false @@ -313,6 +315,7 @@ struct ChooseServerOperators: View { reviewConditionsView() .navigationTitle("Conditions of use") .navigationBarTitleDisplayMode(.large) + .toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) } .modifier(ThemedBackground(grouped: true)) } diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift index 8b07c9a519..9b03b79353 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift @@ -238,11 +238,13 @@ struct UsageConditionsView: View { var body: some View { VStack(alignment: .leading, spacing: 20) { - Text("Conditions of use") - .font(.largeTitle) - .bold() - .padding(.top) - .padding(.top) + HStack { + Text("Conditions of use").font(.largeTitle).bold() + Spacer() + conditionsLinkButton() + } + .padding(.top) + .padding(.top) switch ChatModel.shared.conditions.conditionsAction { diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift index 6cebfdcde6..83152a001f 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift @@ -464,11 +464,13 @@ struct SingleOperatorUsageConditionsView: View { } private func viewHeader() -> some View { - Text("Use servers of \(userServers[operatorIndex].operator_.tradeName)") - .font(.largeTitle) - .bold() - .padding(.top) - .padding(.top) + HStack { + Text("Use \(userServers[operatorIndex].operator_.tradeName)").font(.largeTitle).bold() + Spacer() + conditionsLinkButton() + } + .padding(.top) + .padding(.top) } @ViewBuilder private func conditionsAppliedToOtherOperatorsText() -> some View { @@ -545,10 +547,33 @@ struct SingleOperatorUsageConditionsView: View { .padding(.bottom) .navigationTitle("Conditions of use") .navigationBarTitleDisplayMode(.large) + .toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) } .modifier(ThemedBackground(grouped: true)) } } +func conditionsLinkButton() -> some View { + let commit = ChatModel.shared.conditions.currentConditions.conditionsCommit + let mdUrl = URL(string: "https://github.com/simplex-chat/simplex-chat/blob/\(commit)/PRIVACY.md") ?? conditionsURL + return Menu { + Link(destination: mdUrl) { + Label("Open conditions", systemImage: "doc") + } + if let commitUrl = URL(string: "https://github.com/simplex-chat/simplex-chat/commit/\(commit)") { + Link(destination: commitUrl) { + Label("Open changes", systemImage: "ellipsis") + } + } + } label: { + Image(systemName: "arrow.up.right.circle") + .resizable() + .scaledToFit() + .frame(width: 20) + .padding(2) + .contentShape(Circle()) + } +} + #Preview { OperatorView( currUserServers: Binding.constant([UserOperatorServers.sampleData1, UserOperatorServers.sampleDataNilOperator]),