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 beendetNo comment provided by engineer.
-
- Chat with the developers
- Chatten Sie mit den Entwicklern
- No comment provided by engineer.
- ChatsChats
@@ -1888,6 +1883,11 @@ Wir werden Serverredundanzen hinzufügen, um verloren gegangene Nachrichten zu v
Push-BenachrichtigungenNo comment provided by engineer.
+
+ Rate the app
+ *** Rate the app
+ No comment provided by engineer.
+ ReadLesen
@@ -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.
+ SystemSystem
@@ -2617,9 +2627,9 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
Sie haben die Verbindung akzeptiertNo 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 EinstellungenNo 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 stoppedNo comment provided by engineer.
-
- Chat with the developers
- Chat with the developers
- No comment provided by engineer.
- ChatsChats
@@ -1888,6 +1883,11 @@ We will be adding server redundancy to prevent lost messages.
Push notificationsNo comment provided by engineer.
+
+ Rate the app
+ Rate the app
+ No comment provided by engineer.
+ ReadRead
@@ -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.
+ SystemSystem
@@ -2617,9 +2627,9 @@ To connect, please ask your contact to create another connection link and check
You accepted connectionNo 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 settingsNo 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." = "Установлено соединение с сервером, через который вы получаете сообщения от этого контакта.";