diff --git a/README.md b/README.md index 5626d6f8e2..ef37136c2f 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ - [Privacy: technical details and limitations](#privacy-technical-details-and-limitations) - [For developers](#for-developers) - [Roadmap](#roadmap) +- [Contribute](#contribute) - [Help us with donations](#help-us-with-donations) - [Disclaimers, Security contact, License](#disclaimers) @@ -199,7 +200,15 @@ If you are considering developing with SimpleX platform please get in touch for - Channels server for large groups and broadcast channels. - Media server to optimize sending large files to groups. - Desktop client. -- Using the same profile on multiple devices. + +## Contribute + +We would love to have you join the development! You can contribute to SimpleX Chat with: + +- developing features - please connect to us via chat so we can help you get started. +- writing a tutorial or recipes about hosting servers, chat bot automations, etc. +- translate UI to some language - we are currently setting up the UI to simplify it, please get in touch and let us know if you would be able to support and update the translations. +- translate website homepage - there is a lot of content we would like to share, it would help to bring the new users. ## Help us with donations diff --git a/apps/ios/Shared/AppDelegate.swift b/apps/ios/Shared/AppDelegate.swift index b79d9bbbe3..268ebb1a75 100644 --- a/apps/ios/Shared/AppDelegate.swift +++ b/apps/ios/Shared/AppDelegate.swift @@ -102,9 +102,11 @@ class AppDelegate: NSObject, UIApplicationDelegate { class SceneDelegate: NSObject, ObservableObject, UIWindowSceneDelegate { var window: UIWindow? + var windowScene: UIWindowScene? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = scene as? UIWindowScene else { return } + self.windowScene = windowScene window = windowScene.keyWindow window?.tintColor = UIColor(cgColor: getUIAccentColorDefault()) window?.overrideUserInterfaceStyle = getUserInterfaceStyleDefault() diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index 6ef44c34b9..70eb263292 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -379,9 +379,13 @@ func apiConnect(connReq: String) async -> ConnReqType? { case .sentConfirmation: return .invitation case .sentInvitation: return .contact case let .contactAlreadyExists(contact): + let m = ChatModel.shared + if let c = m.getContactChat(contact.contactId) { + await MainActor.run { m.chatId = c.id } + } am.showAlertMsg( title: "Contact already exists", - message: "You are already connected to \(contact.displayName) via this link." + message: "You are already connected to \(contact.displayName)." ) return nil case .chatCmdError(.error(.invalidConnReq)): diff --git a/apps/ios/Shared/Views/UserSettings/SettingsView.swift b/apps/ios/Shared/Views/UserSettings/SettingsView.swift index c1081ce232..196bfa749c 100644 --- a/apps/ios/Shared/Views/UserSettings/SettingsView.swift +++ b/apps/ios/Shared/Views/UserSettings/SettingsView.swift @@ -7,6 +7,7 @@ // import SwiftUI +import StoreKit import SimpleXChat let simplexTeamURL = URL(string: "simplex:/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23MCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%3D")! @@ -70,6 +71,7 @@ func setGroupDefaults() { struct SettingsView: View { @Environment(\.colorScheme) var colorScheme @EnvironmentObject var chatModel: ChatModel + @EnvironmentObject var sceneDelegate: SceneDelegate @Binding var showSettings: Bool @AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false @State private var settingsSheet: SettingsSheet? @@ -179,36 +181,55 @@ struct SettingsView: View { settingsRow("textformat") { Text("Markdown in messages") } } settingsRow("number") { - Button { + Button("Send questions and ideas") { showSettings = false DispatchQueue.main.async { UIApplication.shared.open(simplexTeamURL) } - } label: { - Text("Chat with the developers") } } .disabled(chatModel.chatRunning != true) settingsRow("envelope") { Text("[Send us email](mailto:chat@simplex.chat)") } } - Section("Develop") { - NavigationLink { - TerminalView() - } label: { - settingsRow("terminal") { Text("Chat console") } - } - settingsRow("chevron.left.forwardslash.chevron.right") { - Toggle("Developer tools", isOn: $developerTools) + Section("Support SimpleX Chat") { + settingsRow("keyboard") { Text("[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)") } + settingsRow("star") { + Button("Rate the app") { + if let scene = sceneDelegate.windowScene { + SKStoreReviewController.requestReview(in: scene) + } + } } ZStack(alignment: .leading) { Image(colorScheme == .dark ? "github_light" : "github") .resizable() .frame(width: 24, height: 24) .opacity(0.5) - Text("Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)") + Text("[Star on GitHub](https://github.com/simplex-chat/simplex-chat)") .padding(.leading, indent) } + } + + Section("Develop") { + settingsRow("chevron.left.forwardslash.chevron.right") { + Toggle("Developer tools", isOn: $developerTools) + } + if developerTools { + NavigationLink { + TerminalView() + } label: { + settingsRow("terminal") { Text("Chat console") } + } + ZStack(alignment: .leading) { + Image(colorScheme == .dark ? "github_light" : "github") + .resizable() + .frame(width: 24, height: 24) + .opacity(0.5) + Text("Install [SimpleX Chat for terminal](https://github.com/simplex-chat/simplex-chat)") + .padding(.leading, indent) + } + } // NavigationLink { // ExperimentalFeaturesView() // .navigationTitle("Experimental features") 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 d6050f37a6..9fe0c3e57e 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -428,11 +428,6 @@ Der Chat ist beendet No comment provided by engineer. - - Chat with the developers - Chatten Sie mit den Entwicklern - No comment provided by engineer. - Chats Chats @@ -1888,6 +1883,11 @@ Wir werden Serverredundanzen hinzufügen, um verloren gegangene Nachrichten zu v Push-Benachrichtigungen No comment provided by engineer. + + Rate the app + *** Rate the app + No comment provided by engineer. + Read Lesen @@ -2103,6 +2103,11 @@ Wir werden Serverredundanzen hinzufügen, um verloren gegangene Nachrichten zu v Benachrichtigungen senden: No comment provided by engineer. + + Send questions and ideas + *** Send questions and ideas + No comment provided by engineer. + Sender cancelled file transfer. Der Absender hat die Dateiübertragung abgebrochen. @@ -2248,6 +2253,11 @@ Wir werden Serverredundanzen hinzufügen, um verloren gegangene Nachrichten zu v Chat beenden? No comment provided by engineer. + + Support SimpleX Chat + *** Support SimpleX Chat + No comment provided by engineer. + System System @@ -2617,9 +2627,9 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Sie haben die Verbindung akzeptiert No comment provided by engineer. - - You are already connected to %@ via this link. - Sie sind bereits über diesen Link mit %@ verbunden. + + You are already connected to %@. + Sie sind bereits mit %@ verbunden. No comment provided by engineer. @@ -2866,11 +2876,21 @@ SimpleX-Server können Ihr Profil nicht einsehen. Meine Einstellungen No comment provided by engineer. + + [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) + *** [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) + No comment provided by engineer. + [Send us email](mailto:chat@simplex.chat) [Senden Sie uns eine E-Mail](mailto:chat@simplex.chat) No comment provided by engineer. + + [Star on GitHub](https://github.com/simplex-chat/simplex-chat) + *** [Star on GitHub](https://github.com/simplex-chat/simplex-chat) + No comment provided by engineer. + \_italic_ \_kursiv_ 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 418bacb70e..1c20d8e047 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -428,11 +428,6 @@ Chat is stopped No comment provided by engineer. - - Chat with the developers - Chat with the developers - No comment provided by engineer. - Chats Chats @@ -1888,6 +1883,11 @@ We will be adding server redundancy to prevent lost messages. Push notifications No comment provided by engineer. + + Rate the app + Rate the app + No comment provided by engineer. + Read Read @@ -2103,6 +2103,11 @@ We will be adding server redundancy to prevent lost messages. Send notifications: No comment provided by engineer. + + Send questions and ideas + Send questions and ideas + No comment provided by engineer. + Sender cancelled file transfer. Sender cancelled file transfer. @@ -2248,6 +2253,11 @@ We will be adding server redundancy to prevent lost messages. Stop chat? No comment provided by engineer. + + Support SimpleX Chat + Support SimpleX Chat + No comment provided by engineer. + System System @@ -2617,9 +2627,9 @@ To connect, please ask your contact to create another connection link and check You accepted connection No comment provided by engineer. - - You are already connected to %@ via this link. - You are already connected to %@ via this link. + + You are already connected to %@. + You are already connected to %@. No comment provided by engineer. @@ -2866,11 +2876,21 @@ SimpleX servers cannot see your profile. Your settings No comment provided by engineer. + + [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) + [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) + No comment provided by engineer. + [Send us email](mailto:chat@simplex.chat) [Send us email](mailto:chat@simplex.chat) No comment provided by engineer. + + [Star on GitHub](https://github.com/simplex-chat/simplex-chat) + [Star on GitHub](https://github.com/simplex-chat/simplex-chat) + No comment provided by engineer. + \_italic_ \_italic_ 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 a8564bc618..711c67fc54 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -428,11 +428,6 @@ Чат остановлен No comment provided by engineer. - - Chat with the developers - Соединиться с разработчиками - No comment provided by engineer. - Chats Чаты @@ -1888,6 +1883,11 @@ We will be adding server redundancy to prevent lost messages. Доставка уведомлений No comment provided by engineer. + + Rate the app + Оценить приложение + No comment provided by engineer. + Read Прочитано @@ -2103,6 +2103,11 @@ We will be adding server redundancy to prevent lost messages. Отправлять уведомления: No comment provided by engineer. + + Send questions and ideas + Отправьте вопросы и идеи + No comment provided by engineer. + Sender cancelled file transfer. Отправитель отменил передачу файла. @@ -2248,6 +2253,11 @@ We will be adding server redundancy to prevent lost messages. Остановить чат? No comment provided by engineer. + + Support SimpleX Chat + Поддержать SimpleX Chat + No comment provided by engineer. + System Системная @@ -2617,9 +2627,9 @@ To connect, please ask your contact to create another connection link and check Вы приняли приглашение соединиться No comment provided by engineer. - - You are already connected to %@ via this link. - Вы уже соединены с %@ через эту ссылку. + + You are already connected to %@. + Вы уже соединены с контактом %@. No comment provided by engineer. @@ -2866,11 +2876,21 @@ SimpleX серверы не могут получить доступ к ваше Настройки No comment provided by engineer. + + [Contribute](https://github.com/simplex-chat/simplex-chat#contribute) + [Внести свой вклад](https://github.com/simplex-chat/simplex-chat#contribute) + No comment provided by engineer. + [Send us email](mailto:chat@simplex.chat) [Отправить email](mailto:chat@simplex.chat) No comment provided by engineer. + + [Star on GitHub](https://github.com/simplex-chat/simplex-chat) + [Поставить звездочку в GitHub](https://github.com/simplex-chat/simplex-chat) + No comment provided by engineer. + \_italic_ \_курсив_ diff --git a/apps/ios/SimpleX.xcodeproj/xcshareddata/xcschemes/SimpleX (iOS).xcscheme b/apps/ios/SimpleX.xcodeproj/xcshareddata/xcschemes/SimpleX (iOS).xcscheme index 6a1d4192e6..9be28f4ca2 100644 --- a/apps/ios/SimpleX.xcodeproj/xcshareddata/xcschemes/SimpleX (iOS).xcscheme +++ b/apps/ios/SimpleX.xcodeproj/xcshareddata/xcschemes/SimpleX (iOS).xcscheme @@ -44,6 +44,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + enableUBSanitizer = "YES" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 84522ed34a..73a6f62b07 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -28,9 +28,15 @@ /* No comment provided by engineer. */ ")" = ")"; +/* No comment provided by engineer. */ +"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "*** [Contribute](https://github.com/simplex-chat/simplex-chat#contribute)"; + /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Senden Sie uns eine E-Mail](mailto:chat@simplex.chat)"; +/* No comment provided by engineer. */ +"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "*** [Star on GitHub](https://github.com/simplex-chat/simplex-chat)"; + /* No comment provided by engineer. */ "**Add new contact**: to create your one-time QR Code for your contact." = "**Fügen Sie einen neuen Kontakt hinzu**: Erzeugen Sie einen Einmal-QR-Code oder -Link für Ihren Kontakt."; @@ -308,9 +314,6 @@ /* No comment provided by engineer. */ "Chat is stopped" = "Der Chat ist beendet"; -/* No comment provided by engineer. */ -"Chat with the developers" = "Chatten Sie mit den Entwicklern"; - /* No comment provided by engineer. */ "Chats" = "Chats"; @@ -1322,6 +1325,9 @@ /* No comment provided by engineer. */ "Push notifications" = "Push-Benachrichtigungen"; +/* No comment provided by engineer. */ +"Rate the app" = "*** Rate the app"; + /* No comment provided by engineer. */ "Read" = "Lesen"; @@ -1469,6 +1475,9 @@ /* No comment provided by engineer. */ "Send notifications:" = "Benachrichtigungen senden:"; +/* No comment provided by engineer. */ +"Send questions and ideas" = "*** Send questions and ideas"; + /* No comment provided by engineer. */ "Sender cancelled file transfer." = "Der Absender hat die Dateiübertragung abgebrochen."; @@ -1568,6 +1577,9 @@ /* No comment provided by engineer. */ "strike" = "durchstreichen"; +/* No comment provided by engineer. */ +"Support SimpleX Chat" = "*** Support SimpleX Chat"; + /* No comment provided by engineer. */ "System" = "System"; @@ -1824,7 +1836,7 @@ "You accepted connection" = "Sie haben die Verbindung akzeptiert"; /* No comment provided by engineer. */ -"You are already connected to %@ via this link." = "Sie sind bereits über diesen Link mit %@ verbunden."; +"You are already connected to %@." = "Sie sind bereits mit %@ verbunden."; /* No comment provided by engineer. */ "You are connected to the server used to receive messages from this contact." = "Sie sind mit dem Server verbunden, der für den Empfang von Nachrichten mit diesem Kontakt genutzt wird."; diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index ef2540dea4..dba6dd8577 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -28,9 +28,15 @@ /* No comment provided by engineer. */ ")" = ")"; +/* No comment provided by engineer. */ +"[Contribute](https://github.com/simplex-chat/simplex-chat#contribute)" = "[Внести свой вклад](https://github.com/simplex-chat/simplex-chat#contribute)"; + /* No comment provided by engineer. */ "[Send us email](mailto:chat@simplex.chat)" = "[Отправить email](mailto:chat@simplex.chat)"; +/* No comment provided by engineer. */ +"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Поставить звездочку в GitHub](https://github.com/simplex-chat/simplex-chat)"; + /* No comment provided by engineer. */ "**Add new contact**: to create your one-time QR Code for your contact." = "**Добавить новый контакт**: чтобы создать одноразовый QR код или ссылку для вашего контакта."; @@ -308,9 +314,6 @@ /* No comment provided by engineer. */ "Chat is stopped" = "Чат остановлен"; -/* No comment provided by engineer. */ -"Chat with the developers" = "Соединиться с разработчиками"; - /* No comment provided by engineer. */ "Chats" = "Чаты"; @@ -1322,6 +1325,9 @@ /* No comment provided by engineer. */ "Push notifications" = "Доставка уведомлений"; +/* No comment provided by engineer. */ +"Rate the app" = "Оценить приложение"; + /* No comment provided by engineer. */ "Read" = "Прочитано"; @@ -1469,6 +1475,9 @@ /* No comment provided by engineer. */ "Send notifications:" = "Отправлять уведомления:"; +/* No comment provided by engineer. */ +"Send questions and ideas" = "Отправьте вопросы и идеи"; + /* No comment provided by engineer. */ "Sender cancelled file transfer." = "Отправитель отменил передачу файла."; @@ -1568,6 +1577,9 @@ /* No comment provided by engineer. */ "strike" = "зачеркнуть"; +/* No comment provided by engineer. */ +"Support SimpleX Chat" = "Поддержать SimpleX Chat"; + /* No comment provided by engineer. */ "System" = "Системная"; @@ -1824,7 +1836,7 @@ "You accepted connection" = "Вы приняли приглашение соединиться"; /* No comment provided by engineer. */ -"You are already connected to %@ via this link." = "Вы уже соединены с %@ через эту ссылку."; +"You are already connected to %@." = "Вы уже соединены с контактом %@."; /* No comment provided by engineer. */ "You are connected to the server used to receive messages from this contact." = "Установлено соединение с сервером, через который вы получаете сообщения от этого контакта.";