diff --git a/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift b/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift index cc47374257..1a0a736acd 100644 --- a/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift +++ b/apps/ios/Shared/Views/Onboarding/ChooseServerOperators.swift @@ -62,7 +62,6 @@ struct ChooseServerOperators: View { var onboarding: Bool @State private var serverOperators: [ServerOperator] = [] @State private var selectedOperatorIds = Set() - @State private var reviewConditionsNavLinkActive = false @State private var sheetItem: ChooseServerOperatorsSheet? = nil @State private var notificationsModeNavLinkActive = false @State private var justOpened = true @@ -79,7 +78,7 @@ struct ChooseServerOperators: View { .frame(maxWidth: .infinity, alignment: .center) if onboarding { - title.padding(.top, 50) + title.padding(.top, 25) } else { title } @@ -92,11 +91,14 @@ struct ChooseServerOperators: View { ForEach(serverOperators) { srvOperator in operatorCheckView(srvOperator) } - Text("You can configure servers via settings.") - .font(.footnote) - .multilineTextAlignment(.center) - .frame(maxWidth: .infinity, alignment: .center) - .padding(.horizontal, 32) + VStack { + Text("SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.").padding(.bottom, 8) + Text("You can configure servers via settings.") + } + .font(.footnote) + .multilineTextAlignment(.center) + .frame(maxWidth: .infinity, alignment: .center) + .padding(.horizontal, 16) Spacer() @@ -166,8 +168,9 @@ struct ChooseServerOperators: View { .modifier(ThemedBackground(grouped: true)) } } + .frame(maxHeight: .infinity, alignment: .top) } - .frame(maxHeight: .infinity) + .frame(maxHeight: .infinity, alignment: .top) .padding(onboarding ? 25 : 16) } @@ -214,23 +217,15 @@ struct ChooseServerOperators: View { } private func reviewConditionsButton() -> some View { - ZStack { - Button { - reviewConditionsNavLinkActive = true - } label: { - Text("Review conditions") - } - .buttonStyle(OnboardingButtonStyle(isDisabled: selectedOperatorIds.isEmpty)) - .disabled(selectedOperatorIds.isEmpty) - - NavigationLink(isActive: $reviewConditionsNavLinkActive) { - reviewConditionsDestinationView() - } label: { - EmptyView() - } - .frame(width: 1, height: 1) - .hidden() + NavigationLink("Review conditions") { + reviewConditionsView() + .navigationTitle("Conditions of use") + .navigationBarTitleDisplayMode(.large) + .toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) } + .modifier(ThemedBackground(grouped: true)) } + .buttonStyle(OnboardingButtonStyle(isDisabled: selectedOperatorIds.isEmpty)) + .disabled(selectedOperatorIds.isEmpty) } private func setOperatorsButton() -> some View { @@ -309,20 +304,12 @@ struct ChooseServerOperators: View { .modifier(ThemedBackground()) } - private func reviewConditionsDestinationView() -> some View { - reviewConditionsView() - .navigationTitle("Conditions of use") - .navigationBarTitleDisplayMode(.large) - .toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) } - .modifier(ThemedBackground(grouped: true)) - } - @ViewBuilder private func reviewConditionsView() -> some View { let operatorsWithConditionsAccepted = ChatModel.shared.conditions.serverOperators.filter { $0.conditionsAcceptance.conditionsAccepted } let acceptForOperators = selectedOperators.filter { !$0.conditionsAcceptance.conditionsAccepted } VStack(alignment: .leading, spacing: 20) { if !operatorsWithConditionsAccepted.isEmpty { - Text("Conditions are already accepted for following operator(s): **\(operatorsWithConditionsAccepted.map { $0.legalName_ }.joined(separator: ", "))**.") + Text("Conditions are already accepted for these operator(s): **\(operatorsWithConditionsAccepted.map { $0.legalName_ }.joined(separator: ", "))**.") Text("The same conditions will apply to operator(s): **\(acceptForOperators.map { $0.legalName_ }.joined(separator: ", "))**.") } else { Text("Conditions will be accepted for operator(s): **\(acceptForOperators.map { $0.legalName_ }.joined(separator: ", "))**.") @@ -415,13 +402,12 @@ struct ChooseServerOperatorsInfoView: View { var body: some View { NavigationView { List { - VStack(alignment: .leading) { + VStack(alignment: .leading, spacing: 12) { Text("The app protects your privacy by using different operators in each conversation.") - .padding(.bottom) Text("When more than one operator is enabled, none of them has metadata to learn who communicates with whom.") - .padding(.bottom) Text("For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server.") } + .fixedSize(horizontal: false, vertical: true) .listRowBackground(Color.clear) .listRowSeparator(.hidden) .listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)) diff --git a/apps/ios/Shared/Views/Onboarding/CreateProfile.swift b/apps/ios/Shared/Views/Onboarding/CreateProfile.swift index 7665e57cc1..14ad9dfb08 100644 --- a/apps/ios/Shared/Views/Onboarding/CreateProfile.swift +++ b/apps/ios/Shared/Views/Onboarding/CreateProfile.swift @@ -136,7 +136,6 @@ struct CreateFirstProfile: View { .multilineTextAlignment(.center) } .frame(maxWidth: .infinity) // Ensures it takes up the full width - .padding(.top, 25) .padding(.horizontal, 10) HStack { diff --git a/apps/ios/Shared/Views/Onboarding/SetNotificationsMode.swift b/apps/ios/Shared/Views/Onboarding/SetNotificationsMode.swift index 642220454c..97e1f49382 100644 --- a/apps/ios/Shared/Views/Onboarding/SetNotificationsMode.swift +++ b/apps/ios/Shared/Views/Onboarding/SetNotificationsMode.swift @@ -22,7 +22,7 @@ struct SetNotificationsMode: View { Text("Push notifications") .font(.largeTitle) .bold() - .padding(.top, 50) + .padding(.top, 25) infoText() diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift index b1e4d36eda..cea9dd0635 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/OperatorView.swift @@ -331,9 +331,12 @@ struct OperatorInfoView: View { Text(d) } } + Link(serverOperator.info.website.absoluteString, destination: serverOperator.info.website) } - Section { - Link("\(serverOperator.info.website)", destination: URL(string: serverOperator.info.website)!) + if let selfhost = serverOperator.info.selfhost { + Section { + Link(selfhost.text, destination: selfhost.link) + } } } } @@ -421,7 +424,6 @@ struct SingleOperatorUsageConditionsView: View { @Binding var userServers: [UserOperatorServers] @Binding var serverErrors: [UserServersError] var operatorIndex: Int - @State private var usageConditionsNavLinkActive: Bool = false var body: some View { viewBody() @@ -433,52 +435,45 @@ struct SingleOperatorUsageConditionsView: View { // In current UI implementation this branch doesn't get shown - as conditions can't be opened from inside operator once accepted VStack(alignment: .leading, spacing: 20) { - Group { - viewHeader() - ConditionsTextView() - .padding(.bottom) - .padding(.bottom) - } - .padding(.horizontal) + viewHeader() + ConditionsTextView() } + .padding(.bottom) + .padding(.bottom) + .padding(.horizontal) .frame(maxHeight: .infinity) } else if !operatorsWithConditionsAccepted.isEmpty { NavigationView { VStack(alignment: .leading, spacing: 20) { - Group { - viewHeader() - Text("Conditions are already accepted for following operator(s): **\(operatorsWithConditionsAccepted.map { $0.legalName_ }.joined(separator: ", "))**.") - Text("The same conditions will apply to operator **\(userServers[operatorIndex].operator_.legalName_)**.") - conditionsAppliedToOtherOperatorsText() - usageConditionsNavLinkButton() + viewHeader() + Text("Conditions are already accepted for these operator(s): **\(operatorsWithConditionsAccepted.map { $0.legalName_ }.joined(separator: ", "))**.") + Text("The same conditions will apply to operator **\(userServers[operatorIndex].operator_.legalName_)**.") + conditionsAppliedToOtherOperatorsText() + Spacer() - Spacer() - - acceptConditionsButton() - .padding(.bottom) - .padding(.bottom) - } - .padding(.horizontal) + acceptConditionsButton() + usageConditionsNavLinkButton() } + .padding(.bottom) + .padding(.bottom) + .padding(.horizontal) .frame(maxHeight: .infinity) } } else { VStack(alignment: .leading, spacing: 20) { - Group { - viewHeader() - Text("To use the servers of **\(userServers[operatorIndex].operator_.legalName_)**, accept conditions of use.") - conditionsAppliedToOtherOperatorsText() - ConditionsTextView() - acceptConditionsButton() - .padding(.bottom) - .padding(.bottom) - } - .padding(.horizontal) + viewHeader() + Text("To use the servers of **\(userServers[operatorIndex].operator_.legalName_)**, accept conditions of use.") + conditionsAppliedToOtherOperatorsText() + ConditionsTextView() + acceptConditionsButton() + .padding(.bottom) + .padding(.bottom) } + .padding(.horizontal) .frame(maxHeight: .infinity) } @@ -545,31 +540,16 @@ struct SingleOperatorUsageConditionsView: View { } private func usageConditionsNavLinkButton() -> some View { - ZStack { - Button { - usageConditionsNavLinkActive = true - } label: { - Text("View conditions") - } - - NavigationLink(isActive: $usageConditionsNavLinkActive) { - usageConditionsDestinationView() - } label: { - EmptyView() - } - .frame(width: 1, height: 1) - .hidden() + NavigationLink("View conditions") { + ConditionsTextView() + .padding() + .navigationTitle("Conditions of use") + .navigationBarTitleDisplayMode(.large) + .toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) } + .modifier(ThemedBackground(grouped: true)) } - } - - private func usageConditionsDestinationView() -> some View { - ConditionsTextView() - .padding() - .padding(.bottom) - .navigationTitle("Conditions of use") - .navigationBarTitleDisplayMode(.large) - .toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) } - .modifier(ThemedBackground(grouped: true)) + .font(.callout) + .frame(maxWidth: .infinity, alignment: .center) } } diff --git a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff index 4af0007eea..9260ac41c0 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -1537,8 +1537,8 @@ Conditions are accepted for the operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. No comment provided by engineer. @@ -5766,7 +5766,7 @@ Enable in *Network & servers* settings. Save and notify contact Запази и уведоми контакта - No comment provided by engineer. + alert button Save and notify group members @@ -6380,6 +6380,10 @@ Enable in *Network & servers* settings. SimpleX Адрес No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. Сигурността на SimpleX Chat беше одитирана от Trail of Bits. diff --git a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff index 7d92f62f12..d921471f7f 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -1492,8 +1492,8 @@ Conditions are accepted for the operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. No comment provided by engineer. @@ -5576,7 +5576,7 @@ Enable in *Network & servers* settings. Save and notify contact Uložit a upozornit kontakt - No comment provided by engineer. + alert button Save and notify group members @@ -6178,6 +6178,10 @@ Enable in *Network & servers* settings. SimpleX Adresa No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. Zabezpečení SimpleX chatu bylo auditováno společností Trail of Bits. diff --git a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff index 516baf49b7..053a1faf73 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -1606,8 +1606,8 @@ Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. Die Nutzungsbedingungen der/des folgenden Betreiber(s) wurden schon akzeptiert: **%@**. No comment provided by engineer. @@ -6034,7 +6034,7 @@ Aktivieren Sie es in den *Netzwerk & Server* Einstellungen. Save and notify contact Speichern und Kontakt benachrichtigen - No comment provided by engineer. + alert button Save and notify group members @@ -6692,6 +6692,11 @@ Aktivieren Sie es in den *Netzwerk & Server* Einstellungen. SimpleX-Adresse No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + SimpleX-Chat und Flux haben vereinbart, die von Flux betriebenen Server in die App aufzunehmen. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. Die Sicherheit von SimpleX Chat wurde von Trail of Bits überprüft. diff --git a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff index 699091e2d8..004d7f0d31 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -1617,9 +1617,9 @@ Conditions are accepted for the operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. + Conditions are already accepted for these operator(s): **%@**. No comment provided by engineer. @@ -6056,7 +6056,7 @@ Enable in *Network & servers* settings. Save and notify contact Save and notify contact - No comment provided by engineer. + alert button Save and notify group members @@ -6714,6 +6714,11 @@ Enable in *Network & servers* settings. SimpleX Address No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. SimpleX Chat security was audited by Trail of Bits. diff --git a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff index ddb5d6b1a1..ea966ea63b 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -1606,8 +1606,8 @@ Las condiciones se han aceptado para el(los) operador(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. Las condiciones ya se han aceptado para el/los siguiente(s) operador(s): **%@**. No comment provided by engineer. @@ -6034,7 +6034,7 @@ Actívalo en ajustes de *Servidores y Redes*. Save and notify contact Guardar y notificar contacto - No comment provided by engineer. + alert button Save and notify group members @@ -6692,6 +6692,11 @@ Actívalo en ajustes de *Servidores y Redes*. Dirección SimpleX No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + Simplex Chat y Flux han acordado incluir servidores operados por Flux en la aplicación + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. La seguridad de SimpleX Chat ha sido auditada por Trail of Bits. diff --git a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff index 12c8d0e3ca..2f67ee9d7d 100644 --- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff +++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff @@ -1485,8 +1485,8 @@ Conditions are accepted for the operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. No comment provided by engineer. @@ -5564,7 +5564,7 @@ Enable in *Network & servers* settings. Save and notify contact Tallenna ja ilmoita kontaktille - No comment provided by engineer. + alert button Save and notify group members @@ -6165,6 +6165,10 @@ Enable in *Network & servers* settings. SimpleX-osoite No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. Trail of Bits on tarkastanut SimpleX Chatin tietoturvan. diff --git a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff index e82f01e33b..74002293d7 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -1589,8 +1589,8 @@ Conditions are accepted for the operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. No comment provided by engineer. @@ -5972,7 +5972,7 @@ Activez-le dans les paramètres *Réseau et serveurs*. Save and notify contact Enregistrer et en informer le contact - No comment provided by engineer. + alert button Save and notify group members @@ -6623,6 +6623,10 @@ Activez-le dans les paramètres *Réseau et serveurs*. Adresse SimpleX No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. La sécurité de SimpleX Chat a été auditée par Trail of Bits. diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff index 5f05efaa4d..598bee5485 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -1616,8 +1616,8 @@ A következő üzemeltető(k) számára elfogadott feltételek: **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. A feltételek már el lettek fogadva a következő üzemeltető(k) számára: **%@**. No comment provided by engineer. @@ -6055,7 +6055,7 @@ Engedélyezze a „Beállítások -> Hálózat és kiszolgálók” menüben. Save and notify contact Mentés és az ismerős értesítése - No comment provided by engineer. + alert button Save and notify group members @@ -6713,6 +6713,10 @@ Engedélyezze a „Beállítások -> Hálózat és kiszolgálók” menüben. SimpleX-cím No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. A SimpleX Chat biztonsága a Trail of Bits által lett auditálva. diff --git a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff index ebfba7e415..67633b7ae8 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -1616,8 +1616,8 @@ Le condizioni sono state accettate per gli operatori: **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. Le condizioni sono già state accettate per i seguenti operatori: **%@**. No comment provided by engineer. @@ -6055,7 +6055,7 @@ Attivalo nelle impostazioni *Rete e server*. Save and notify contact Salva e avvisa il contatto - No comment provided by engineer. + alert button Save and notify group members @@ -6713,6 +6713,10 @@ Attivalo nelle impostazioni *Rete e server*. Indirizzo SimpleX No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. La sicurezza di SimpleX Chat è stata verificata da Trail of Bits. diff --git a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff index ba35db0c03..43e6f24cf7 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -1515,8 +1515,8 @@ Conditions are accepted for the operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. No comment provided by engineer. @@ -5613,7 +5613,7 @@ Enable in *Network & servers* settings. Save and notify contact 保存して、連絡先にに知らせる - No comment provided by engineer. + alert button Save and notify group members @@ -6207,6 +6207,10 @@ Enable in *Network & servers* settings. SimpleXアドレス No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. SimpleX Chat のセキュリティは Trail of Bits によって監査されました。 diff --git a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff index 5631d9bd7d..c30370fc5a 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -1616,8 +1616,8 @@ Voorwaarden worden geaccepteerd voor de operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. Voorwaarden zijn reeds geaccepteerd voor de volgende operator(s): **%@**. No comment provided by engineer. @@ -6055,7 +6055,7 @@ Schakel dit in in *Netwerk en servers*-instellingen. Save and notify contact Opslaan en Contact melden - No comment provided by engineer. + alert button Save and notify group members @@ -6713,6 +6713,11 @@ Schakel dit in in *Netwerk en servers*-instellingen. SimpleX adres No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + Simplex-chat en flux hebben een overeenkomst gemaakt om door flux geëxploiteerde servers in de app op te nemen. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. De beveiliging van SimpleX Chat is gecontroleerd door Trail of Bits. diff --git a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff index dbc95b6527..e7c9863152 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -1584,8 +1584,8 @@ Conditions are accepted for the operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. No comment provided by engineer. @@ -5962,7 +5962,7 @@ Włącz w ustawianiach *Sieć i serwery* . Save and notify contact Zapisz i powiadom kontakt - No comment provided by engineer. + alert button Save and notify group members @@ -6613,6 +6613,10 @@ Włącz w ustawianiach *Sieć i serwery* . Adres SimpleX No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. Bezpieczeństwo SimpleX Chat zostało zaudytowane przez Trail of Bits. diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff index 95bd74e484..943ea67ef4 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -1617,8 +1617,8 @@ Условия приняты для оператора(ов): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. Условия уже приняты для следующих оператора(ов): **%@**. No comment provided by engineer. @@ -6055,7 +6055,7 @@ Enable in *Network & servers* settings. Save and notify contact Сохранить и уведомить контакт - No comment provided by engineer. + alert button Save and notify group members @@ -6713,6 +6713,11 @@ Enable in *Network & servers* settings. Адрес SimpleX No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + SimpleX Chat и Flux заключили соглашение добавить серверы под управлением Flux в приложение. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. Безопасность SimpleX Chat была проверена Trail of Bits. diff --git a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff index 14827be1b5..177f426c1a 100644 --- a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff +++ b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff @@ -1477,8 +1477,8 @@ Conditions are accepted for the operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. No comment provided by engineer. @@ -5541,7 +5541,7 @@ Enable in *Network & servers* settings. Save and notify contact บันทึกและแจ้งผู้ติดต่อ - No comment provided by engineer. + alert button Save and notify group members @@ -6139,6 +6139,10 @@ Enable in *Network & servers* settings. ที่อยู่ SimpleX No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. ความปลอดภัยของ SimpleX Chat ได้รับการตรวจสอบโดย Trail of Bits diff --git a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff index d12ef93f69..d88adc3235 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -1589,8 +1589,8 @@ Conditions are accepted for the operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. No comment provided by engineer. @@ -5972,7 +5972,7 @@ Enable in *Network & servers* settings. Save and notify contact Kaydet ve kişilere bildir - No comment provided by engineer. + alert button Save and notify group members @@ -6623,6 +6623,10 @@ Enable in *Network & servers* settings. SimpleX Adresi No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. SimpleX Chat güvenliği Trails of Bits tarafından denetlenmiştir. diff --git a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff index e228fd01e6..d68b5abbe1 100644 --- a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff +++ b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff @@ -1606,8 +1606,8 @@ Для оператора(ів) приймаються умови: **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. Умови вже прийняті для наступних операторів: **%@**. No comment provided by engineer. @@ -6034,7 +6034,7 @@ Enable in *Network & servers* settings. Save and notify contact Зберегти та повідомити контакт - No comment provided by engineer. + alert button Save and notify group members @@ -6692,6 +6692,10 @@ Enable in *Network & servers* settings. Адреса SimpleX No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. Безпека SimpleX Chat була перевірена компанією Trail of Bits. diff --git a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff index 0b1b568385..99d4a5077f 100644 --- a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff +++ b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff @@ -1575,8 +1575,8 @@ Conditions are accepted for the operator(s): **%@**. No comment provided by engineer. - - Conditions are already accepted for following operator(s): **%@**. + + Conditions are already accepted for these operator(s): **%@**. No comment provided by engineer. @@ -5925,7 +5925,7 @@ Enable in *Network & servers* settings. Save and notify contact 保存并通知联系人 - No comment provided by engineer. + alert button Save and notify group members @@ -6570,6 +6570,10 @@ Enable in *Network & servers* settings. SimpleX 地址 No comment provided by engineer. + + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. + No comment provided by engineer. + SimpleX Chat security was audited by Trail of Bits. SimpleX Chat 的安全性 由 Trail of Bits 审核。 diff --git a/apps/ios/SimpleXChat/APITypes.swift b/apps/ios/SimpleXChat/APITypes.swift index a9cf2ee599..884993f542 100644 --- a/apps/ios/SimpleXChat/APITypes.swift +++ b/apps/ios/SimpleXChat/APITypes.swift @@ -1212,13 +1212,12 @@ public enum ServerProtocol: String, Decodable { public enum OperatorTag: String, Codable { case simplex = "simplex" case flux = "flux" - case xyz = "xyz" - case demo = "demo" } -public struct ServerOperatorInfo: Decodable { +public struct ServerOperatorInfo { public var description: [String] - public var website: String + public var website: URL + public var selfhost: (text: String, link: URL)? = nil public var logo: String public var largeLogo: String public var logoDarkMode: String @@ -1228,10 +1227,10 @@ public struct ServerOperatorInfo: Decodable { public let operatorsInfo: Dictionary = [ .simplex: ServerOperatorInfo( description: [ - "SimpleX Chat is the first communication network that has no user profile IDs of any kind, not even random numbers or keys that identify the users.", + "SimpleX Chat is the first communication network that has no user profile IDs of any kind, not even random numbers or identity keys.", "SimpleX Chat Ltd develops the communication software for SimpleX network." ], - website: "https://simplex.chat", + website: URL(string: "https://simplex.chat")!, logo: "decentralized", largeLogo: "logo", logoDarkMode: "decentralized-light", @@ -1239,31 +1238,17 @@ public let operatorsInfo: Dictionary = [ ), .flux: ServerOperatorInfo( description: [ - "Flux is the largest decentralized cloud infrastructure, leveraging a global network of user-operated computational nodes.", - "Flux offers a powerful, scalable, and affordable platform designed to support individuals, businesses, and cutting-edge technologies like AI. With high uptime and worldwide distribution, Flux ensures reliable, accessible cloud computing for all." + "Flux is the largest decentralized cloud, based on a global network of user-operated nodes.", + "Flux offers a powerful, scalable, and affordable cutting edge technology platform for all.", + "Flux operates servers in SimpleX network to improve its privacy and decentralization." ], - website: "https://runonflux.com", + website: URL(string: "https://runonflux.com")!, + selfhost: (text: "Self-host SimpleX servers on Flux", link: URL(string: "https://home.runonflux.io/apps/marketplace?q=simplex")!), logo: "flux_logo_symbol", largeLogo: "flux_logo", logoDarkMode: "flux_logo_symbol", largeLogoDarkMode: "flux_logo-light" ), - .xyz: ServerOperatorInfo( - description: ["XYZ servers"], - website: "XYZ website", - logo: "shield", - largeLogo: "logo", - logoDarkMode: "shield", - largeLogoDarkMode: "logo-light" - ), - .demo: ServerOperatorInfo( - description: ["Demo operator"], - website: "Demo website", - logo: "decentralized", - largeLogo: "logo", - logoDarkMode: "decentralized-light", - largeLogoDarkMode: "logo-light" - ) ] public struct UsageConditions: Decodable { @@ -1358,7 +1343,7 @@ public struct ServerOperator: Identifiable, Equatable, Codable { public static let dummyOperatorInfo = ServerOperatorInfo( description: ["Default"], - website: "Default", + website: URL(string: "https://simplex.chat")!, logo: "decentralized", largeLogo: "logo", logoDarkMode: "decentralized-light", @@ -1384,30 +1369,6 @@ public struct ServerOperator: Identifiable, Equatable, Codable { smpRoles: ServerRoles(storage: true, proxy: true), xftpRoles: ServerRoles(storage: true, proxy: true) ) - - public static var sampleData2 = ServerOperator( - operatorId: 2, - operatorTag: .xyz, - tradeName: "XYZ", - legalName: nil, - serverDomains: ["xyz.com"], - conditionsAcceptance: .required(deadline: nil), - enabled: false, - smpRoles: ServerRoles(storage: false, proxy: true), - xftpRoles: ServerRoles(storage: false, proxy: true) - ) - - public static var sampleData3 = ServerOperator( - operatorId: 3, - operatorTag: .demo, - tradeName: "Demo", - legalName: nil, - serverDomains: ["demo.com"], - conditionsAcceptance: .required(deadline: nil), - enabled: false, - smpRoles: ServerRoles(storage: true, proxy: false), - xftpRoles: ServerRoles(storage: true, proxy: false) - ) } public struct ServerRoles: Equatable, Codable { diff --git a/apps/ios/bg.lproj/Localizable.strings b/apps/ios/bg.lproj/Localizable.strings index 91606d8569..f2059d5627 100644 --- a/apps/ios/bg.lproj/Localizable.strings +++ b/apps/ios/bg.lproj/Localizable.strings @@ -3139,7 +3139,7 @@ /* alert button */ "Save (and notify contacts)" = "Запази (и уведоми контактите)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Запази и уведоми контакта"; /* No comment provided by engineer. */ diff --git a/apps/ios/cs.lproj/Localizable.strings b/apps/ios/cs.lproj/Localizable.strings index 96b149a8d5..837e76ebbf 100644 --- a/apps/ios/cs.lproj/Localizable.strings +++ b/apps/ios/cs.lproj/Localizable.strings @@ -2538,7 +2538,7 @@ /* alert button */ "Save (and notify contacts)" = "Uložit (a informovat kontakty)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Uložit a upozornit kontakt"; /* No comment provided by engineer. */ diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 25f9cf32c1..a510b30477 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -1030,7 +1030,7 @@ "Conditions are accepted for the operator(s): **%@**." = "Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: **%@**."; /* No comment provided by engineer. */ -"Conditions are already accepted for following operator(s): **%@**." = "Die Nutzungsbedingungen der/des folgenden Betreiber(s) wurden schon akzeptiert: **%@**."; +"Conditions are already accepted for these operator(s): **%@**." = "Die Nutzungsbedingungen der/des folgenden Betreiber(s) wurden schon akzeptiert: **%@**."; /* No comment provided by engineer. */ "Conditions of use" = "Nutzungsbedingungen"; @@ -3952,7 +3952,7 @@ /* alert button */ "Save (and notify contacts)" = "Speichern (und Kontakte benachrichtigen)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Speichern und Kontakt benachrichtigen"; /* No comment provided by engineer. */ @@ -4391,6 +4391,9 @@ /* No comment provided by engineer. */ "SimpleX address or 1-time link?" = "SimpleX-Adresse oder Einmal-Link?"; +/* No comment provided by engineer. */ +"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "SimpleX-Chat und Flux haben vereinbart, die von Flux betriebenen Server in die App aufzunehmen."; + /* No comment provided by engineer. */ "SimpleX Chat security was audited by Trail of Bits." = "Die Sicherheit von SimpleX Chat wurde von Trail of Bits überprüft."; diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index a1665cd716..9c0b815ad4 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -1030,7 +1030,7 @@ "Conditions are accepted for the operator(s): **%@**." = "Las condiciones se han aceptado para el(los) operador(s): **%@**."; /* No comment provided by engineer. */ -"Conditions are already accepted for following operator(s): **%@**." = "Las condiciones ya se han aceptado para el/los siguiente(s) operador(s): **%@**."; +"Conditions are already accepted for these operator(s): **%@**." = "Las condiciones ya se han aceptado para el/los siguiente(s) operador(s): **%@**."; /* No comment provided by engineer. */ "Conditions of use" = "Condiciones de uso"; @@ -3952,7 +3952,7 @@ /* alert button */ "Save (and notify contacts)" = "Guardar (y notificar contactos)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Guardar y notificar contacto"; /* No comment provided by engineer. */ @@ -4391,6 +4391,9 @@ /* No comment provided by engineer. */ "SimpleX address or 1-time link?" = "Dirección SimpleX o enlace de un uso?"; +/* No comment provided by engineer. */ +"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "Simplex Chat y Flux han acordado incluir servidores operados por Flux en la aplicación"; + /* No comment provided by engineer. */ "SimpleX Chat security was audited by Trail of Bits." = "La seguridad de SimpleX Chat ha sido auditada por Trail of Bits."; diff --git a/apps/ios/fi.lproj/Localizable.strings b/apps/ios/fi.lproj/Localizable.strings index e4b56e76a4..f0987f3e1b 100644 --- a/apps/ios/fi.lproj/Localizable.strings +++ b/apps/ios/fi.lproj/Localizable.strings @@ -2508,7 +2508,7 @@ /* alert button */ "Save (and notify contacts)" = "Tallenna (ja ilmoita kontakteille)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Tallenna ja ilmoita kontaktille"; /* No comment provided by engineer. */ diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings index e50d2c0967..2de5997f07 100644 --- a/apps/ios/fr.lproj/Localizable.strings +++ b/apps/ios/fr.lproj/Localizable.strings @@ -3763,7 +3763,7 @@ /* alert button */ "Save (and notify contacts)" = "Enregistrer (et en informer les contacts)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Enregistrer et en informer le contact"; /* No comment provided by engineer. */ diff --git a/apps/ios/hu.lproj/Localizable.strings b/apps/ios/hu.lproj/Localizable.strings index 8c0da0ed57..58d28cd8ed 100644 --- a/apps/ios/hu.lproj/Localizable.strings +++ b/apps/ios/hu.lproj/Localizable.strings @@ -1060,7 +1060,7 @@ "Conditions are accepted for the operator(s): **%@**." = "A következő üzemeltető(k) számára elfogadott feltételek: **%@**."; /* No comment provided by engineer. */ -"Conditions are already accepted for following operator(s): **%@**." = "A feltételek már el lettek fogadva a következő üzemeltető(k) számára: **%@**."; +"Conditions are already accepted for these operator(s): **%@**." = "A feltételek már el lettek fogadva a következő üzemeltető(k) számára: **%@**."; /* No comment provided by engineer. */ "Conditions of use" = "Használati feltételek"; @@ -4015,7 +4015,7 @@ /* alert button */ "Save (and notify contacts)" = "Mentés és az ismerősök értesítése"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Mentés és az ismerős értesítése"; /* No comment provided by engineer. */ diff --git a/apps/ios/it.lproj/Localizable.strings b/apps/ios/it.lproj/Localizable.strings index 1242b488ac..25a672da26 100644 --- a/apps/ios/it.lproj/Localizable.strings +++ b/apps/ios/it.lproj/Localizable.strings @@ -1060,7 +1060,7 @@ "Conditions are accepted for the operator(s): **%@**." = "Le condizioni sono state accettate per gli operatori: **%@**."; /* No comment provided by engineer. */ -"Conditions are already accepted for following operator(s): **%@**." = "Le condizioni sono già state accettate per i seguenti operatori: **%@**."; +"Conditions are already accepted for these operator(s): **%@**." = "Le condizioni sono già state accettate per i seguenti operatori: **%@**."; /* No comment provided by engineer. */ "Conditions of use" = "Condizioni d'uso"; @@ -4015,7 +4015,7 @@ /* alert button */ "Save (and notify contacts)" = "Salva (e avvisa i contatti)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Salva e avvisa il contatto"; /* No comment provided by engineer. */ diff --git a/apps/ios/ja.lproj/Localizable.strings b/apps/ios/ja.lproj/Localizable.strings index 3aa64f9b55..da0ba42a86 100644 --- a/apps/ios/ja.lproj/Localizable.strings +++ b/apps/ios/ja.lproj/Localizable.strings @@ -2655,7 +2655,7 @@ /* alert button */ "Save (and notify contacts)" = "保存(連絡先に通知)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "保存して、連絡先にに知らせる"; /* No comment provided by engineer. */ diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings index 4ead9a726d..ba28bd1f59 100644 --- a/apps/ios/nl.lproj/Localizable.strings +++ b/apps/ios/nl.lproj/Localizable.strings @@ -1060,7 +1060,7 @@ "Conditions are accepted for the operator(s): **%@**." = "Voorwaarden worden geaccepteerd voor de operator(s): **%@**."; /* No comment provided by engineer. */ -"Conditions are already accepted for following operator(s): **%@**." = "Voorwaarden zijn reeds geaccepteerd voor de volgende operator(s): **%@**."; +"Conditions are already accepted for these operator(s): **%@**." = "Voorwaarden zijn reeds geaccepteerd voor de volgende operator(s): **%@**."; /* No comment provided by engineer. */ "Conditions of use" = "Gebruiksvoorwaarden"; @@ -4015,7 +4015,7 @@ /* alert button */ "Save (and notify contacts)" = "Bewaar (en informeer contacten)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Opslaan en Contact melden"; /* No comment provided by engineer. */ @@ -4454,6 +4454,9 @@ /* No comment provided by engineer. */ "SimpleX address or 1-time link?" = "SimpleX adres of eenmalige link?"; +/* No comment provided by engineer. */ +"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "Simplex-chat en flux hebben een overeenkomst gemaakt om door flux geëxploiteerde servers in de app op te nemen."; + /* No comment provided by engineer. */ "SimpleX Chat security was audited by Trail of Bits." = "De beveiliging van SimpleX Chat is gecontroleerd door Trail of Bits."; diff --git a/apps/ios/pl.lproj/Localizable.strings b/apps/ios/pl.lproj/Localizable.strings index e0bcedc965..e48e9f2ed8 100644 --- a/apps/ios/pl.lproj/Localizable.strings +++ b/apps/ios/pl.lproj/Localizable.strings @@ -3736,7 +3736,7 @@ /* alert button */ "Save (and notify contacts)" = "Zapisz (i powiadom kontakty)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Zapisz i powiadom kontakt"; /* No comment provided by engineer. */ diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index 09ee9a2e5a..09c95d4203 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -1066,7 +1066,7 @@ "Conditions are accepted for the operator(s): **%@**." = "Условия приняты для оператора(ов): **%@**."; /* No comment provided by engineer. */ -"Conditions are already accepted for following operator(s): **%@**." = "Условия уже приняты для следующих оператора(ов): **%@**."; +"Conditions are already accepted for these operator(s): **%@**." = "Условия уже приняты для следующих оператора(ов): **%@**."; /* No comment provided by engineer. */ "Conditions of use" = "Условия использования"; @@ -4024,7 +4024,7 @@ /* alert button */ "Save (and notify contacts)" = "Сохранить (и уведомить контакты)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Сохранить и уведомить контакт"; /* No comment provided by engineer. */ @@ -4463,6 +4463,9 @@ /* No comment provided by engineer. */ "SimpleX address or 1-time link?" = "Адрес SimpleX или одноразовая ссылка?"; +/* No comment provided by engineer. */ +"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "SimpleX Chat и Flux заключили соглашение добавить серверы под управлением Flux в приложение."; + /* No comment provided by engineer. */ "SimpleX Chat security was audited by Trail of Bits." = "Безопасность SimpleX Chat была проверена Trail of Bits."; diff --git a/apps/ios/th.lproj/Localizable.strings b/apps/ios/th.lproj/Localizable.strings index 3fee154931..4fdc49139a 100644 --- a/apps/ios/th.lproj/Localizable.strings +++ b/apps/ios/th.lproj/Localizable.strings @@ -2439,7 +2439,7 @@ /* alert button */ "Save (and notify contacts)" = "บันทึก (และแจ้งผู้ติดต่อ)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "บันทึกและแจ้งผู้ติดต่อ"; /* No comment provided by engineer. */ diff --git a/apps/ios/tr.lproj/Localizable.strings b/apps/ios/tr.lproj/Localizable.strings index a78faed4cd..3670e57955 100644 --- a/apps/ios/tr.lproj/Localizable.strings +++ b/apps/ios/tr.lproj/Localizable.strings @@ -3763,7 +3763,7 @@ /* alert button */ "Save (and notify contacts)" = "Kaydet (ve kişilere bildir)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Kaydet ve kişilere bildir"; /* No comment provided by engineer. */ diff --git a/apps/ios/uk.lproj/Localizable.strings b/apps/ios/uk.lproj/Localizable.strings index ce607753fe..4e2b1680fd 100644 --- a/apps/ios/uk.lproj/Localizable.strings +++ b/apps/ios/uk.lproj/Localizable.strings @@ -1030,7 +1030,7 @@ "Conditions are accepted for the operator(s): **%@**." = "Для оператора(ів) приймаються умови: **%@**."; /* No comment provided by engineer. */ -"Conditions are already accepted for following operator(s): **%@**." = "Умови вже прийняті для наступних операторів: **%@**."; +"Conditions are already accepted for these operator(s): **%@**." = "Умови вже прийняті для наступних операторів: **%@**."; /* No comment provided by engineer. */ "Conditions of use" = "Умови використання"; @@ -3952,7 +3952,7 @@ /* alert button */ "Save (and notify contacts)" = "Зберегти (і повідомити контактам)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "Зберегти та повідомити контакт"; /* No comment provided by engineer. */ diff --git a/apps/ios/zh-Hans.lproj/Localizable.strings b/apps/ios/zh-Hans.lproj/Localizable.strings index 627bfd0c30..c40833b67b 100644 --- a/apps/ios/zh-Hans.lproj/Localizable.strings +++ b/apps/ios/zh-Hans.lproj/Localizable.strings @@ -3634,7 +3634,7 @@ /* alert button */ "Save (and notify contacts)" = "保存(并通知联系人)"; -/* No comment provided by engineer. */ +/* alert button */ "Save and notify contact" = "保存并通知联系人"; /* No comment provided by engineer. */ diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt index 94ce22d356..6d13ff191f 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt @@ -3669,14 +3669,13 @@ enum class ServerProtocol { @Serializable enum class OperatorTag { @SerialName("simplex") SimpleX, - @SerialName("flux") Flux, - @SerialName("xyz") XYZ, - @SerialName("demo") Demo + @SerialName("flux") Flux } data class ServerOperatorInfo( val description: List, val website: String, + val selfhost: Pair? = null, val logo: ImageResource, val largeLogo: ImageResource, val logoDarkMode: ImageResource, @@ -3696,31 +3695,17 @@ val operatorsInfo: Map = mapOf( ), OperatorTag.Flux to ServerOperatorInfo( description = listOf( - "Flux is the largest decentralized cloud infrastructure, leveraging a global network of user-operated computational nodes.", - "Flux offers a powerful, scalable, and affordable platform designed to support individuals, businesses, and cutting-edge technologies like AI. With high uptime and worldwide distribution, Flux ensures reliable, accessible cloud computing for all." + "Flux is the largest decentralized cloud, based on a global network of user-operated nodes.", + "Flux offers a powerful, scalable, and affordable cutting edge technology platform for all.", + "Flux operates servers in SimpleX network to improve its privacy and decentralization." ), website = "https://runonflux.com", + selfhost = "Self-host SimpleX servers on Flux" to "https://home.runonflux.io/apps/marketplace?q=simplex", logo = MR.images.flux_logo_symbol, largeLogo = MR.images.flux_logo, logoDarkMode = MR.images.flux_logo_symbol, largeLogoDarkMode = MR.images.flux_logo_light ), - OperatorTag.XYZ to ServerOperatorInfo( - description = listOf("XYZ servers"), - website = "XYZ website", - logo = MR.images.shield, - largeLogo = MR.images.logo, - logoDarkMode = MR.images.shield, - largeLogoDarkMode = MR.images.logo_light - ), - OperatorTag.Demo to ServerOperatorInfo( - description = listOf("Demo operator"), - website = "Demo website", - logo = MR.images.decentralized, - largeLogo = MR.images.logo, - logoDarkMode = MR.images.decentralized_light, - largeLogoDarkMode = MR.images.logo_light - ) ) @Serializable @@ -3800,7 +3785,7 @@ data class ServerOperator( companion object { val dummyOperatorInfo = ServerOperatorInfo( description = listOf("Default"), - website = "Default", + website = "https://simplex.chat", logo = MR.images.decentralized, largeLogo = MR.images.logo, logoDarkMode = MR.images.decentralized_light, @@ -3818,30 +3803,6 @@ data class ServerOperator( smpRoles = ServerRoles(storage = true, proxy = true), xftpRoles = ServerRoles(storage = true, proxy = true) ) - - val sampleData2 = ServerOperator( - operatorId = 2, - operatorTag = OperatorTag.XYZ, - tradeName = "XYZ", - legalName = null, - serverDomains = listOf("xyz.com"), - conditionsAcceptance = ConditionsAcceptance.Required(deadline = null), - enabled = false, - smpRoles = ServerRoles(storage = false, proxy = true), - xftpRoles = ServerRoles(storage = false, proxy = true) - ) - - val sampleData3 = ServerOperator( - operatorId = 3, - operatorTag = OperatorTag.Demo, - tradeName = "Demo", - legalName = null, - serverDomains = listOf("demo.com"), - conditionsAcceptance = ConditionsAcceptance.Required(deadline = null), - enabled = false, - smpRoles = ServerRoles(storage = true, proxy = false), - xftpRoles = ServerRoles(storage = true, proxy = false) - ) } val id: Long diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt index dde1fb68ce..dcb7d7e133 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt @@ -14,8 +14,10 @@ import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import chat.simplex.common.model.* import chat.simplex.common.model.ChatController.appPrefs import chat.simplex.common.platform.* @@ -72,6 +74,7 @@ fun ModalData.ChooseServerOperators( } Spacer(Modifier.height(DEFAULT_PADDING_HALF)) + SectionTextFooter(annotatedStringResource(MR.strings.onboarding_network_operators_simplex_flux_agreement), textAlign = TextAlign.Center) SectionTextFooter(annotatedStringResource(MR.strings.onboarding_network_operators_configure_via_settings), textAlign = TextAlign.Center) } Spacer(Modifier.weight(1f)) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt index 28ca88584d..dcb1bc9de1 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/networkAndServers/OperatorView.kt @@ -427,23 +427,27 @@ fun OperatorInfoView(serverOperator: ServerOperator) { SectionDividerSpaced(maxBottomPadding = false) + val uriHandler = LocalUriHandler.current SectionView { SectionItemView { Column(verticalArrangement = Arrangement.spacedBy(10.dp)) { serverOperator.info.description.forEach { d -> Text(d) } + val website = serverOperator.info.website + Text(website, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openUriCatching(website) }) } } } - SectionDividerSpaced() - - SectionView(generalGetString(MR.strings.operator_website).uppercase()) { - SectionItemView { - val website = serverOperator.info.website - val uriHandler = LocalUriHandler.current - Text(website, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openUriCatching(website) }) + val selfhost = serverOperator.info.selfhost + if (selfhost != null) { + SectionDividerSpaced(maxBottomPadding = false) + SectionView { + SectionItemView { + val (text, link) = selfhost + Text(text, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openUriCatching(link) }) + } } } } diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml index 29df338079..82bf5bc8dc 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -1077,6 +1077,7 @@ Server operators Network operators + SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app. The app protects your privacy by using different operators in each conversation. When more than one operator is enabled, none of them has metadata to learn who communicates with whom. For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server. diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml index 584377bc99..a0c5ccf01b 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml @@ -2320,6 +2320,7 @@ только с одним контактом - поделитесь при встрече или через любой мессенджер.]]> Нет серверов для доставки сообщений. Вы можете настроить серверы позже. + SimpleX Chat и Flux заключили соглашение добавить серверы под управлением Flux в приложение. Приложение улучшает конфиденциальность используя разных операторов в каждом разговоре. Когда больше чем один оператор включен, ни один из них не видит метаданные, чтобы определить, кто соединен с кем. Ошибка сохранения серверов diff --git a/package.yaml b/package.yaml index b9c41ccdc0..b476741597 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: simplex-chat -version: 6.2.0.6 +version: 6.2.0.7 #synopsis: #description: homepage: https://github.com/simplex-chat/simplex-chat#readme diff --git a/simplex-chat.cabal b/simplex-chat.cabal index ace5afd851..29e748c4e8 100644 --- a/simplex-chat.cabal +++ b/simplex-chat.cabal @@ -5,7 +5,7 @@ cabal-version: 1.12 -- see: https://github.com/sol/hpack name: simplex-chat -version: 6.2.0.6 +version: 6.2.0.7 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat