From 800efb3a34a13c20718a8489cae6f9d87193ec8b Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Fri, 3 Jun 2022 09:16:07 +0100 Subject: [PATCH 01/14] ios: fix authentication (#722) * ios: fix authentication * Update apps/ios/Shared/ContentView.swift Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com> * remove doAuthenticate = false * remove lock button * moare fixos * whitespace * and more Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com> --- apps/ios/Shared/ContentView.swift | 31 +++++-------------------------- apps/ios/Shared/SimpleXApp.swift | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 30 deletions(-) diff --git a/apps/ios/Shared/ContentView.swift b/apps/ios/Shared/ContentView.swift index bb5ab76aa..6a4f6ddcc 100644 --- a/apps/ios/Shared/ContentView.swift +++ b/apps/ios/Shared/ContentView.swift @@ -12,16 +12,16 @@ struct ContentView: View { @ObservedObject var alertManager = AlertManager.shared @ObservedObject var callController = CallController.shared @Binding var doAuthenticate: Bool - @Binding var enteredBackground: Double? @State private var userAuthorized: Bool? - @State private var laFailed: Bool = false @AppStorage(DEFAULT_SHOW_LA_NOTICE) private var prefShowLANotice = false @AppStorage(DEFAULT_LA_NOTICE_SHOWN) private var prefLANoticeShown = false @AppStorage(DEFAULT_PERFORM_LA) private var prefPerformLA = false var body: some View { ZStack { - if userAuthorized == true { + if prefPerformLA && userAuthorized != true { + Button(action: runAuthenticate) { Label("Unlock", systemImage: "lock") } + } else { if let step = chatModel.onboardingStage { if case .onboardingComplete = step, let user = chatModel.currentUser { @@ -47,25 +47,13 @@ struct ContentView: View { OnboardingView(onboarding: step) } } - } else if prefPerformLA && laFailed { - retryAuthView() - } - } - .onChange(of: doAuthenticate) { doAuth in - if doAuth, authenticationExpired() { - runAuthenticate() } } + .onAppear { if doAuthenticate { runAuthenticate() } } + .onChange(of: doAuthenticate) { _ in if doAuthenticate { runAuthenticate() } } .alert(isPresented: $alertManager.presentAlert) { alertManager.alertView! } } - private func retryAuthView() -> some View { - Button { - laFailed = false - runAuthenticate() - } label: { Label("Retry", systemImage: "arrow.counterclockwise") } - } - private func runAuthenticate() { if !prefPerformLA { userAuthorized = true @@ -78,7 +66,6 @@ struct ContentView: View { case .success: userAuthorized = true case .failed: - laFailed = true AlertManager.shared.showAlert(laFailedAlert()) case .unavailable: userAuthorized = true @@ -90,14 +77,6 @@ struct ContentView: View { } } - private func authenticationExpired() -> Bool { - if let enteredBackground = enteredBackground { - return ProcessInfo.processInfo.systemUptime - enteredBackground >= 30 - } else { - return true - } - } - func laNoticeAlert() -> Alert { Alert( title: Text("SimpleX Lock"), diff --git a/apps/ios/Shared/SimpleXApp.swift b/apps/ios/Shared/SimpleXApp.swift index e1a54748b..0aad18a3e 100644 --- a/apps/ios/Shared/SimpleXApp.swift +++ b/apps/ios/Shared/SimpleXApp.swift @@ -17,8 +17,8 @@ struct SimpleXApp: App { @ObservedObject var alertManager = AlertManager.shared @Environment(\.scenePhase) var scenePhase @AppStorage(DEFAULT_PERFORM_LA) private var prefPerformLA = false - @State private var userAuthorized: Bool? = nil - @State private var doAuthenticate: Bool = false + @State private var userAuthorized: Bool? + @State private var doAuthenticate = false @State private var enteredBackground: Double? = nil init() { @@ -30,7 +30,7 @@ struct SimpleXApp: App { var body: some Scene { return WindowGroup { - ContentView(doAuthenticate: $doAuthenticate, enteredBackground: $enteredBackground) + ContentView(doAuthenticate: $doAuthenticate) .environmentObject(chatModel) .onOpenURL { url in logger.debug("ContentView.onOpenURL: \(url)") @@ -48,11 +48,19 @@ struct SimpleXApp: App { doAuthenticate = false enteredBackground = ProcessInfo.processInfo.systemUptime case .active: - doAuthenticate = true + doAuthenticate = authenticationExpired() default: break } } } } + + private func authenticationExpired() -> Bool { + if let enteredBackground = enteredBackground { + return ProcessInfo.processInfo.systemUptime - enteredBackground >= 30 + } else { + return true + } + } } From 3b708105a42d13192e51d8a4f9265ac2a66ca825 Mon Sep 17 00:00:00 2001 From: JRoberts <8711996+jr-simplex@users.noreply.github.com> Date: Fri, 3 Jun 2022 13:19:41 +0400 Subject: [PATCH 02/14] ios: fix modal views not closing (#723) --- apps/ios/Shared/ContentView.swift | 31 +++++++++---------- apps/ios/Shared/Model/ChatModel.swift | 1 - apps/ios/Shared/Views/Chat/ChatInfoView.swift | 7 +++-- apps/ios/Shared/Views/Chat/ChatView.swift | 10 +++--- .../Views/ChatList/ChatListNavLink.swift | 10 +++--- .../Shared/Views/ChatList/ChatListView.swift | 10 +++--- 6 files changed, 36 insertions(+), 33 deletions(-) diff --git a/apps/ios/Shared/ContentView.swift b/apps/ios/Shared/ContentView.swift index 6a4f6ddcc..9206d44d1 100644 --- a/apps/ios/Shared/ContentView.swift +++ b/apps/ios/Shared/ContentView.swift @@ -13,6 +13,7 @@ struct ContentView: View { @ObservedObject var callController = CallController.shared @Binding var doAuthenticate: Bool @State private var userAuthorized: Bool? + @State private var showChatInfo: Bool = false // TODO comprehensively close modal views on authentication @AppStorage(DEFAULT_SHOW_LA_NOTICE) private var prefShowLANotice = false @AppStorage(DEFAULT_LA_NOTICE_SHOWN) private var prefLANoticeShown = false @AppStorage(DEFAULT_PERFORM_LA) private var prefPerformLA = false @@ -24,9 +25,9 @@ struct ContentView: View { } else { if let step = chatModel.onboardingStage { if case .onboardingComplete = step, - let user = chatModel.currentUser { + chatModel.currentUser != nil { ZStack(alignment: .top) { - ChatListView(user: user) + ChatListView(showChatInfo: $showChatInfo) .onAppear { NtfManager.shared.requestAuthorization(onDeny: { alertManager.showAlert(notificationAlert()) @@ -58,20 +59,18 @@ struct ContentView: View { if !prefPerformLA { userAuthorized = true } else { - chatModel.showChatInfo = false - DispatchQueue.main.async() { - userAuthorized = false - authenticate(reason: NSLocalizedString("Unlock", comment: "authentication reason")) { laResult in - switch (laResult) { - case .success: - userAuthorized = true - case .failed: - AlertManager.shared.showAlert(laFailedAlert()) - case .unavailable: - userAuthorized = true - prefPerformLA = false - AlertManager.shared.showAlert(laUnavailableTurningOffAlert()) - } + showChatInfo = false + userAuthorized = false + authenticate(reason: NSLocalizedString("Unlock", comment: "authentication reason")) { laResult in + switch (laResult) { + case .success: + userAuthorized = true + case .failed: + AlertManager.shared.showAlert(laFailedAlert()) + case .unavailable: + userAuthorized = true + prefPerformLA = false + AlertManager.shared.showAlert(laUnavailableTurningOffAlert()) } } } diff --git a/apps/ios/Shared/Model/ChatModel.swift b/apps/ios/Shared/Model/ChatModel.swift index ebb3f6731..4d4ae6ad9 100644 --- a/apps/ios/Shared/Model/ChatModel.swift +++ b/apps/ios/Shared/Model/ChatModel.swift @@ -14,7 +14,6 @@ import WebKit final class ChatModel: ObservableObject { @Published var onboardingStage: OnboardingStage? @Published var currentUser: User? - @Published var showChatInfo: Bool = false // TODO comprehensively close modal views on authentication // list of chat "previews" @Published var chats: [Chat] = [] // current chat diff --git a/apps/ios/Shared/Views/Chat/ChatInfoView.swift b/apps/ios/Shared/Views/Chat/ChatInfoView.swift index 18e253b89..b7bd7ef58 100644 --- a/apps/ios/Shared/Views/Chat/ChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatInfoView.swift @@ -12,6 +12,7 @@ struct ChatInfoView: View { @EnvironmentObject var chatModel: ChatModel @ObservedObject var alertManager = AlertManager.shared @ObservedObject var chat: Chat + @Binding var showChatInfo: Bool @State var alert: ChatInfoViewAlert? = nil @State var deletingContact: Contact? @@ -98,7 +99,7 @@ struct ChatInfoView: View { try await apiDeleteChat(type: .direct, id: contact.apiId) DispatchQueue.main.async { chatModel.removeChat(contact.id) - chatModel.showChatInfo = false + showChatInfo = false } } catch let error { logger.error("ChatInfoView.deleteContactAlert apiDeleteChat error: \(error.localizedDescription)") @@ -117,7 +118,7 @@ struct ChatInfoView: View { Task { await clearChat(chat) DispatchQueue.main.async { - chatModel.showChatInfo = false + showChatInfo = false } } }, @@ -129,6 +130,6 @@ struct ChatInfoView: View { struct ChatInfoView_Previews: PreviewProvider { static var previews: some View { @State var showChatInfo = true - return ChatInfoView(chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: [])) + return ChatInfoView(chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: []), showChatInfo: $showChatInfo) } } diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index b93252b53..12aa30a50 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -15,6 +15,7 @@ struct ChatView: View { @Environment(\.colorScheme) var colorScheme @AppStorage(DEFAULT_EXPERIMENTAL_CALLS) private var enableCalls = false @ObservedObject var chat: Chat + @Binding var showChatInfo: Bool @State private var composeState = ComposeState() @State private var deletingItem: ChatItem? = nil @FocusState private var keyboardVisible: Bool @@ -97,12 +98,12 @@ struct ChatView: View { } ToolbarItem(placement: .principal) { Button { - chatModel.showChatInfo = true + showChatInfo = true } label: { ChatInfoToolbar(chat: chat) } - .sheet(isPresented: $chatModel.showChatInfo) { - ChatInfoView(chat: chat) + .sheet(isPresented: $showChatInfo) { + ChatInfoView(chat: chat, showChatInfo: $showChatInfo) } } ToolbarItem(placement: .navigationBarTrailing) { @@ -269,7 +270,8 @@ struct ChatView_Previews: PreviewProvider { ChatItem.getSample(8, .directSnd, .now, "👍👍👍👍"), ChatItem.getSample(9, .directSnd, .now, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.") ] - return ChatView(chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: [])) + @State var showChatInfo = false + return ChatView(chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: []), showChatInfo: $showChatInfo) .environmentObject(chatModel) } } diff --git a/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift b/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift index f23d29583..c8344980f 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift @@ -11,6 +11,7 @@ import SwiftUI struct ChatListNavLink: View { @EnvironmentObject var chatModel: ChatModel @State var chat: Chat + @Binding var showChatInfo: Bool @State private var showContactRequestDialog = false var body: some View { @@ -27,7 +28,7 @@ struct ChatListNavLink: View { } private func chatView() -> some View { - ChatView(chat: chat) + ChatView(chat: chat, showChatInfo: $showChatInfo) .onAppear { do { let cInfo = chat.chatInfo @@ -278,19 +279,20 @@ struct ChatListNavLink: View { struct ChatListNavLink_Previews: PreviewProvider { static var previews: some View { @State var chatId: String? = "@1" + @State var showChatInfo = false return Group { ChatListNavLink(chat: Chat( chatInfo: ChatInfo.sampleData.direct, chatItems: [ChatItem.getSample(1, .directSnd, .now, "hello")] - )) + ), showChatInfo: $showChatInfo) ChatListNavLink(chat: Chat( chatInfo: ChatInfo.sampleData.direct, chatItems: [ChatItem.getSample(1, .directSnd, .now, "hello")] - )) + ), showChatInfo: $showChatInfo) ChatListNavLink(chat: Chat( chatInfo: ChatInfo.sampleData.contactRequest, chatItems: [] - )) + ), showChatInfo: $showChatInfo) } .previewLayout(.fixed(width: 360, height: 80)) } diff --git a/apps/ios/Shared/Views/ChatList/ChatListView.swift b/apps/ios/Shared/Views/ChatList/ChatListView.swift index 746763583..33078d210 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListView.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListView.swift @@ -10,18 +10,17 @@ import SwiftUI struct ChatListView: View { @EnvironmentObject var chatModel: ChatModel + @Binding var showChatInfo: Bool // not really used in this view @State private var showSettings = false @State private var searchText = "" @AppStorage(DEFAULT_PENDING_CONNECTIONS) private var pendingConnections = true - var user: User - var body: some View { let v = NavigationView { List { ForEach(filteredChats()) { chat in - ChatListNavLink(chat: chat) + ChatListNavLink(chat: chat, showChatInfo: $showChatInfo) .padding(.trailing, -16) } } @@ -92,10 +91,11 @@ struct ChatListView_Previews: PreviewProvider { ) ] + @State var showChatInfo = false return Group { - ChatListView(user: User.sampleData) + ChatListView(showChatInfo: $showChatInfo) .environmentObject(chatModel) - ChatListView(user: User.sampleData) + ChatListView(showChatInfo: $showChatInfo) .environmentObject(ChatModel()) } } From 72103949a743bdb47b73a1fdc90bc937fc426bc1 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Fri, 3 Jun 2022 12:24:50 +0100 Subject: [PATCH 03/14] ios: fix purple warning on auth failure (#724) * ios: fix purple warning on auth failure * avoid showing chats * avoid flicker * fix exit * bg task * rename function * remove bg task --- apps/ios/Shared/ContentView.swift | 35 ++++++++++++++++++------------- apps/ios/Shared/SimpleXApp.swift | 8 +++++-- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/apps/ios/Shared/ContentView.swift b/apps/ios/Shared/ContentView.swift index 9206d44d1..6af294778 100644 --- a/apps/ios/Shared/ContentView.swift +++ b/apps/ios/Shared/ContentView.swift @@ -12,7 +12,7 @@ struct ContentView: View { @ObservedObject var alertManager = AlertManager.shared @ObservedObject var callController = CallController.shared @Binding var doAuthenticate: Bool - @State private var userAuthorized: Bool? + @Binding var userAuthorized: Bool? @State private var showChatInfo: Bool = false // TODO comprehensively close modal views on authentication @AppStorage(DEFAULT_SHOW_LA_NOTICE) private var prefShowLANotice = false @AppStorage(DEFAULT_LA_NOTICE_SHOWN) private var prefLANoticeShown = false @@ -58,20 +58,27 @@ struct ContentView: View { private func runAuthenticate() { if !prefPerformLA { userAuthorized = true - } else { + } else if showChatInfo { showChatInfo = false - userAuthorized = false - authenticate(reason: NSLocalizedString("Unlock", comment: "authentication reason")) { laResult in - switch (laResult) { - case .success: - userAuthorized = true - case .failed: - AlertManager.shared.showAlert(laFailedAlert()) - case .unavailable: - userAuthorized = true - prefPerformLA = false - AlertManager.shared.showAlert(laUnavailableTurningOffAlert()) - } + DispatchQueue.main.async { + justAuthenticate() + } + } else { + justAuthenticate() + } + } + + private func justAuthenticate() { + authenticate(reason: NSLocalizedString("Unlock", comment: "authentication reason")) { laResult in + switch (laResult) { + case .success: + userAuthorized = true + case .failed: + AlertManager.shared.showAlert(laFailedAlert()) + case .unavailable: + userAuthorized = true + prefPerformLA = false + AlertManager.shared.showAlert(laUnavailableTurningOffAlert()) } } } diff --git a/apps/ios/Shared/SimpleXApp.swift b/apps/ios/Shared/SimpleXApp.swift index 0aad18a3e..730e0cecc 100644 --- a/apps/ios/Shared/SimpleXApp.swift +++ b/apps/ios/Shared/SimpleXApp.swift @@ -30,7 +30,7 @@ struct SimpleXApp: App { var body: some Scene { return WindowGroup { - ContentView(doAuthenticate: $doAuthenticate) + ContentView(doAuthenticate: $doAuthenticate, userAuthorized: $userAuthorized) .environmentObject(chatModel) .onOpenURL { url in logger.debug("ContentView.onOpenURL: \(url)") @@ -45,10 +45,14 @@ struct SimpleXApp: App { switch (phase) { case .background: BGManager.shared.schedule() + if userAuthorized == true { + enteredBackground = ProcessInfo.processInfo.systemUptime + } doAuthenticate = false - enteredBackground = ProcessInfo.processInfo.systemUptime + userAuthorized = false case .active: doAuthenticate = authenticationExpired() + if !doAuthenticate { userAuthorized = true } default: break } From 47ec4862016b4601a08b65d2aab11133003738e3 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Fri, 3 Jun 2022 12:46:11 +0100 Subject: [PATCH 04/14] update version v2.2.1 (52) --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 7727b7f39..12221f85a 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -966,7 +966,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 51; + CURRENT_PROJECT_VERSION = 52; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -989,7 +989,7 @@ ); "LIBRARY_SEARCH_PATHS[sdk=iphoneos*]" = "$(PROJECT_DIR)/Libraries/ios"; "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*]" = "$(PROJECT_DIR)/Libraries/sim"; - MARKETING_VERSION = 2.2; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app; PRODUCT_NAME = SimpleX; SDKROOT = iphoneos; @@ -1009,7 +1009,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 51; + CURRENT_PROJECT_VERSION = 52; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -1032,7 +1032,7 @@ ); "LIBRARY_SEARCH_PATHS[sdk=iphoneos*]" = "$(PROJECT_DIR)/Libraries/ios"; "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*]" = "$(PROJECT_DIR)/Libraries/sim"; - MARKETING_VERSION = 2.2; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app; PRODUCT_NAME = SimpleX; SDKROOT = iphoneos; @@ -1091,7 +1091,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 51; + CURRENT_PROJECT_VERSION = 52; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1112,7 +1112,7 @@ "$(inherited)", "$(PROJECT_DIR)/Libraries/sim", ); - MARKETING_VERSION = 2.2; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -1131,7 +1131,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 51; + CURRENT_PROJECT_VERSION = 52; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1152,7 +1152,7 @@ "$(inherited)", "$(PROJECT_DIR)/Libraries/sim", ); - MARKETING_VERSION = 2.2; + MARKETING_VERSION = 2.2.1; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; From 084d1d09a549c84a6f81ee02e319a97542fb29df Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Fri, 3 Jun 2022 13:05:34 +0100 Subject: [PATCH 05/14] ios: fix closing chat info (#725) --- apps/ios/Shared/ContentView.swift | 1 + apps/ios/Shared/SimpleXApp.swift | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/ios/Shared/ContentView.swift b/apps/ios/Shared/ContentView.swift index 6af294778..e1e3b808b 100644 --- a/apps/ios/Shared/ContentView.swift +++ b/apps/ios/Shared/ContentView.swift @@ -69,6 +69,7 @@ struct ContentView: View { } private func justAuthenticate() { + userAuthorized = false authenticate(reason: NSLocalizedString("Unlock", comment: "authentication reason")) { laResult in switch (laResult) { case .success: diff --git a/apps/ios/Shared/SimpleXApp.swift b/apps/ios/Shared/SimpleXApp.swift index 730e0cecc..f6e5b23c4 100644 --- a/apps/ios/Shared/SimpleXApp.swift +++ b/apps/ios/Shared/SimpleXApp.swift @@ -49,10 +49,8 @@ struct SimpleXApp: App { enteredBackground = ProcessInfo.processInfo.systemUptime } doAuthenticate = false - userAuthorized = false case .active: doAuthenticate = authenticationExpired() - if !doAuthenticate { userAuthorized = true } default: break } From 935c3987b3f49f6f1d8a6a02f6e2e1a6314280ac Mon Sep 17 00:00:00 2001 From: JRoberts <8711996+jr-simplex@users.noreply.github.com> Date: Fri, 3 Jun 2022 16:18:34 +0400 Subject: [PATCH 06/14] update version v2.2.1 (53) --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 12221f85a..27c9e9c79 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -966,7 +966,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 52; + CURRENT_PROJECT_VERSION = 53; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -1009,7 +1009,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 52; + CURRENT_PROJECT_VERSION = 53; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -1091,7 +1091,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 52; + CURRENT_PROJECT_VERSION = 53; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1131,7 +1131,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 52; + CURRENT_PROJECT_VERSION = 53; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; From b0f3d59cb0dfbc9a53e6dea8569b765401e46594 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Sat, 4 Jun 2022 14:37:41 +0100 Subject: [PATCH 07/14] blog: v2.2 release (#728) * blog: v2.2 release * update readme * update roadmap --- README.md | 13 +++-- ...plex-chat-new-privacy-security-settings.md | 46 ++++++++++++++++++ blog/README.md | 6 ++- blog/images/20220604-privacy-settings.png | Bin 0 -> 398479 bytes 4 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 blog/20220604-simplex-chat-new-privacy-security-settings.md create mode 100644 blog/images/20220604-privacy-settings.png diff --git a/README.md b/README.md index 26ac590d6..d4e6f3e84 100644 --- a/README.md +++ b/README.md @@ -63,12 +63,14 @@ If you are considering developing with SimpleX platform please get in touch for ## News and updates +[Jun 4, 2022. v2.2: the new Privacy and Security settings](./20220604-simplex-chat-new-privacy-security-settings.md) + [May 11, 2022. v2.0 released - sending images and files in mobile apps](./blog/20220511-simplex-chat-v2-images-files.md) -[Apr 04, 2022. Instant notifications for SimpleX Chat mobile apps](./blog/20220404-simplex-chat-instant-notifications.md) - [Mar 08, 2022 Mobile apps for iOS and Android released](./blog/20220308-simplex-chat-mobile-apps.md) +[Jan 12, 2022. SimpleX v1 released: the only messaging and application platform without user identities](./20220112-simplex-chat-v1-released.md) + [All updates](./blog) ## Make a private connection @@ -113,12 +115,13 @@ See [SimpleX whitepaper](https://github.com/simplex-chat/simplexmq/blob/master/p - ✅ Private instant notifications for Android using background service. - ✅ Haskell chat bot templates. - ✅ v2.0 - supporting images and files in mobile apps. -- 🏗 End-to-end encrypted audio and video calls via the mobile apps. -- 🏗 Automatic chat history deletion. +- ✅ Manual chat history deletion. +- 🚀 End-to-end encrypted audio and video calls via the mobile apps (enable via Experimental Features). - 🏗 Privacy preserving instant notifications for iOS using Apple Push Notification service (in progress). - 🏗 Chat server and TypeScript client SDK to develop chat interfaces, integrations and chat bots (in progress). +- 🏗 Chat database portability and encryption. - Groups support for mobile apps. -- Chat database portability and encryption. +- Disappearing messages, with mutual agreement. - Web widgets for custom interactivity in the chats. - SMP protocol improvements: - SMP queue redundancy and rotation. diff --git a/blog/20220604-simplex-chat-new-privacy-security-settings.md b/blog/20220604-simplex-chat-new-privacy-security-settings.md new file mode 100644 index 000000000..6e40badb8 --- /dev/null +++ b/blog/20220604-simplex-chat-new-privacy-security-settings.md @@ -0,0 +1,46 @@ +# SimpleX Chat v2.2 - the first messaging platform without user identities - 100% private by design! + +**Published:** June 4, 2022 + +See [v2 announcement](./20220511-simplex-chat-v2-images-files.md) for more information about SimpleX platform and how it protects your privacy by avoiding user identities of any kind in its design - SimpleX, unlike any other messaging platfom, has no identity keys or any numbers that identify its users. + +## New Privacy and Security settings in version 2.2 + + + +### Protect your chats + +To protect your chats you can enable SimpleX Lock. Every time you open the chat after it was in the background for 30 second, you will need to pass biometric or pin code authentication to use the app (provided it is enabled for your device). + +### Save data and avoid sharing you are online + +In case you want to save your mobile data or to avoid showing to your contacts that you are online, you can disable automatic image downloads. For many users it is more convenient to have images downloaded automatically, so it is enabled by default. + +Low resolution image previews would still be shown, the senders have no way to see if you received them or not. + +### Avoid visiting websites of the links you send + +When you receive the links that include link previews, it is fully private - these previews are generated by the sender, and they do not expose your IP address in any way. + +When you send the links, the app automatically downloads the link description and the picture from the website of the link. While it is convenient, it exposes your IP address to the website. To avoid it you can disable sending link previews. + +### Identify any lost messages in the chat + +The app tracks the integrity of the messages you receive by cheching their sequential numbers and by validating that the hash of the previous message matches the hash included in the message – each conversation, effectively, is two blockchains that only you and your contact have access to. + +In case some of the messages are lost, you would see it in the chat. It can happen because of one the following reasons: + +- the messages have expired on the server after 30 days not being delivered. +- the messages were removed when the server was restarted. We will add server redundancy later this year to avoid message loss in this case, for now if you see an indication that some messages were lost in the chat, you can check with your contact what it was. +- some other app error. Please notify us via chat - we will investigate possible root causes. +- the connection is compromised. This is very unlikely, but not an impossible scenario. + +### There is more + +You can discover additional features we are currently testing in Experimental Features - they will be announced later! + +## More information + +See [v1 announcement](./20220112-simplex-chat-v1-released.md) for information on how SimpleX protects the security of the messages. + +Read about SimpleX design in [whitepaper](https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md). diff --git a/blog/README.md b/blog/README.md index 75ea1fcc2..0c45d0dc0 100644 --- a/blog/README.md +++ b/blog/README.md @@ -1,8 +1,10 @@ # Blog -May 24, 2022 [Clearing messages for better conversation privacy](./20220524-simplex-chat-better-privacy.md) +Jun 4, 2022 [v2.2: the new Privacy and Security settings](./20220604-simplex-chat-new-privacy-security-settings.md) -May 11, 2022 [Sending images and files in mobile apps](./20220511-simplex-chat-v2-images-files.md) +May 24, 2022 [v2.1: clearing messages for better conversation privacy](./20220524-simplex-chat-better-privacy.md) + +May 11, 2022 [v2.0 released - sending images and files in mobile apps](./20220511-simplex-chat-v2-images-files.md) Apr 04, 2022 [Instant notifications for SimpleX Chat mobile apps](./20220404-simplex-chat-instant-notifications.md) diff --git a/blog/images/20220604-privacy-settings.png b/blog/images/20220604-privacy-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..60928ff0d7ef2c602dc92672bd4980fea9305cb4 GIT binary patch literal 398479 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�k;Maod0HB&m^k1fP2WY;N<|zC4!n{?%Y0&-1wB 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
|c1RFvuI5hf038-Zzw@)x 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%0A^S0ty1C> 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�h zD3TV_k(8pY$@`0b*Cev3{PlFIQbg-I@@+f?E7fH)?a#Wk((#rI!jmJyvS15Jho-@e=-J9%9<*h|8# z=8SNz+uQR@+1tH+^8^{dz2Ex4w;QMPELXPK%kK4qn!SbtD>dzA_gFPPP|~LLGJJ9J z=;#EXz^JLFb`6&tV(&1b96qqFTj;!Wr-wDfueWc(-?)s;>wbN-#U)4?`U4^8zt#~q zVIvpD?2S7Rx;D_N|C5-B}$RZGl2)SJB~K3I7zP> z``(G*1`xa5t~>N>t0*@OsnJ?8B-6y1y@N-LxhaBF)%DiwmhKPpW){!p2>FbU&c4#1ZG z=_#|eU|uRsE%j^rm$ehA_oF`O+iW6m+Fn-MxdHXGF}xlBkFzZL6AU!lXQ^^< zQ{}e7h>>@NPefzqBIeXm^R~xx5LQ+PsxuZ%0>aTRfnS3V$T>&Ds)dq}*KMeG9s>2J z@m-HcU#D&KJ4G#?uUP33h^oh{JbK=57rXl}h%8r_U+!RpT__SyBfsbM~~WGnX-CZhSTa5FA^CA9SAI?7=9=eY$=HBEdLGJ|%-Z8@}H2|N; zvu@qx2%>a6Atgpb5yCcxxeK1`gFyHuTHHz>%D+zb*hVpn&)p$8_d%|@qviMG#UVN@vweMKDL$<4^rb@Ht_wl&7w*EMDp|GoS z;e&C?2)gvMOghhdkewJFHf6GR(>+H*MILj3lg#HaQDJ6XFf0+dhme_VBlMsOr?PqJ z%c}jTK%(VO>)~C-#zvOT4`KU1mmPF6fa>bf&dcDatNGC-&`5fP{f1?4n^NDPk2R$C z{PyRf&8lk&ANNTu=T*yRX45|-mb<#3Sxx)6-iUhc(rl)GltpwO-*#zM_zB~uf<6bK zykMC`x|n+Aiy&k1+RNc&qykC#0+f+RcdbFesmlDjYXAQ4Gwv7Pa8#ZiM+Aq*S}w5l zl(uO;yDcr7Q^Z2}8MpR5rnkv%m(%~^ z>#f6@{{HuIMGz1vQIIY{knR|zps19Jbayw59wHzOBHaqoFk^*Q85nB9b?3OVsC;xN~k*R+vlB&<6+F6`lttHYtnD#9Pe_5gHll@SuP!`X=% z!@7vC$l|Vqh-zvYm%nEf+c@hwP?Cr)5b(FV=pd9!s#q7UReFQ$ea%{ftZ78B? zSthtq&|)f;c2KV8)ys7=zHIWax#m6B2;4Gud3x=?x;}99Ep^^b8Cums9Yj2cxA6}X znDN2PYv_(O^M%Tp3x}*5)K8UTbc#;RB+D?R*Hf0^QOSwhwS8;bS}C|6u|qv(#?xJoT=tT5(Bh+May-!yCC;n;3Q&f4ICa!Xt`4PWt8K|* z3c3=avSar8L0g@^Fcn=tem-lH^TuW*N64&IpVLuz7&hnjRL9tid?LWN`MeONgXcT^ zwe6et2)P@m7YOwLo+oO^Y+yajR&1N+;12Tc>%R)`foVP>jDmJ%D1(-fiJToKhK999 z+ePC|5LA|mr8azfjBy1~jY3+FGkPzk!)0vx%hGOvI+<=Y`?zrjo^^W{K=<1E**bScl_&nPBX?4MWPO-^{2Zl3)D?lEY!U+Bl!})iE1iL>a7immgbpz}_AHaIbpntDDqGttnaPX3YI3yFB={ zcQrj<6Mdt6@WRm0Vw%ywZ;%hqf`wu&DNpjPmD$Sci{Ih$Sxo-xqet_z5W8L=U#^r# zpNa2tJ8Je<*X0;jIp4#^$PJwWz;2_g(Vv!W3=svO&2r(vOJcLqFmC<^t5d#rLgdq9 zzWxd*s-oQ2C`V;U`U;8L;epLSc+!rfObrCZQPEJcD zM#+@9w3c}C(oDUP073c*umLDmMM4VH^eyT_CrW;BCfxOgu`^KClvsZ|{g+JuKDh0o z^r*n(;^Jue4tcu5Wl0ZstDra9&d!&kVkU2eeKGFV%3}(kgNa+O6?)3RBn@1(u+guo zYm5zlFYXb%u()euOhSU?Ecf^ry&)o!tv&}n#yke`dK~s})1cDBbmk5Ouvn}VPho!K zJPJdUD8;kq%ehR2I^+T4_GbUs{@E>t%7F@hVd1%yLDB8T%rpe2rp|XPcX|Rkdg5O=rNQQeoZXt@I|Axk&{Q%F>;rT~ij` zE|H_-n4vgB=4Z^5Gl6*6dWWkN1LwCA3!eFm*aJsti~h>2x&2a6M}o4u{h5+izltbckS9@5}+1PKWVS{>mw!lUXfOZ3MK zSWY!AqKVcAd_ZQDRn}XW@z1%5#QWzO)Gf(sN)Uzbh!OdIuXpV;t2fYeB z$$1RS{?0dkbG+LkU8s6KZ86HG8c)nvP&O&L!G7-tZ+e`i{#YraM2o%hLmM@2{QNA9 zMJFcEIGDIjtnhgSW9y%shr`$EFADBVxqmNnzFl#mCKH&fz6p#ei<)vP<7`nrs z|JmL3>V5s8*815$=(nCd0@6IF z@jq?vv$ScmdB22tv0k$59Uw86=tMli_$h^s)`$ql;+4~p$ z>u6*DG}Xx?N~zOP@yICqCs~8w6K)NQ1hwZYU5HrDFrM`sX*HkFG%?lqQhS{71fLH~?zOcweq43zDM?Hv>yuF~V6pcQPl|-i8fHEcS5VXA_zAb9iVh%>}%9D6*@wDeomEQTcdPbUn5|IW3>_OY(=lTh!<=dFB$2z3Pl4?#>V^F*0}wN{b{`@RD)y;9F?ftY z8czslvC|{Q(nZc1*zM+^`Gh*%i-f`>Z=SV{U@*Z(;?0o!VEt?QDM;pfx7LCaYIIi< zw>o8$h34M3Kz!xwF0wyWL&BG1$}+S6@EXj-_s9HR5E82q0Ol#D>;*0;AGlb_$oW;O zw6*loA}K9ePL?s#P~G@U=Vmk+z;cEDeqUGDm7z3nC!#%$sn>YF;tEda8lf}MyGYT& z<1T4`XF{+J+Pt0c@{F^kA(8EX8WVfS7LYG#!24m8{7JBNz*vjleeXGalA3yl`FhXk zAAFt7hZroDB~zKnn&!^hgw%BUq+PRb()&Q0Cau^DW%_!+4SV1;{}4Tra{)NSKc2kX z)*Q<0#l6tIRVeruQiwz6o9yqlC@2?EG-hk{naz#*+r1K?La}t}xk<|!z{3r9x z3iF$Ixr<`#tvqH5m!4s}FAaBXJ>Smc{90siC#b(al>M+8XiYxkpgRM9tF_hr_B)fN z1Lo3@|D*TRSGjin23XI5Xi7tW?EU8HUn}`f_~*&7MJBg}fvB z#}$l#l7o{mbtS>}qltk`XXr7q$>k5+MZ@Iei$r01dLG@~wN%i#&Ugs9+$PKDZF*Mz zvd?@6V0-U|#Lsr)lv0=zK_|XRNy4ou`@)&O&!7L2PW{t6v}=38oXyF=mr`afNhvFwX~#J`H~vfzWqsr8RHLR%@f87e>2B-j~Ij7$gmTEdd|pT+7WGZ;Ub z3{7C-mZXnkhfBMj#fxmPr z<@;sqC#Y*<83^anI+@cb7q=dF@zR-5GM#&2w40s3gJ1rqa{BKl%U`K%?aE)*_OV}e z@z?3QS_Q=qyyVo~t}9%!W)2$pp*64ln$qq*Jdy}`D!Z@Xci_}en4G+El&%pdd_5@e z$KCHF-Da%G1JyDRFLxNhI4*2Kv3*HS5OuHoJoGmskaA#8+jW5kS51DY741HWH$#Vq zIeioe`@7)u-(|d`k?8)|>jMEVb#Nw4o#F^=tg&6fV8DU20r7?Ht%U7#z#Cq?JH4JFKcIg8d(G;D2wLZ}AFlbT9S_p&H>{r1g*$$yF3fa$v8a};ar&^P|IE1Q_poyN?yIO?vBVJ=eRU3GY+PLO8S^wf)!4COw0#CM- z><6RVWW@_aXjTfQ2+WqQ>)W5Xp^8TT~|JTgEj8n*!lZt!wJs9XU_1h*t0KArb zY)JE&uaTn5h+7%qq<*@;RwtWSe!EgDvy6SoZI+61xWaAGJ|{|ALOxZUL4L(1MMEvK zAt4=UR}uk#q}U)sKz@gh{L@qYxQE$~ruBSWq+K5+fN0c`4DO+zx>+@U=NkVl-vn1b zAR-mLhoKr_FRvbTDMP(uYoz+x`izi?s4p~)KZgE!;FQJ1vE&lxle9|JPD^KJxokE&N&PY0cxT^paW6fr8XRoWOQ2wklDXK0906*tq%7@Cts)`0N?2 zH8jK>q*M&Zgg!di>MIj2sc_DUU7aRw*xW=S_`IWMxtsrv6#ol+u(Aohm8~w*awg7q z*eJBlY*Wc@?%US0gGkLks0y4*{92gJw)Fucd)lEzHKD^hpbFU11#_~eAxH@bEnIN6 zGSyT=_c!|0;UIMc{18W|ZPWzYeGbgqM&Fs4#`}_1e5X^mw4GhyTeJ&gq&WyLh?mT- z$|rkoJd^*+!1q7p?|(mGaKuZTqEcKcKNZ)Z<2x?xE+@(GLqdj)xKEXQLqu91X80ea z6%Bl@_SKT!-_5CFd|3&3%AQ6Oo1JU&x=1}o6&Dxd>)jNI^x#ah=_Wh)bpMqy`Z=jj z&ndD#)cb2M5%cH4MyVxOYvLYo9H{bGOKu^+i|=oH$^V{sQEYCdFKlPOdv*-_5YM5} zHCWU5YP#asFcnDeBvC|8Ah8u|yF>ZLR@nzCcGB>!u;0Md%aSwgvq`H2gX_K1*rO2bc6VfC83C<# z%+(oJC0V-E`j^QxCA(GX|9NJ7B4QxI`w_hhwD38xoK9l%Z5)z}Rd;9xtJLc)!S?iY zpMv71ZJVu_)_@wX1S^>?-dIo$OLa5c@dTrgsItI~M+&^Vs{5i^5-Yh*EqRLeompqe z`b=h06^sARN^eT>IQ2wt8+@lK%$51L^CWg%>uSfuDYS2-8;i6N*OUN^(!(0wN^3jd z-W0v)rWnkwt3F4IjM&gT$;iy~7@ZHUe>VeppDm~iN#nNDIe5WxszN^Edbtbw_(osb z^I1*-^pRaEf1lAJznJ1|)L$|Ae?5$e?2r`e<^7c3fXs(Lv@_|WGMi2F)X$~+$^ZQJ zJUC8m6|(~XhNDrY-#~`eY@emP?`!is_aDT^TJ*<5Uy~`}dng^ub3OAI@0)BP9oeE?#Al@5{>Q`E*9gBb{T8*t=x-=7`G4g zR)@0duiWAH!_rZBe_Y&Heyo)fF2;P}LNS7TrK)K2Zl3dt;ootVYX`AvMY)5it>w8R z+N<+$h5*lBtLWLb7Bs;~EeK=pX4pS7aGAp+D{&H?KdX&4L>)WUd_l0lE?lM?h?k6} zmGH4>Ju;yYR|+Ai&sM;c>GJj$Gf(c_{Z-b-y<{L5PJ*%&!p|frlB%$&32FGTvBR?T zTAw^`|7)ug-a^~G`uoYc%LmauD{CdU>Q&TFTp+7Q1)s+)p z*bw_Oi+Y%7xmCKy`fVJ1JD%C+>3`|3%9_=mHlUwX5(?%`@E{K3h0&qHSB;Dgh! zvbjkh^4Nl{w(jjz#q%DY{I<=OSo2J58M`)M^Z@fk)D1W-M%>wAmvCqG)7gFQJ3PD3 z(%QQ%{hQ3zbNkmNQ@g&#`E1-efS2SY-@Fu-BBu=2U0wqh_w}%D1&ICiFx}Ju-@NbT@Gv1*F=!SN;TQ8UWgp!NM#Y?s8dB6SnA({UX~ zk6P=t_)H1w>_`84qbZoQi+Z@SS-__in>Fx0Q-g>3XJ65bHQg7t;)8EJ^d{6S!sGfd z8+XL?R&9>+>)8$$XSqO2q?9zxh9}|Rrn`>%HU43Q;E{9rP(^#i659V}c9qG3#gR?j z3smw|b8ShYi|yk-)O7|1yaJ*&?d&{9jn5*1JPwANhArCH_(WHfulQaaXT6)BoruFt zVp6;xJm%qXk3fd0&NcDdHO0cl=ypwS6Fo(2d3cXKBk3gHpkw3MD{6%C2Z!_oIUIws{Fk!;)0!8Tm&7S%&H+? z7}Az!e{ZNLFP|BDqE0mqL*F$Td6+q9

$x)9RG0pku>Zsp2iMWM;O|h=9V^@_3($ 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'38A}uKccRabx18&2EoB-ah5 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 MPgg&ebxsLQ0LJNDUjP6A literal 0 HcmV?d00001 From 99bd3f61336bab130f499e9b9beeeb47f0b29f9b Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Sat, 4 Jun 2022 16:33:58 +0100 Subject: [PATCH 08/14] docs: contents, faq (#729) * docs: contents, faq * add app links to the bottom --- README.md | 57 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d4e6f3e84..2e834767b 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,24 @@ - 🚀 [TestFlight preview for iOS](https://testflight.apple.com/join/DWuT2LQu) with the new features 1-2 weeks earlier - **limited to 10,000 users**! - 🖥 Available as a terminal (console) app / CLI on Linux, MacOS, Windows. -## Why privacy of communications matter +## Contents + +- [Why privacy matters](#why-privacy-matters) +- [SimpleX approach to privacy and security](#simplex-approach-to-privacy-and-security) + - [Complete privacy](#complete-privacy-of-your-identity-profile-contacts-and-metadata) + - [Protection against spam and abuse](#the-best-protection-against-spam-and-abuse) + - [Ownership and security of your data](#complete-ownership-control-and-security-of-your-data) + - [Users own SimpleX network](#users-own-simplex-network) +- [Frequently asked questions](#frequently-asked-questions) +- [News and updates](#news-and-updates) +- [Make a private connection](#make-a-private-connection) +- [Quick installation of a terminal app](#zap-quick-installation-of-a-terminal-app) +- [SimpleX Platform design](#simplex-platform-design) +- [For developers](#for-developers) +- [Roadmap](#roadmap) +- [Disclaimer, License](#disclaimer) + +## Why privacy matters Everyone should care about privacy and security of their communications - innocuous conversations can put you in danger even if there is nothing to hide. @@ -32,9 +49,9 @@ One of the most shocking stories is the experience of [Mohamedou Ould Salahi](ht It is not enough to use an end-to-end encrypted messenger, we all should use the messengers that protect the privacy of our personal networks - who we are connected with. -## SimpleX unique approach to privacy and security +## SimpleX approach to privacy and security -### Full privacy of your identity, profile, contacts and metadata +### Complete privacy of your identity, profile, contacts and metadata **Unlike any other existing messaging platform, SimpleX has no identifiers assigned to the users** - not even random numbers. This protects the privacy of who are you communicating with, hiding it from SimpleX platform servers and from any observers. [Read more](./docs/SIMPLEX.md#full-privacy-of-your-identity-profile-contacts-and-metadata). @@ -50,20 +67,17 @@ SimpleX stores all user data on client devices, the messages are only held tempo You can use SimpleX with your own servers and still communicate with people using the servers that are pre-configured in the apps or any other SimpleX servers. [Read more](./docs/SIMPLEX.md#users-own-simplex-network). -## For developers +## Frequently asked questions -We plan that the SimpleX platform will grow into the platform supporting any distributed Internet application. This will allow you to build any service that people can access via chat, with custom web-based UI widgets that anybody with basic HTML/CSS/JavaScript knowledge can create in a few hours. +1. _How SimpleX can deliver messages without any user identifiers?_ See [v2 release annoucement](./blog/20220511-simplex-chat-v2-images-files.md#the-first-messaging-platform-without-user-identifiers) explaining how SimpleX works. -You already can: +2. _Why should I not just use Signal?_ This [post](https://github.com/dessalines/essays/blob/master/why_not_signal.md) shows why Signal cannot be considered a private messenger. Signal is a centralised platform that uses phone numbers to identify its users and their contacts. -- use SimpleX Chat library to integrate chat functionality into your apps. -- use SimpleX Chat bot templates in Haskell to build your own chat bot services (TypeScript SDK is coming soon). - -If you are considering developing with SimpleX platform please get in touch for any advice and support. +3. _How is it different from Matrix, Session, Ricochet, Cwtch, etc., that also don't require user identites?_ Although these platforms do not require a _real identity_, they do rely on anonymous user identities to deliver messages – it can be, for example, an identity key or a random number. Using a persistent user identity, even anonymous, creates a risk that user's connection graph becomes known to the observers and/or service providers, and it can lead to de-anonymizing some users. If the same user profile is used to connect to two different people via any messenger other than SimpleX, these two people can confirm if they are connected to the same person - they would use the same user identifier in the messages. With SimpleX there is no meta-data in common between your conversations with different contacts - the quality that no other messaging platform has. ## News and updates -[Jun 4, 2022. v2.2: the new Privacy and Security settings](./20220604-simplex-chat-new-privacy-security-settings.md) +[Jun 4, 2022. v2.2: the new Privacy and Security settings](./blog/20220604-simplex-chat-new-privacy-security-settings.md) [May 11, 2022. v2.0 released - sending images and files in mobile apps](./blog/20220511-simplex-chat-v2-images-files.md) @@ -105,6 +119,17 @@ Only the client devices have information about users, their contacts and groups. See [SimpleX whitepaper](https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md) for more information on platform objectives and technical design. +## For developers + +We plan that the SimpleX platform will grow into the platform supporting any distributed Internet application. This will allow you to build any service that people can access via chat, with custom web-based UI widgets that anybody with basic HTML/CSS/JavaScript knowledge can create in a few hours. + +You already can: + +- use SimpleX Chat library to integrate chat functionality into your apps. +- use SimpleX Chat bot templates in Haskell to build your own chat bot services (TypeScript SDK is coming soon). + +If you are considering developing with SimpleX platform please get in touch for any advice and support. + ## Roadmap - ✅ Easy to deploy SimpleX server with in-memory message storage, without any dependencies. @@ -142,3 +167,13 @@ You are likely to discover some bugs - we would really appreciate if you use it ## License [AGPL v3](./LICENSE) + +[iOS app](https://apps.apple.com/us/app/simplex-chat/id1605771084) +  +[![Android app](https://github.com/simplex-chat/.github/blob/master/profile/images/google_play.svg)](https://play.google.com/store/apps/details?id=chat.simplex.app) +  +[F-Droid](https://app.simplex.chat) +  +[iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu) +  +[APK](https://github.com/simplex-chat/website/raw/master/simplex.apk) From f341e5412890dca45d20afa4ab7169d78433bc1b Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Mon, 6 Jun 2022 16:23:47 +0100 Subject: [PATCH 09/14] Export & import storage archive (#726) * core: import and export of chat archive * export chat archive * import archive, support starting chat after it is stopped * test for maintenance mode * test/fix archive with files * prevent starting chat after chat database was deleted or imported * update simplexmq --- cabal.project | 2 +- docs/rfcs/2022-06-03-portable-archive.md | 25 ++++++ package.yaml | 11 +++ scripts/nix/README.md | 15 ++++ scripts/nix/sha256map.nix | 2 +- simplex-chat.cabal | 16 ++++ src/Simplex/Chat.hs | 25 +++++- src/Simplex/Chat/Archive.hs | 81 +++++++++++++++++ src/Simplex/Chat/Controller.hs | 11 +++ src/Simplex/Chat/Core.hs | 14 +-- src/Simplex/Chat/Mobile.hs | 3 +- src/Simplex/Chat/Options.hs | 11 ++- src/Simplex/Chat/View.hs | 5 +- stack.yaml | 8 +- tests/ChatClient.hs | 50 ++++++----- tests/ChatTests.hs | 105 ++++++++++++++++++++--- 16 files changed, 337 insertions(+), 47 deletions(-) create mode 100644 docs/rfcs/2022-06-03-portable-archive.md create mode 100644 scripts/nix/README.md create mode 100644 src/Simplex/Chat/Archive.hs diff --git a/cabal.project b/cabal.project index d07117a66..e3ad4ef1c 100644 --- a/cabal.project +++ b/cabal.project @@ -3,7 +3,7 @@ packages: . source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 964daf5442e1069634762450bc28cfd69a2968a1 + tag: 628930df1fa1c3fff6fd1413e7b437148c4a83b5 source-repository-package type: git diff --git a/docs/rfcs/2022-06-03-portable-archive.md b/docs/rfcs/2022-06-03-portable-archive.md new file mode 100644 index 000000000..7f83df170 --- /dev/null +++ b/docs/rfcs/2022-06-03-portable-archive.md @@ -0,0 +1,25 @@ +# Portable archive file format + +## Problems + +- database migration for notifications support +- export and import of the database + +The first problem could have been solved in an ad hoc way, but it may cause data loss, so the proposal is to have migration performed via export/import steps. + +Out of scope of this doc - what will be the UX for database migration. It may be fully automatic, via code, with zero user interactions, or it could be via step by step wizard - irrespective of this choice it would include export and import steps. + +# Proposal + +Implement creating archive file and restoring from the archive in Haskell, application would only provide a source and target folders, respectively + +Archive files structure: + +- simplex_v1_chat.db +- simplex_v1_agent.db +- simplex_v1_files + - ... + +Archive file name (includes UTC time): + +simplex-chat.YYYY-MM-DDTHH:MM:SSZ.zip diff --git a/package.yaml b/package.yaml index 9e097678f..f1de3ff48 100644 --- a/package.yaml +++ b/package.yaml @@ -39,6 +39,17 @@ dependencies: - time == 1.9.* - unliftio == 0.2.* - unliftio-core == 0.2.* + - zip == 1.7.* + +flags: + disable-bzip2: + description: removes dependency on bzip2 C library (zip package) + manual: True + default: True + disable-zstd: + description: Removes dependency on zstd C library (zip package) + manual: True + default: True library: source-dirs: src diff --git a/scripts/nix/README.md b/scripts/nix/README.md new file mode 100644 index 000000000..511703271 --- /dev/null +++ b/scripts/nix/README.md @@ -0,0 +1,15 @@ +# Updating nix package config + +1. Install `nix`, `gawk` and `jq`. + +2. Start nix-shell from repo root: + +```sh +nix-shell -p nix-prefetch-git +``` + +3. Run in nix shell: + +```sh +gawk -f ./scripts/nix/update-sha256.awk cabal.project > ./scripts/nix/sha256map.nix +``` diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 984e8afc7..f56ebfa85 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."964daf5442e1069634762450bc28cfd69a2968a1" = "1vsbiawqlvi6v48ws2rmg5cmp5qphnry3ymg6458p2w8wdm2gsng"; + "https://github.com/simplex-chat/simplexmq.git"."628930df1fa1c3fff6fd1413e7b437148c4a83b5" = "03h063yahq6b5m1lng7as70a59lklhzsxg0ykmr9wldy8768dlvd"; "https://github.com/simplex-chat/aeson.git"."3eb66f9a68f103b5f1489382aad89f5712a64db7" = "0kilkx59fl6c3qy3kjczqvm8c3f4n3p0bdk9biyflf51ljnzp4yp"; "https://github.com/simplex-chat/haskell-terminal.git"."f708b00009b54890172068f168bf98508ffcd495" = "0zmq7lmfsk8m340g47g5963yba7i88n4afa6z93sg9px5jv1mijj"; "https://github.com/zw3rk/android-support.git"."3c3a5ab0b8b137a072c98d3d0937cbdc96918ddb" = "1r6jyxbim3dsvrmakqfyxbd6ms6miaghpbwyl0sr6dzwpgaprz97"; diff --git a/simplex-chat.cabal b/simplex-chat.cabal index 588beb8ca..eb91672b1 100644 --- a/simplex-chat.cabal +++ b/simplex-chat.cabal @@ -17,9 +17,20 @@ build-type: Simple extra-source-files: README.md +flag disable-bzip2 + description: removes dependency on bzip2 C library (zip package) + manual: True + default: True + +flag disable-zstd + description: Removes dependency on zstd C library (zip package) + manual: True + default: True + library exposed-modules: Simplex.Chat + Simplex.Chat.Archive Simplex.Chat.Bot Simplex.Chat.Call Simplex.Chat.Controller @@ -83,6 +94,7 @@ library , time ==1.9.* , unliftio ==0.2.* , unliftio-core ==0.2.* + , zip ==1.7.* default-language: Haskell2010 executable simplex-bot @@ -121,6 +133,7 @@ executable simplex-bot , time ==1.9.* , unliftio ==0.2.* , unliftio-core ==0.2.* + , zip ==1.7.* default-language: Haskell2010 executable simplex-bot-advanced @@ -159,6 +172,7 @@ executable simplex-bot-advanced , time ==1.9.* , unliftio ==0.2.* , unliftio-core ==0.2.* + , zip ==1.7.* default-language: Haskell2010 executable simplex-chat @@ -200,6 +214,7 @@ executable simplex-chat , unliftio ==0.2.* , unliftio-core ==0.2.* , websockets ==0.12.* + , zip ==1.7.* default-language: Haskell2010 test-suite simplex-chat-test @@ -247,4 +262,5 @@ test-suite simplex-chat-test , time ==1.9.* , unliftio ==0.2.* , unliftio-core ==0.2.* + , zip ==1.7.* default-language: Haskell2010 diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index e91a4c418..da5f7116c 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -41,6 +41,7 @@ import qualified Data.Text as T import Data.Time.Clock (UTCTime, diffUTCTime, getCurrentTime, nominalDiffTimeToSeconds) import Data.Time.LocalTime (getCurrentTimeZone, getZonedTime) import Data.Word (Word32) +import Simplex.Chat.Archive import Simplex.Chat.Call import Simplex.Chat.Controller import Simplex.Chat.Markdown @@ -134,7 +135,8 @@ newChatController chatStore user cfg@ChatConfig {agentConfig = aCfg, tbqSize, de rcvFiles <- newTVarIO M.empty currentCalls <- atomically TM.empty filesFolder <- newTVarIO Nothing - pure ChatController {activeTo, firstTime, currentUser, smpAgent, agentAsync, chatStore, idsDrg, inputQ, outputQ, notifyQ, chatLock, sndFiles, rcvFiles, currentCalls, config, sendNotification, filesFolder} + chatStoreChanged <- newTVarIO False + pure ChatController {activeTo, firstTime, currentUser, smpAgent, agentAsync, chatStore, chatStoreChanged, idsDrg, inputQ, outputQ, notifyQ, chatLock, sndFiles, rcvFiles, currentCalls, config, sendNotification, filesFolder} where resolveServers :: InitialAgentServers -> IO InitialAgentServers resolveServers ss@InitialAgentServers {smp = defaultSMPServers} = case nonEmpty smpServers of @@ -150,6 +152,7 @@ runChatController = race_ notificationSubscriber . agentSubscriber startChatController :: (MonadUnliftIO m, MonadReader ChatController m) => User -> m (Async ()) startChatController user = do + asks smpAgent >>= resumeAgentClient s <- asks agentAsync readTVarIO s >>= maybe (start s) pure where @@ -194,13 +197,23 @@ processChatCommand = \case StartChat -> withUser' $ \user -> asks agentAsync >>= readTVarIO >>= \case Just _ -> pure CRChatRunning - _ -> startChatController user $> CRChatStarted + _ -> + ifM + (asks chatStoreChanged >>= readTVarIO) + (throwChatError CEChatStoreChanged) + (startChatController user $> CRChatStarted) + APIStopChat -> do + ask >>= stopChatController + pure CRChatStopped ResubscribeAllConnections -> withUser (subscribeUserConnections resubscribeConnection) $> CRCmdOk SetFilesFolder filesFolder' -> withUser $ \_ -> do createDirectoryIfMissing True filesFolder' ff <- asks filesFolder atomically . writeTVar ff $ Just filesFolder' pure CRCmdOk + APIExportArchive cfg -> checkChatStopped $ exportArchive cfg $> CRCmdOk + APIImportArchive cfg -> checkChatStopped $ importArchive cfg >> setStoreChanged $> CRCmdOk + APIDeleteStorage -> checkChatStopped $ deleteStorage >> setStoreChanged $> CRCmdOk APIGetChats withPCC -> CRApiChats <$> withUser (\user -> withStore $ \st -> getChatPreviews st user withPCC) APIGetChat (ChatRef cType cId) pagination -> withUser $ \user -> case cType of CTDirect -> CRApiChat . AChat SCTDirect <$> withStore (\st -> getDirectChat st user cId pagination) @@ -770,6 +783,10 @@ processChatCommand = \case CTDirect -> withStore $ \st -> getContactIdByName st userId name CTGroup -> withStore $ \st -> getGroupIdByName st user name _ -> throwChatError $ CECommandError "not supported" + checkChatStopped :: m ChatResponse -> m ChatResponse + checkChatStopped a = asks agentAsync >>= readTVarIO >>= maybe a (const $ throwChatError CEChatNotStopped) + setStoreChanged :: m () + setStoreChanged = asks chatStoreChanged >>= atomically . (`writeTVar` True) getSentChatItemIdByText :: User -> ChatRef -> ByteString -> m Int64 getSentChatItemIdByText user@User {userId, localDisplayName} (ChatRef cType cId) msg = case cType of CTDirect -> withStore $ \st -> getDirectChatItemIdByText st userId cId SMDSnd (safeDecodeUtf8 msg) @@ -2212,8 +2229,12 @@ chatCommandP = ("/user " <|> "/u ") *> (CreateActiveUser <$> userProfile) <|> ("/user" <|> "/u") $> ShowActiveUser <|> "/_start" $> StartChat + <|> "/_stop" $> APIStopChat <|> "/_resubscribe all" $> ResubscribeAllConnections <|> "/_files_folder " *> (SetFilesFolder <$> filePath) + <|> "/_db export " *> (APIExportArchive <$> jsonP) + <|> "/_db import " *> (APIImportArchive <$> jsonP) + <|> "/_db delete" $> APIDeleteStorage <|> "/_get chats" *> (APIGetChats <$> (" pcc=on" $> True <|> " pcc=off" $> False <|> pure False)) <|> "/_get chat " *> (APIGetChat <$> chatRefP <* A.space <*> chatPaginationP) <|> "/_get items count=" *> (APIGetChatItems <$> A.decimal) diff --git a/src/Simplex/Chat/Archive.hs b/src/Simplex/Chat/Archive.hs new file mode 100644 index 000000000..31a5714ea --- /dev/null +++ b/src/Simplex/Chat/Archive.hs @@ -0,0 +1,81 @@ +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE NamedFieldPuns #-} + +module Simplex.Chat.Archive where + +import qualified Codec.Archive.Zip as Z +import Control.Monad.Reader +import Simplex.Chat.Controller +import Simplex.Chat.Util (whenM) +import Simplex.Messaging.Agent.Client (agentDbPath) +import Simplex.Messaging.Agent.Store.SQLite (SQLiteStore (..)) +import System.FilePath +import UnliftIO.Directory +import UnliftIO.STM +import UnliftIO.Temporary + +archiveAgentDbFile :: String +archiveAgentDbFile = "simplex_v1_agent.db" + +archiveChatDbFile :: String +archiveChatDbFile = "simplex_v1_chat.db" + +archiveFilesFolder :: String +archiveFilesFolder = "simplex_v1_files" + +exportArchive :: ChatMonad m => ArchiveConfig -> m () +exportArchive ArchiveConfig {archivePath, disableCompression} = + withSystemTempDirectory "simplex-chat." $ \dir -> do + StorageFiles {chatDb, agentDb, filesPath} <- storageFiles + copyFile chatDb $ dir archiveChatDbFile + copyFile agentDb $ dir archiveAgentDbFile + forM_ filesPath $ \fp -> + copyDirectoryFiles fp $ dir archiveFilesFolder + let method = if disableCompression == Just True then Z.Store else Z.Deflate + Z.createArchive archivePath $ Z.packDirRecur method Z.mkEntrySelector dir + +importArchive :: ChatMonad m => ArchiveConfig -> m () +importArchive ArchiveConfig {archivePath} = + withSystemTempDirectory "simplex-chat." $ \dir -> do + Z.withArchive archivePath $ Z.unpackInto dir + StorageFiles {chatDb, agentDb, filesPath} <- storageFiles + backup chatDb + backup agentDb + copyFile (dir archiveChatDbFile) chatDb + copyFile (dir archiveAgentDbFile) agentDb + let filesDir = dir archiveFilesFolder + forM_ filesPath $ \fp -> + whenM (doesDirectoryExist filesDir) $ + copyDirectoryFiles filesDir fp + where + backup f = whenM (doesFileExist f) $ copyFile f $ f <> ".bak" + +copyDirectoryFiles :: MonadIO m => FilePath -> FilePath -> m () +copyDirectoryFiles fromDir toDir = do + createDirectoryIfMissing False toDir + fs <- listDirectory fromDir + forM_ fs $ \f -> do + let fn = takeFileName f + f' = fromDir fn + whenM (doesFileExist f') $ copyFile f' $ toDir fn + +deleteStorage :: ChatMonad m => m () +deleteStorage = do + StorageFiles {chatDb, agentDb, filesPath} <- storageFiles + removeFile chatDb + removeFile agentDb + mapM_ removePathForcibly filesPath + +data StorageFiles = StorageFiles + { chatDb :: FilePath, + agentDb :: FilePath, + filesPath :: Maybe FilePath + } + +storageFiles :: ChatMonad m => m StorageFiles +storageFiles = do + ChatController {chatStore, filesFolder, smpAgent} <- ask + let SQLiteStore {dbFilePath = chatDb} = chatStore + agentDb = agentDbPath smpAgent + filesPath <- readTVarIO filesFolder + pure StorageFiles {chatDb, agentDb, filesPath} diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 9abaa4cdd..321ff0e7d 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -76,6 +76,7 @@ data ChatController = ChatController smpAgent :: AgentClient, agentAsync :: TVar (Maybe (Async ())), chatStore :: SQLiteStore, + chatStoreChanged :: TVar Bool, -- if True, chat should be fully restarted idsDrg :: TVar ChaChaDRG, inputQ :: TBQueue String, outputQ :: TBQueue (Maybe CorrId, ChatResponse), @@ -100,8 +101,12 @@ data ChatCommand = ShowActiveUser | CreateActiveUser Profile | StartChat + | APIStopChat | ResubscribeAllConnections | SetFilesFolder FilePath + | APIExportArchive ArchiveConfig + | APIImportArchive ArchiveConfig + | APIDeleteStorage | APIGetChats {pendingConnections :: Bool} | APIGetChat ChatRef ChatPagination | APIGetChatItems Int @@ -178,6 +183,7 @@ data ChatResponse = CRActiveUser {user :: User} | CRChatStarted | CRChatRunning + | CRChatStopped | CRApiChats {chats :: [AChat]} | CRApiChat {chat :: AChat} | CRLastMessages {chatItems :: [AChatItem]} @@ -279,6 +285,9 @@ instance ToJSON ChatResponse where toJSON = J.genericToJSON . sumTypeJSON $ dropPrefix "CR" toEncoding = J.genericToEncoding . sumTypeJSON $ dropPrefix "CR" +data ArchiveConfig = ArchiveConfig {archivePath :: FilePath, disableCompression :: Maybe Bool} + deriving (Show, Generic, FromJSON) + data ContactSubStatus = ContactSubStatus { contact :: Contact, contactError :: Maybe ChatError @@ -329,6 +338,8 @@ data ChatErrorType = CENoActiveUser | CEActiveUserExists | CEChatNotStarted + | CEChatNotStopped + | CEChatStoreChanged | CEInvalidConnReq | CEInvalidChatMessage {message :: String} | CEContactNotReady {contact :: Contact} diff --git a/src/Simplex/Chat/Core.hs b/src/Simplex/Chat/Core.hs index a4faaf876..6290e7f02 100644 --- a/src/Simplex/Chat/Core.hs +++ b/src/Simplex/Chat/Core.hs @@ -26,13 +26,15 @@ simplexChatCore cfg@ChatConfig {dbPoolSize, yesToMigrations} opts sendToast chat st <- createStore f dbPoolSize yesToMigrations u <- getCreateActiveUser st cc <- newChatController st (Just u) cfg opts sendToast - runSimplexChat u cc chat + runSimplexChat opts u cc chat -runSimplexChat :: User -> ChatController -> (User -> ChatController -> IO ()) -> IO () -runSimplexChat u cc chat = do - a1 <- async $ chat u cc - a2 <- runReaderT (startChatController u) cc - waitEither_ a1 a2 +runSimplexChat :: ChatOpts -> User -> ChatController -> (User -> ChatController -> IO ()) -> IO () +runSimplexChat ChatOpts {maintenance} u cc chat + | maintenance = wait =<< async (chat u cc) + | otherwise = do + a1 <- async $ chat u cc + a2 <- runReaderT (startChatController u) cc + waitEither_ a1 a2 sendChatCmd :: ChatController -> String -> IO ChatResponse sendChatCmd cc s = runReaderT (execChatCommand . encodeUtf8 $ T.pack s) cc diff --git a/src/Simplex/Chat/Mobile.hs b/src/Simplex/Chat/Mobile.hs index a83fc67f0..74d06f283 100644 --- a/src/Simplex/Chat/Mobile.hs +++ b/src/Simplex/Chat/Mobile.hs @@ -54,7 +54,8 @@ mobileChatOpts = logAgent = False, chatCmd = "", chatCmdDelay = 3, - chatServerPort = Nothing + chatServerPort = Nothing, + maintenance = True } defaultMobileConfig :: ChatConfig diff --git a/src/Simplex/Chat/Options.hs b/src/Simplex/Chat/Options.hs index ad7cb97e1..72211bc01 100644 --- a/src/Simplex/Chat/Options.hs +++ b/src/Simplex/Chat/Options.hs @@ -25,7 +25,8 @@ data ChatOpts = ChatOpts logAgent :: Bool, chatCmd :: String, chatCmdDelay :: Int, - chatServerPort :: Maybe String + chatServerPort :: Maybe String, + maintenance :: Bool } chatOpts :: FilePath -> FilePath -> Parser ChatOpts @@ -88,7 +89,13 @@ chatOpts appDir defaultDbFileName = do <> help "Run chat server on specified port" <> value Nothing ) - pure ChatOpts {dbFilePrefix, smpServers, logConnections, logAgent, chatCmd, chatCmdDelay, chatServerPort} + maintenance <- + switch + ( long "maintenance" + <> short 'm' + <> help "Run in maintenance mode (/_start to start chat)" + ) + pure ChatOpts {dbFilePrefix, smpServers, logConnections, logAgent, chatCmd, chatCmdDelay, chatServerPort, maintenance} where defaultDbFilePath = combine appDir defaultDbFileName diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index 6f7f31a66..6ac5b0faa 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -53,7 +53,8 @@ responseToView :: Bool -> ChatResponse -> [StyledString] responseToView testView = \case CRActiveUser User {profile} -> viewUserProfile profile CRChatStarted -> ["chat started"] - CRChatRunning -> [] + CRChatRunning -> ["chat is running"] + CRChatStopped -> ["chat stopped"] CRApiChats chats -> if testView then testViewChats chats else [plain . bshow $ J.encode chats] CRApiChat chat -> if testView then testViewChat chat else [plain . bshow $ J.encode chat] CRApiParsedMarkdown ft -> [plain . bshow $ J.encode ft] @@ -721,6 +722,8 @@ viewChatError = \case CENoActiveUser -> ["error: active user is required"] CEActiveUserExists -> ["error: active user already exists"] CEChatNotStarted -> ["error: chat not started"] + CEChatNotStopped -> ["error: chat not stopped"] + CEChatStoreChanged -> ["error: chat store changed"] CEInvalidConnReq -> viewInvalidConnReq CEInvalidChatMessage e -> ["chat message error: " <> sShow e] CEContactNotReady c -> [ttyContact' c <> ": not ready"] diff --git a/stack.yaml b/stack.yaml index 5b6b00b39..eac63e18a 100644 --- a/stack.yaml +++ b/stack.yaml @@ -49,7 +49,7 @@ extra-deps: # - simplexmq-1.0.0@sha256:34b2004728ae396e3ae449cd090ba7410781e2b3cefc59259915f4ca5daa9ea8,8561 # - ../simplexmq - github: simplex-chat/simplexmq - commit: 964daf5442e1069634762450bc28cfd69a2968a1 + commit: 628930df1fa1c3fff6fd1413e7b437148c4a83b5 # - terminal-0.2.0.0@sha256:de6770ecaae3197c66ac1f0db5a80cf5a5b1d3b64a66a05b50f442de5ad39570,2977 - github: simplex-chat/aeson commit: 3eb66f9a68f103b5f1489382aad89f5712a64db7 @@ -59,8 +59,10 @@ extra-deps: # extra-deps: [] # Override default flag values for local packages and extra-deps -# flags: {} - +flags: + zip: + disable-bzip2: true + disable-zstd: true # Extra package databases containing global packages # extra-package-dbs: [] diff --git a/tests/ChatClient.hs b/tests/ChatClient.hs index 2aba3feb2..7c5ebc6c1 100644 --- a/tests/ChatClient.hs +++ b/tests/ChatClient.hs @@ -42,8 +42,8 @@ testDBPrefix = "tests/tmp/test" serverPort :: ServiceName serverPort = "5001" -opts :: ChatOpts -opts = +testOpts :: ChatOpts +testOpts = ChatOpts { dbFilePrefix = undefined, smpServers = ["smp://LcJUMfVhwD8yxjAiSaDzzGF3-kLG4Uh0Fl_ZIjrRwjI=@localhost:5001"], @@ -51,7 +51,8 @@ opts = logAgent = False, chatCmd = "", chatCmdDelay = 3, - chatServerPort = Nothing + chatServerPort = Nothing, + maintenance = False } termSettings :: VirtualTerminalSettings @@ -82,26 +83,26 @@ cfg = testView = True } -createTestChat :: String -> Profile -> IO TestCC -createTestChat dbPrefix profile = do +createTestChat :: ChatOpts -> String -> Profile -> IO TestCC +createTestChat opts dbPrefix profile = do let dbFilePrefix = testDBPrefix <> dbPrefix st <- createStore (dbFilePrefix <> "_chat.db") 1 False Right user <- runExceptT $ createUser st profile True - startTestChat_ st dbFilePrefix user + startTestChat_ st opts dbFilePrefix user -startTestChat :: String -> IO TestCC -startTestChat dbPrefix = do +startTestChat :: ChatOpts -> String -> IO TestCC +startTestChat opts dbPrefix = do let dbFilePrefix = testDBPrefix <> dbPrefix st <- createStore (dbFilePrefix <> "_chat.db") 1 False Just user <- find activeUser <$> getUsers st - startTestChat_ st dbFilePrefix user + startTestChat_ st opts dbFilePrefix user -startTestChat_ :: SQLiteStore -> FilePath -> User -> IO TestCC -startTestChat_ st dbFilePrefix user = do +startTestChat_ :: SQLiteStore -> ChatOpts -> FilePath -> User -> IO TestCC +startTestChat_ st opts dbFilePrefix user = do t <- withVirtualTerminal termSettings pure ct <- newChatTerminal t cc <- newChatController st (Just user) cfg opts {dbFilePrefix} Nothing -- no notifications - chatAsync <- async . runSimplexChat user cc . const $ runChatTerminal ct + chatAsync <- async . runSimplexChat opts user cc . const $ runChatTerminal ct termQ <- newTQueueIO termAsync <- async $ readTerminalOutput t termQ pure TestCC {chatController = cc, virtualTerminal = t, chatAsync, termAsync, termQ} @@ -113,10 +114,16 @@ stopTestChat TestCC {chatController = cc, chatAsync, termAsync} = do uninterruptibleCancel chatAsync withNewTestChat :: String -> Profile -> (TestCC -> IO a) -> IO a -withNewTestChat dbPrefix profile = bracket (createTestChat dbPrefix profile) (\cc -> cc > stopTestChat cc) +withNewTestChat = withNewTestChatOpts testOpts + +withNewTestChatOpts :: ChatOpts -> String -> Profile -> (TestCC -> IO a) -> IO a +withNewTestChatOpts opts dbPrefix profile = bracket (createTestChat opts dbPrefix profile) (\cc -> cc > stopTestChat cc) withTestChat :: String -> (TestCC -> IO a) -> IO a -withTestChat dbPrefix = bracket (startTestChat dbPrefix) (\cc -> cc > stopTestChat cc) +withTestChat = withTestChatOpts testOpts + +withTestChatOpts :: ChatOpts -> String -> (TestCC -> IO a) -> IO a +withTestChatOpts opts dbPrefix = bracket (startTestChat opts dbPrefix) (\cc -> cc > stopTestChat cc) readTerminalOutput :: VirtualTerminal -> TQueue String -> IO () readTerminalOutput t termQ = do @@ -147,8 +154,8 @@ withTmpFiles = (createDirectoryIfMissing False "tests/tmp") (removePathForcibly "tests/tmp") -testChatN :: [Profile] -> ([TestCC] -> IO ()) -> IO () -testChatN ps test = withTmpFiles $ do +testChatN :: ChatOpts -> [Profile] -> ([TestCC] -> IO ()) -> IO () +testChatN opts ps test = withTmpFiles $ do tcs <- getTestCCs (zip ps [1 ..]) [] test tcs concurrentlyN_ $ map ( [TestCC] -> IO [TestCC] getTestCCs [] tcs = pure tcs - getTestCCs ((p, db) : envs') tcs = (:) <$> createTestChat (show db) p <*> getTestCCs envs' tcs + getTestCCs ((p, db) : envs') tcs = (:) <$> createTestChat opts (show db) p <*> getTestCCs envs' tcs ( Int -> Expectation ( IO [Char] userName (TestCC ChatController {currentUser} _ _ _ _) = T.unpack . localDisplayName . fromJust <$> readTVarIO currentUser testChat2 :: Profile -> Profile -> (TestCC -> TestCC -> IO ()) -> IO () -testChat2 p1 p2 test = testChatN [p1, p2] test_ +testChat2 = testChatOpts2 testOpts + +testChatOpts2 :: ChatOpts -> Profile -> Profile -> (TestCC -> TestCC -> IO ()) -> IO () +testChatOpts2 opts p1 p2 test = testChatN opts [p1, p2] test_ where test_ :: [TestCC] -> IO () test_ [tc1, tc2] = test tc1 tc2 test_ _ = error "expected 2 chat clients" testChat3 :: Profile -> Profile -> Profile -> (TestCC -> TestCC -> TestCC -> IO ()) -> IO () -testChat3 p1 p2 p3 test = testChatN [p1, p2, p3] test_ +testChat3 p1 p2 p3 test = testChatN testOpts [p1, p2, p3] test_ where test_ :: [TestCC] -> IO () test_ [tc1, tc2, tc3] = test tc1 tc2 tc3 test_ _ = error "expected 3 chat clients" testChat4 :: Profile -> Profile -> Profile -> Profile -> (TestCC -> TestCC -> TestCC -> TestCC -> IO ()) -> IO () -testChat4 p1 p2 p3 p4 test = testChatN [p1, p2, p3, p4] test_ +testChat4 p1 p2 p3 p4 test = testChatN testOpts [p1, p2, p3, p4] test_ where test_ :: [TestCC] -> IO () test_ [tc1, tc2, tc3, tc4] = test tc1 tc2 tc3 tc4 diff --git a/tests/ChatTests.hs b/tests/ChatTests.hs index 4d60fe215..03c7991c8 100644 --- a/tests/ChatTests.hs +++ b/tests/ChatTests.hs @@ -18,9 +18,11 @@ import Data.Char (isDigit) import qualified Data.Text as T import Simplex.Chat.Call import Simplex.Chat.Controller (ChatController (..)) +import Simplex.Chat.Options (ChatOpts (..)) import Simplex.Chat.Types (ConnStatus (..), ImageData (..), Profile (..), User (..)) import Simplex.Chat.Util (unlessM) -import System.Directory (copyFile, doesFileExist) +import System.Directory (copyFile, doesDirectoryExist, doesFileExist) +import System.FilePath (()) import Test.Hspec aliceProfile :: Profile @@ -91,6 +93,9 @@ chatTests = do it "send and receive file to group, fully asynchronous" testAsyncGroupFileTransfer describe "webrtc calls api" $ do it "negotiate call" testNegotiateCall + describe "maintenance mode" $ do + it "start/stop/export/import chat" testMaintenanceMode + it "export/import chat with files" testMaintenanceModeWithFiles testAddContact :: IO () testAddContact = @@ -1963,6 +1968,81 @@ testNegotiateCall = alice <## "message updated" alice #$> ("/_get chat @2 count=100", chat, [(1, "outgoing call: ended (00:00)")]) +testMaintenanceMode :: IO () +testMaintenanceMode = withTmpFiles $ do + withNewTestChat "bob" bobProfile $ \bob -> do + withNewTestChatOpts testOpts {maintenance = True} "alice" aliceProfile $ \alice -> do + alice ##> "/c" + alice <## "error: chat not started" + alice ##> "/_start" + alice <## "chat started" + connectUsers alice bob + alice #> "@bob hi" + bob <# "alice> hi" + alice ##> "/_db export {\"archivePath\": \"./tests/tmp/alice-chat.zip\"}" + alice <## "error: chat not stopped" + alice ##> "/_stop" + alice <## "chat stopped" + alice ##> "/_start" + alice <## "chat started" + -- chat works after start + alice <## "1 contacts connected (use /cs for the list)" + alice #> "@bob hi again" + bob <# "alice> hi again" + bob #> "@alice hello" + alice <# "bob> hello" + -- export / delete / import + alice ##> "/_stop" + alice <## "chat stopped" + alice ##> "/_db export {\"archivePath\": \"./tests/tmp/alice-chat.zip\"}" + alice <## "ok" + doesFileExist "./tests/tmp/alice-chat.zip" `shouldReturn` True + alice ##> "/_db import {\"archivePath\": \"./tests/tmp/alice-chat.zip\"}" + alice <## "ok" + -- cannot start chat after import + alice ##> "/_start" + alice <## "error: chat store changed" + -- works after full restart + withTestChat "alice" $ \alice -> testChatWorking alice bob + +testChatWorking :: TestCC -> TestCC -> IO () +testChatWorking alice bob = do + alice <## "1 contacts connected (use /cs for the list)" + alice #> "@bob hello again" + bob <# "alice> hello again" + bob #> "@alice hello too" + alice <# "bob> hello too" + +testMaintenanceModeWithFiles :: IO () +testMaintenanceModeWithFiles = withTmpFiles $ do + withNewTestChat "bob" bobProfile $ \bob -> do + withNewTestChatOpts testOpts {maintenance = True} "alice" aliceProfile $ \alice -> do + alice ##> "/_start" + alice <## "chat started" + alice ##> "/_files_folder ./tests/tmp/alice_files" + alice <## "ok" + connectUsers alice bob + startFileTransferWithDest' bob alice "test.jpg" "136.5 KiB / 139737 bytes" Nothing + bob <## "completed sending file 1 (test.jpg) to alice" + alice <## "completed receiving file 1 (test.jpg) from bob" + src <- B.readFile "./tests/fixtures/test.jpg" + B.readFile "./tests/tmp/alice_files/test.jpg" `shouldReturn` src + alice ##> "/_stop" + alice <## "chat stopped" + alice ##> "/_db export {\"archivePath\": \"./tests/tmp/alice-chat.zip\"}" + alice <## "ok" + alice ##> "/_db delete" + alice <## "ok" + -- cannot start chat after delete + alice ##> "/_start" + alice <## "error: chat store changed" + doesDirectoryExist "./tests/tmp/alice_files" `shouldReturn` False + alice ##> "/_db import {\"archivePath\": \"./tests/tmp/alice-chat.zip\"}" + alice <## "ok" + B.readFile "./tests/tmp/alice_files/test.jpg" `shouldReturn` src + -- works after full restart + withTestChat "alice" $ \alice -> testChatWorking alice bob + withTestChatContactConnected :: String -> (TestCC -> IO a) -> IO a withTestChatContactConnected dbPrefix action = withTestChat dbPrefix $ \cc -> do @@ -1987,16 +2067,21 @@ startFileTransfer alice bob = startFileTransfer' alice bob "test.jpg" "136.5 KiB / 139737 bytes" startFileTransfer' :: TestCC -> TestCC -> String -> String -> IO () -startFileTransfer' alice bob fileName fileSize = do - alice #> ("/f @bob ./tests/fixtures/" <> fileName) - alice <## "use /fc 1 to cancel sending" - bob <# ("alice> sends file " <> fileName <> " (" <> fileSize <> ")") - bob <## "use /fr 1 [

/ | ] to receive it" - bob ##> "/fr 1 ./tests/tmp" - bob <## ("saving file 1 from alice to ./tests/tmp/" <> fileName) +startFileTransfer' cc1 cc2 fileName fileSize = startFileTransferWithDest' cc1 cc2 fileName fileSize $ Just "./tests/tmp" + +startFileTransferWithDest' :: TestCC -> TestCC -> String -> String -> Maybe String -> IO () +startFileTransferWithDest' cc1 cc2 fileName fileSize fileDest_ = do + name1 <- userName cc1 + name2 <- userName cc2 + cc1 #> ("/f @" <> name2 <> " ./tests/fixtures/" <> fileName) + cc1 <## "use /fc 1 to cancel sending" + cc2 <# (name1 <> "> sends file " <> fileName <> " (" <> fileSize <> ")") + cc2 <## "use /fr 1 [/ | ] to receive it" + cc2 ##> ("/fr 1" <> maybe "" (" " <>) fileDest_) + cc2 <## ("saving file 1 from " <> name1 <> " to " <> maybe id () fileDest_ fileName) concurrently_ - (bob <## ("started receiving file 1 (" <> fileName <> ") from alice")) - (alice <## ("started sending file 1 (" <> fileName <> ") to bob")) + (cc2 <## ("started receiving file 1 (" <> fileName <> ") from " <> name1)) + (cc1 <## ("started sending file 1 (" <> fileName <> ") to " <> name2)) checkPartialTransfer :: String -> IO () checkPartialTransfer fileName = do From 883bf768af595cdbe7f1c2232fa34a53f9f3751c Mon Sep 17 00:00:00 2001 From: Milton Date: Mon, 6 Jun 2022 17:24:33 +0200 Subject: [PATCH 10/14] fix typo (#732) Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 1e53c00bf..4518967e5 100755 --- a/install.sh +++ b/install.sh @@ -77,7 +77,7 @@ fi chmod +x $BIN_PATH -echo "$APP_NAME installed sucesfully!" +echo "$APP_NAME installed successfully!" if [ -z "$(command -v $APP_NAME)" ]; then if [ -n "$($SHELL -c 'echo $ZSH_VERSION')" ]; then From 16bd9ccc4f4bcb16dda8ee59c5d8a7b6ec7c4361 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Tue, 7 Jun 2022 14:14:54 +0100 Subject: [PATCH 11/14] core: send SMP notification msg flag based on chat message (#733) * core: send SMP notification msg flag based on chat message * update simplexmq * remove unnecessary condition Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com> Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com> --- cabal.project | 4 ++-- scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat.hs | 41 +++++++++++++++++++----------------- src/Simplex/Chat/Archive.hs | 2 +- src/Simplex/Chat/Messages.hs | 4 ++-- src/Simplex/Chat/Protocol.hs | 14 ++++++++++-- src/Simplex/Chat/Store.hs | 3 +-- src/Simplex/Chat/Util.hs | 13 ------------ stack.yaml | 2 +- tests/ChatTests.hs | 2 +- 10 files changed, 43 insertions(+), 44 deletions(-) diff --git a/cabal.project b/cabal.project index e3ad4ef1c..b12f8d398 100644 --- a/cabal.project +++ b/cabal.project @@ -1,9 +1,9 @@ -packages: . +packages: . ../simplexmq source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 628930df1fa1c3fff6fd1413e7b437148c4a83b5 + tag: 60294521f4e7a8faa576872eba140de1a3ffd21c source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index f56ebfa85..a200b8857 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."628930df1fa1c3fff6fd1413e7b437148c4a83b5" = "03h063yahq6b5m1lng7as70a59lklhzsxg0ykmr9wldy8768dlvd"; + "https://github.com/simplex-chat/simplexmq.git"."60294521f4e7a8faa576872eba140de1a3ffd21c" = "1g99q2ds8g5jz14xs3h4xjnh0w0j2bf40adaa5cb6fpiv67fsv7y"; "https://github.com/simplex-chat/aeson.git"."3eb66f9a68f103b5f1489382aad89f5712a64db7" = "0kilkx59fl6c3qy3kjczqvm8c3f4n3p0bdk9biyflf51ljnzp4yp"; "https://github.com/simplex-chat/haskell-terminal.git"."f708b00009b54890172068f168bf98508ffcd495" = "0zmq7lmfsk8m340g47g5963yba7i88n4afa6z93sg9px5jv1mijj"; "https://github.com/zw3rk/android-support.git"."3c3a5ab0b8b137a072c98d3d0937cbdc96918ddb" = "1r6jyxbim3dsvrmakqfyxbd6ms6miaghpbwyl0sr6dzwpgaprz97"; diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index da5f7116c..e6a9276e1 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -50,7 +50,7 @@ import Simplex.Chat.Options (ChatOpts (..), smpServersP) import Simplex.Chat.Protocol import Simplex.Chat.Store import Simplex.Chat.Types -import Simplex.Chat.Util (ifM, safeDecodeUtf8, unlessM, whenM) +import Simplex.Chat.Util (safeDecodeUtf8) import Simplex.Messaging.Agent import Simplex.Messaging.Agent.Env.SQLite (AgentConfig (..), InitialAgentServers (..), defaultAgentConfig) import Simplex.Messaging.Agent.Protocol @@ -60,10 +60,10 @@ import Simplex.Messaging.Encoding.String import Simplex.Messaging.Notifications.Client (NtfServer) import Simplex.Messaging.Notifications.Protocol (DeviceToken (..), PushProvider (..)) import Simplex.Messaging.Parsers (base64P, parseAll) -import Simplex.Messaging.Protocol (ErrorType (..), MsgBody) +import Simplex.Messaging.Protocol (ErrorType (..), MsgBody, MsgFlags (..)) import qualified Simplex.Messaging.Protocol as SMP import qualified Simplex.Messaging.TMap as TM -import Simplex.Messaging.Util (tryError, (<$?>)) +import Simplex.Messaging.Util (ifM, tryError, unlessM, whenM, (<$?>)) import System.Exit (exitFailure, exitSuccess) import System.FilePath (combine, splitExtensions, takeFileName) import System.IO (Handle, IOMode (..), SeekMode (..), hFlush, openFile, stdout) @@ -1132,7 +1132,7 @@ processAgentMessage (Just user@User {userId, profile}) agentConnId agentMessage allowAgentConnection conn confId $ XInfo profile INFO connInfo -> saveConnInfo conn connInfo - MSG meta msgBody -> do + MSG meta _msgFlags msgBody -> do _ <- saveRcvMSG conn (ConnectionId connId) meta msgBody withAckMessage agentConnId meta $ pure () ackMsgDeliveryEvent conn meta @@ -1145,7 +1145,7 @@ processAgentMessage (Just user@User {userId, profile}) agentConnId agentMessage -- TODO add debugging output _ -> pure () Just ct@Contact {localDisplayName = c, contactId} -> case agentMsg of - MSG msgMeta msgBody -> do + MSG msgMeta _msgFlags msgBody -> do msg@RcvMessage {chatMsgEvent} <- saveRcvMSG conn (ConnectionId connId) msgMeta msgBody withAckMessage agentConnId msgMeta $ case chatMsgEvent of @@ -1285,7 +1285,7 @@ processAgentMessage (Just user@User {userId, profile}) agentConnId agentMessage when (connStatus == ConnReady) $ do notifyMemberConnected gInfo m when (memberCategory m == GCPreMember) $ probeMatchingContacts ct - MSG msgMeta msgBody -> do + MSG msgMeta _msgFlags msgBody -> do msg@RcvMessage {chatMsgEvent} <- saveRcvMSG conn (GroupId groupId) msgMeta msgBody withAckMessage agentConnId msgMeta $ case chatMsgEvent of @@ -1344,7 +1344,7 @@ processAgentMessage (Just user@User {userId, profile}) agentConnId agentMessage ci <- withStore $ \st -> getChatItemByFileId st user fileId toView $ CRSndFileRcvCancelled ci ft _ -> throwChatError $ CEFileSend fileId err - MSG meta _ -> + MSG meta _ _ -> withAckMessage agentConnId meta $ pure () -- TODO print errors ERR _ -> pure () @@ -1368,7 +1368,7 @@ processAgentMessage (Just user@User {userId, profile}) agentConnId agentMessage updateCIFileStatus st user fileId CIFSRcvTransfer getChatItemByFileId st user fileId toView $ CRRcvFileStart ci - MSG meta@MsgMeta {recipient = (msgId, _), integrity} msgBody -> withAckMessage agentConnId meta $ do + MSG meta@MsgMeta {recipient = (msgId, _), integrity} _ msgBody -> withAckMessage agentConnId meta $ do parseFileChunk msgBody >>= \case FileChunkCancel -> unless cancelled $ do @@ -1911,7 +1911,7 @@ sendFileChunk user ft@SndFileTransfer {fileId, fileStatus, agentConnId = AgentCo sendFileChunkNo :: ChatMonad m => SndFileTransfer -> Integer -> m () sendFileChunkNo ft@SndFileTransfer {agentConnId = AgentConnId acId} chunkNo = do chunkBytes <- readFileChunk ft chunkNo - msgId <- withAgent $ \a -> sendMessage a acId $ smpEncode FileChunk {chunkNo, chunkBytes} + msgId <- withAgent $ \a -> sendMessage a acId SMP.noMsgFlags $ smpEncode FileChunk {chunkNo, chunkBytes} withStore $ \st -> updateSndFileChunkMsg st ft chunkNo msgId readFileChunk :: ChatMonad m => SndFileTransfer -> Integer -> m ByteString @@ -2005,7 +2005,7 @@ cancelSndFileTransfer ft@SndFileTransfer {agentConnId = AgentConnId acId, fileSt updateSndFileStatus st ft FSCancelled deleteSndFileChunks st ft withAgent $ \a -> do - void (sendMessage a acId $ smpEncode FileChunkCancel) `catchError` \_ -> pure () + void (sendMessage a acId SMP.noMsgFlags $ smpEncode FileChunkCancel) `catchError` \_ -> pure () deleteConnection a acId closeFileHandle :: ChatMonad m => Int64 -> (ChatController -> TVar (Map Int64 Handle)) -> m () @@ -2033,7 +2033,7 @@ sendDirectContactMessage ct@Contact {activeConn = conn@Connection {connId, connS sendDirectMessage :: ChatMonad m => Connection -> ChatMsgEvent -> ConnOrGroupId -> m SndMessage sendDirectMessage conn chatMsgEvent connOrGroupId = do msg@SndMessage {msgId, msgBody} <- createSndMessage chatMsgEvent connOrGroupId - deliverMessage conn msgBody msgId + deliverMessage conn (toCMEventTag chatMsgEvent) msgBody msgId pure msg createSndMessage :: ChatMonad m => ChatMsgEvent -> ConnOrGroupId -> m SndMessage @@ -2046,9 +2046,10 @@ createSndMessage chatMsgEvent connOrGroupId = do directMessage :: ChatMsgEvent -> ByteString directMessage chatMsgEvent = strEncode ChatMessage {msgId = Nothing, chatMsgEvent} -deliverMessage :: ChatMonad m => Connection -> MsgBody -> MessageId -> m () -deliverMessage conn@Connection {connId} msgBody msgId = do - agentMsgId <- withAgent $ \a -> sendMessage a (aConnId conn) msgBody +deliverMessage :: ChatMonad m => Connection -> CMEventTag -> MsgBody -> MessageId -> m () +deliverMessage conn@Connection {connId} cmEventTag msgBody msgId = do + let msgFlags = MsgFlags {notification = hasNotification cmEventTag} + agentMsgId <- withAgent $ \a -> sendMessage a (aConnId conn) msgFlags msgBody let sndMsgDelivery = SndMsgDelivery {connId, agentMsgId} withStore $ \st -> createSndMsgDelivery st sndMsgDelivery msgId @@ -2068,10 +2069,12 @@ sendGroupMessage' members chatMsgEvent groupId introId_ postDeliver = do forM_ (filter memberCurrent members) $ \m@GroupMember {groupMemberId} -> case memberConn m of Nothing -> withStore $ \st -> createPendingGroupMessage st groupMemberId msgId introId_ - Just conn@Connection {connStatus} -> - if not (connStatus == ConnSndReady || connStatus == ConnReady) - then unless (connStatus == ConnDeleted) $ withStore (\st -> createPendingGroupMessage st groupMemberId msgId introId_) - else (deliverMessage conn msgBody msgId >> postDeliver) `catchError` const (pure ()) + Just conn@Connection {connStatus} + | connStatus == ConnSndReady || connStatus == ConnReady -> do + let tag = toCMEventTag chatMsgEvent + (deliverMessage conn tag msgBody msgId >> postDeliver) `catchError` const (pure ()) + | connStatus == ConnDeleted -> pure () + | otherwise -> withStore (\st -> createPendingGroupMessage st groupMemberId msgId introId_) pure msg sendPendingGroupMessages :: ChatMonad m => GroupMember -> Connection -> m () @@ -2079,7 +2082,7 @@ sendPendingGroupMessages GroupMember {groupMemberId, localDisplayName} conn = do pendingMessages <- withStore $ \st -> getPendingGroupMessages st groupMemberId -- TODO ensure order - pending messages interleave with user input messages forM_ pendingMessages $ \PendingGroupMessage {msgId, cmEventTag, msgBody, introId_} -> do - deliverMessage conn msgBody msgId + deliverMessage conn cmEventTag msgBody msgId withStore (\st -> deletePendingGroupMessage st groupMemberId msgId) when (cmEventTag == XGrpMemFwd_) $ case introId_ of Nothing -> throwChatError $ CEGroupMemberIntroNotFound localDisplayName diff --git a/src/Simplex/Chat/Archive.hs b/src/Simplex/Chat/Archive.hs index 31a5714ea..a15ca1bb2 100644 --- a/src/Simplex/Chat/Archive.hs +++ b/src/Simplex/Chat/Archive.hs @@ -6,9 +6,9 @@ module Simplex.Chat.Archive where import qualified Codec.Archive.Zip as Z import Control.Monad.Reader import Simplex.Chat.Controller -import Simplex.Chat.Util (whenM) import Simplex.Messaging.Agent.Client (agentDbPath) import Simplex.Messaging.Agent.Store.SQLite (SQLiteStore (..)) +import Simplex.Messaging.Util (whenM) import System.FilePath import UnliftIO.Directory import UnliftIO.STM diff --git a/src/Simplex/Chat/Messages.hs b/src/Simplex/Chat/Messages.hs index 48c1cb337..e3bad5659 100644 --- a/src/Simplex/Chat/Messages.hs +++ b/src/Simplex/Chat/Messages.hs @@ -32,12 +32,12 @@ import GHC.Generics (Generic) import Simplex.Chat.Markdown import Simplex.Chat.Protocol import Simplex.Chat.Types -import Simplex.Chat.Util (eitherToMaybe, safeDecodeUtf8) +import Simplex.Chat.Util (safeDecodeUtf8) import Simplex.Messaging.Agent.Protocol (AgentErrorType, AgentMsgId, MsgErrorType (..), MsgMeta (..)) import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (dropPrefix, enumJSON, fromTextField_, singleFieldJSON, sumTypeJSON) import Simplex.Messaging.Protocol (MsgBody) -import Simplex.Messaging.Util ((<$?>)) +import Simplex.Messaging.Util (eitherToMaybe, (<$?>)) data ChatType = CTDirect | CTGroup | CTContactRequest | CTContactConnection deriving (Show, Generic) diff --git a/src/Simplex/Chat/Protocol.hs b/src/Simplex/Chat/Protocol.hs index 83b0d8c20..9418d2622 100644 --- a/src/Simplex/Chat/Protocol.hs +++ b/src/Simplex/Chat/Protocol.hs @@ -31,10 +31,10 @@ import Database.SQLite.Simple.ToField (ToField (..)) import GHC.Generics (Generic) import Simplex.Chat.Call import Simplex.Chat.Types -import Simplex.Chat.Util (eitherToMaybe, safeDecodeUtf8) +import Simplex.Chat.Util (safeDecodeUtf8) import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (fromTextField_) -import Simplex.Messaging.Util ((<$?>)) +import Simplex.Messaging.Util (eitherToMaybe, (<$?>)) data ConnectionEntity = RcvDirectMsgConnection {entityConnection :: Connection, contact :: Maybe Contact} @@ -437,6 +437,16 @@ instance FromField CMEventTag where fromField = fromTextField_ cmEventTagT instance ToField CMEventTag where toField = toField . serializeCMEventTag +hasNotification :: CMEventTag -> Bool +hasNotification = \case + XMsgNew_ -> True + XFile_ -> True + XContact_ -> True + XGrpInv_ -> True + XGrpDel_ -> True + XCallInv_ -> True + _ -> False + appToChatMessage :: AppMessage -> Either String ChatMessage appToChatMessage AppMessage {msgId, event, params} = do eventTag <- strDecode $ encodeUtf8 event diff --git a/src/Simplex/Chat/Store.hs b/src/Simplex/Chat/Store.hs index aadac15c9..f6b4c7a1e 100644 --- a/src/Simplex/Chat/Store.hs +++ b/src/Simplex/Chat/Store.hs @@ -206,7 +206,6 @@ import Simplex.Chat.Migrations.M20220404_files_status_fields import Simplex.Chat.Migrations.M20220514_profiles_user_id import Simplex.Chat.Protocol import Simplex.Chat.Types -import Simplex.Chat.Util (eitherToMaybe) import Simplex.Messaging.Agent.Protocol (AgentMsgId, ConnId, InvitationId, MsgMeta (..)) import Simplex.Messaging.Agent.Store.SQLite (SQLiteStore (..), createSQLiteStore, firstRow, withTransaction) import Simplex.Messaging.Agent.Store.SQLite.Migrations (Migration (..)) @@ -214,7 +213,7 @@ import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Encoding.String (StrEncoding (strEncode)) import Simplex.Messaging.Parsers (dropPrefix, sumTypeJSON) import Simplex.Messaging.Protocol (ProtocolServer (..), SMPServer, pattern SMPServer) -import Simplex.Messaging.Util (liftIOEither, (<$$>)) +import Simplex.Messaging.Util (eitherToMaybe, liftIOEither, (<$$>)) import UnliftIO.STM schemaMigrations :: [(String, Query)] diff --git a/src/Simplex/Chat/Util.hs b/src/Simplex/Chat/Util.hs index a5e4c8b1e..d2fe0c3d4 100644 --- a/src/Simplex/Chat/Util.hs +++ b/src/Simplex/Chat/Util.hs @@ -1,6 +1,5 @@ module Simplex.Chat.Util where -import Control.Monad (when) import Data.ByteString.Char8 (ByteString) import Data.Text (Text) import Data.Text.Encoding (decodeUtf8With) @@ -9,15 +8,3 @@ safeDecodeUtf8 :: ByteString -> Text safeDecodeUtf8 = decodeUtf8With onError where onError _ _ = Just '?' - -ifM :: Monad m => m Bool -> m a -> m a -> m a -ifM ba t f = ba >>= \b -> if b then t else f - -whenM :: Monad m => m Bool -> m () -> m () -whenM ba a = ba >>= (`when` a) - -unlessM :: Monad m => m Bool -> m () -> m () -unlessM b = ifM b $ pure () - -eitherToMaybe :: Either a b -> Maybe b -eitherToMaybe = either (const Nothing) Just diff --git a/stack.yaml b/stack.yaml index eac63e18a..e6e2417f5 100644 --- a/stack.yaml +++ b/stack.yaml @@ -49,7 +49,7 @@ extra-deps: # - simplexmq-1.0.0@sha256:34b2004728ae396e3ae449cd090ba7410781e2b3cefc59259915f4ca5daa9ea8,8561 # - ../simplexmq - github: simplex-chat/simplexmq - commit: 628930df1fa1c3fff6fd1413e7b437148c4a83b5 + commit: 60294521f4e7a8faa576872eba140de1a3ffd21c # - terminal-0.2.0.0@sha256:de6770ecaae3197c66ac1f0db5a80cf5a5b1d3b64a66a05b50f442de5ad39570,2977 - github: simplex-chat/aeson commit: 3eb66f9a68f103b5f1489382aad89f5712a64db7 diff --git a/tests/ChatTests.hs b/tests/ChatTests.hs index 03c7991c8..23f4d1bb4 100644 --- a/tests/ChatTests.hs +++ b/tests/ChatTests.hs @@ -20,7 +20,7 @@ import Simplex.Chat.Call import Simplex.Chat.Controller (ChatController (..)) import Simplex.Chat.Options (ChatOpts (..)) import Simplex.Chat.Types (ConnStatus (..), ImageData (..), Profile (..), User (..)) -import Simplex.Chat.Util (unlessM) +import Simplex.Messaging.Util (unlessM) import System.Directory (copyFile, doesDirectoryExist, doesFileExist) import System.FilePath (()) import Test.Hspec From 716a941dc671b6605df17d316dbc4cccb3d2b443 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Thu, 9 Jun 2022 14:52:12 +0100 Subject: [PATCH 12/14] core: use duplex handshake (agent v2) (#735) * core: use duplex handshake (agent v2) * version test matrix * update simplexmq --- cabal.project | 4 +- scripts/nix/sha256map.nix | 2 +- stack.yaml | 2 +- tests/ChatClient.hs | 92 +++++++++---- tests/ChatTests.hs | 277 +++++++++++++++++++++++++++++--------- tests/ProtocolTests.hs | 3 +- 6 files changed, 289 insertions(+), 91 deletions(-) diff --git a/cabal.project b/cabal.project index b12f8d398..b7a510848 100644 --- a/cabal.project +++ b/cabal.project @@ -1,9 +1,9 @@ -packages: . ../simplexmq +packages: . source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 60294521f4e7a8faa576872eba140de1a3ffd21c + tag: c1348aa54fba292d34339d6b111572cb1c74b546 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index a200b8857..b8da2b302 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."60294521f4e7a8faa576872eba140de1a3ffd21c" = "1g99q2ds8g5jz14xs3h4xjnh0w0j2bf40adaa5cb6fpiv67fsv7y"; + "https://github.com/simplex-chat/simplexmq.git"."c1348aa54fba292d34339d6b111572cb1c74b546" = "103hw1h1agy42krf11d98bv3c1w0q0wi2z7r2ll0gmp5xv1r4rf0"; "https://github.com/simplex-chat/aeson.git"."3eb66f9a68f103b5f1489382aad89f5712a64db7" = "0kilkx59fl6c3qy3kjczqvm8c3f4n3p0bdk9biyflf51ljnzp4yp"; "https://github.com/simplex-chat/haskell-terminal.git"."f708b00009b54890172068f168bf98508ffcd495" = "0zmq7lmfsk8m340g47g5963yba7i88n4afa6z93sg9px5jv1mijj"; "https://github.com/zw3rk/android-support.git"."3c3a5ab0b8b137a072c98d3d0937cbdc96918ddb" = "1r6jyxbim3dsvrmakqfyxbd6ms6miaghpbwyl0sr6dzwpgaprz97"; diff --git a/stack.yaml b/stack.yaml index e6e2417f5..009891d42 100644 --- a/stack.yaml +++ b/stack.yaml @@ -49,7 +49,7 @@ extra-deps: # - simplexmq-1.0.0@sha256:34b2004728ae396e3ae449cd090ba7410781e2b3cefc59259915f4ca5daa9ea8,8561 # - ../simplexmq - github: simplex-chat/simplexmq - commit: 60294521f4e7a8faa576872eba140de1a3ffd21c + commit: c1348aa54fba292d34339d6b111572cb1c74b546 # - terminal-0.2.0.0@sha256:de6770ecaae3197c66ac1f0db5a80cf5a5b1d3b64a66a05b50f442de5ad39570,2977 - github: simplex-chat/aeson commit: 3eb66f9a68f103b5f1489382aad89f5712a64db7 diff --git a/tests/ChatClient.hs b/tests/ChatClient.hs index 7c5ebc6c1..d5a44b448 100644 --- a/tests/ChatClient.hs +++ b/tests/ChatClient.hs @@ -30,6 +30,7 @@ import Simplex.Messaging.Agent.RetryInterval import Simplex.Messaging.Server (runSMPServerBlocking) import Simplex.Messaging.Server.Env.STM import Simplex.Messaging.Transport +import Simplex.Messaging.Version import System.Directory (createDirectoryIfMissing, removePathForcibly) import qualified System.Terminal as C import System.Terminal.Internal (VirtualTerminal (..), VirtualTerminalSettings (..), withVirtualTerminal) @@ -75,30 +76,42 @@ data TestCC = TestCC aCfg :: AgentConfig aCfg = agentConfig defaultChatConfig -cfg :: ChatConfig -cfg = +testAgentCfg :: AgentConfig +testAgentCfg = aCfg {reconnectInterval = (reconnectInterval aCfg) {initialInterval = 50000}} + +testCfg :: ChatConfig +testCfg = defaultChatConfig - { agentConfig = - aCfg {reconnectInterval = (reconnectInterval aCfg) {initialInterval = 50000}}, + { agentConfig = testAgentCfg, testView = True } -createTestChat :: ChatOpts -> String -> Profile -> IO TestCC -createTestChat opts dbPrefix profile = do +testAgentCfgV1 :: AgentConfig +testAgentCfgV1 = + testAgentCfg + { smpAgentVersion = 1, + smpAgentVRange = mkVersionRange 1 1 + } + +testCfgV1 :: ChatConfig +testCfgV1 = testCfg {agentConfig = testAgentCfgV1} + +createTestChat :: ChatConfig -> ChatOpts -> String -> Profile -> IO TestCC +createTestChat cfg opts dbPrefix profile = do let dbFilePrefix = testDBPrefix <> dbPrefix st <- createStore (dbFilePrefix <> "_chat.db") 1 False Right user <- runExceptT $ createUser st profile True - startTestChat_ st opts dbFilePrefix user + startTestChat_ st cfg opts dbFilePrefix user -startTestChat :: ChatOpts -> String -> IO TestCC -startTestChat opts dbPrefix = do +startTestChat :: ChatConfig -> ChatOpts -> String -> IO TestCC +startTestChat cfg opts dbPrefix = do let dbFilePrefix = testDBPrefix <> dbPrefix st <- createStore (dbFilePrefix <> "_chat.db") 1 False Just user <- find activeUser <$> getUsers st - startTestChat_ st opts dbFilePrefix user + startTestChat_ st cfg opts dbFilePrefix user -startTestChat_ :: SQLiteStore -> ChatOpts -> FilePath -> User -> IO TestCC -startTestChat_ st opts dbFilePrefix user = do +startTestChat_ :: SQLiteStore -> ChatConfig -> ChatOpts -> FilePath -> User -> IO TestCC +startTestChat_ st cfg opts dbFilePrefix user = do t <- withVirtualTerminal termSettings pure ct <- newChatTerminal t cc <- newChatController st (Just user) cfg opts {dbFilePrefix} Nothing -- no notifications @@ -114,16 +127,34 @@ stopTestChat TestCC {chatController = cc, chatAsync, termAsync} = do uninterruptibleCancel chatAsync withNewTestChat :: String -> Profile -> (TestCC -> IO a) -> IO a -withNewTestChat = withNewTestChatOpts testOpts +withNewTestChat = withNewTestChatCfgOpts testCfg testOpts + +withNewTestChatV1 :: String -> Profile -> (TestCC -> IO a) -> IO a +withNewTestChatV1 = withNewTestChatCfg testCfgV1 + +withNewTestChatCfg :: ChatConfig -> String -> Profile -> (TestCC -> IO a) -> IO a +withNewTestChatCfg cfg = withNewTestChatCfgOpts cfg testOpts withNewTestChatOpts :: ChatOpts -> String -> Profile -> (TestCC -> IO a) -> IO a -withNewTestChatOpts opts dbPrefix profile = bracket (createTestChat opts dbPrefix profile) (\cc -> cc > stopTestChat cc) +withNewTestChatOpts = withNewTestChatCfgOpts testCfg + +withNewTestChatCfgOpts :: ChatConfig -> ChatOpts -> String -> Profile -> (TestCC -> IO a) -> IO a +withNewTestChatCfgOpts cfg opts dbPrefix profile = bracket (createTestChat cfg opts dbPrefix profile) (\cc -> cc > stopTestChat cc) + +withTestChatV1 :: String -> (TestCC -> IO a) -> IO a +withTestChatV1 = withTestChatCfg testCfgV1 withTestChat :: String -> (TestCC -> IO a) -> IO a -withTestChat = withTestChatOpts testOpts +withTestChat = withTestChatCfgOpts testCfg testOpts + +withTestChatCfg :: ChatConfig -> String -> (TestCC -> IO a) -> IO a +withTestChatCfg cfg = withTestChatCfgOpts cfg testOpts withTestChatOpts :: ChatOpts -> String -> (TestCC -> IO a) -> IO a -withTestChatOpts opts dbPrefix = bracket (startTestChat opts dbPrefix) (\cc -> cc > stopTestChat cc) +withTestChatOpts = withTestChatCfgOpts testCfg + +withTestChatCfgOpts :: ChatConfig -> ChatOpts -> String -> (TestCC -> IO a) -> IO a +withTestChatCfgOpts cfg opts dbPrefix = bracket (startTestChat cfg opts dbPrefix) (\cc -> cc > stopTestChat cc) readTerminalOutput :: VirtualTerminal -> TQueue String -> IO () readTerminalOutput t termQ = do @@ -154,8 +185,8 @@ withTmpFiles = (createDirectoryIfMissing False "tests/tmp") (removePathForcibly "tests/tmp") -testChatN :: ChatOpts -> [Profile] -> ([TestCC] -> IO ()) -> IO () -testChatN opts ps test = withTmpFiles $ do +testChatN :: ChatConfig -> ChatOpts -> [Profile] -> ([TestCC] -> IO ()) -> IO () +testChatN cfg opts ps test = withTmpFiles $ do tcs <- getTestCCs (zip ps [1 ..]) [] test tcs concurrentlyN_ $ map ( [TestCC] -> IO [TestCC] getTestCCs [] tcs = pure tcs - getTestCCs ((p, db) : envs') tcs = (:) <$> createTestChat opts (show db) p <*> getTestCCs envs' tcs + getTestCCs ((p, db) : envs') tcs = (:) <$> createTestChat cfg opts (show db) p <*> getTestCCs envs' tcs ( Int -> Expectation ( IO [Char] userName (TestCC ChatController {currentUser} _ _ _ _) = T.unpack . localDisplayName . fromJust <$> readTVarIO currentUser testChat2 :: Profile -> Profile -> (TestCC -> TestCC -> IO ()) -> IO () -testChat2 = testChatOpts2 testOpts +testChat2 = testChatCfgOpts2 testCfg testOpts + +testChatCfg2 :: ChatConfig -> Profile -> Profile -> (TestCC -> TestCC -> IO ()) -> IO () +testChatCfg2 cfg = testChatCfgOpts2 cfg testOpts testChatOpts2 :: ChatOpts -> Profile -> Profile -> (TestCC -> TestCC -> IO ()) -> IO () -testChatOpts2 opts p1 p2 test = testChatN opts [p1, p2] test_ +testChatOpts2 = testChatCfgOpts2 testCfg + +testChatCfgOpts2 :: ChatConfig -> ChatOpts -> Profile -> Profile -> (TestCC -> TestCC -> IO ()) -> IO () +testChatCfgOpts2 cfg opts p1 p2 test = testChatN cfg opts [p1, p2] test_ where test_ :: [TestCC] -> IO () test_ [tc1, tc2] = test tc1 tc2 test_ _ = error "expected 2 chat clients" testChat3 :: Profile -> Profile -> Profile -> (TestCC -> TestCC -> TestCC -> IO ()) -> IO () -testChat3 p1 p2 p3 test = testChatN testOpts [p1, p2, p3] test_ +testChat3 = testChatCfgOpts3 testCfg testOpts + +testChatCfg3 :: ChatConfig -> Profile -> Profile -> Profile -> (TestCC -> TestCC -> TestCC -> IO ()) -> IO () +testChatCfg3 cfg = testChatCfgOpts3 cfg testOpts + +testChatCfgOpts3 :: ChatConfig -> ChatOpts -> Profile -> Profile -> Profile -> (TestCC -> TestCC -> TestCC -> IO ()) -> IO () +testChatCfgOpts3 cfg opts p1 p2 p3 test = testChatN cfg opts [p1, p2, p3] test_ where test_ :: [TestCC] -> IO () test_ [tc1, tc2, tc3] = test tc1 tc2 tc3 test_ _ = error "expected 3 chat clients" testChat4 :: Profile -> Profile -> Profile -> Profile -> (TestCC -> TestCC -> TestCC -> TestCC -> IO ()) -> IO () -testChat4 p1 p2 p3 p4 test = testChatN testOpts [p1, p2, p3, p4] test_ +testChat4 p1 p2 p3 p4 test = testChatN testCfg testOpts [p1, p2, p3, p4] test_ where test_ :: [TestCC] -> IO () test_ [tc1, tc2, tc3, tc4] = test tc1 tc2 tc3 tc4 @@ -226,7 +269,8 @@ serverCfg = privateKeyFile = "tests/fixtures/tls/server.key", certificateFile = "tests/fixtures/tls/server.crt", logStatsInterval = Just 86400, - logStatsStartTime = 0 + logStatsStartTime = 0, + smpServerVRange = supportedSMPServerVRange } withSmpServer :: IO a -> IO a diff --git a/tests/ChatTests.hs b/tests/ChatTests.hs index 23f4d1bb4..124f866e9 100644 --- a/tests/ChatTests.hs +++ b/tests/ChatTests.hs @@ -40,12 +40,12 @@ danProfile = Profile {displayName = "dan", fullName = "Daniel", image = Nothing} chatTests :: Spec chatTests = do describe "direct messages" $ do - it "add contact and send/receive message" testAddContact + describe "add contact and send/receive message" testAddContact it "direct message quoted replies" testDirectMessageQuotedReply it "direct message update" testDirectMessageUpdate it "direct message delete" testDirectMessageDelete describe "chat groups" $ do - it "add contacts, create group and send/receive messages" testGroup + describe "add contacts, create group and send/receive messages" testGroup it "create and join group with 4 members" testGroup2 it "create and delete group" testGroupDelete it "invitee delete group when in status invited" testGroupDeleteWhenInvited @@ -67,16 +67,16 @@ chatTests = do it "send and receive file to group" testGroupFileTransfer it "sender cancelled group file transfer before transfer" testGroupFileSndCancelBeforeTransfer describe "messages with files" $ do - it "send and receive message with file" testMessageWithFile + describe "send and receive message with file" testMessageWithFile it "send and receive image" testSendImage it "files folder: send and receive image" testFilesFoldersSendImage it "files folder: sender deleted file during transfer" testFilesFoldersImageSndDelete it "files folder: recipient deleted file during transfer" testFilesFoldersImageRcvDelete it "send and receive image with text and quote" testSendImageWithTextAndQuote - it "send and receive image to group" testGroupSendImage + describe "send and receive image to group" testGroupSendImage it "send and receive image with text and quote to group" testGroupSendImageWithTextAndQuote describe "user contact link" $ do - it "create and connect via contact link" testUserContactLink + describe "create and connect via contact link" testUserContactLink it "auto accept contact requests" testUserContactLinkAutoAccept it "deduplicate contact requests" testDeduplicateContactRequests it "deduplicate contact requests with profile change" testDeduplicateContactRequestsProfileChange @@ -87,20 +87,64 @@ chatTests = do describe "async connection handshake" $ do it "connect when initiating client goes offline" testAsyncInitiatingOffline it "connect when accepting client goes offline" testAsyncAcceptingOffline - it "connect, fully asynchronous (when clients are never simultaneously online)" testFullAsync - xdescribe "async sending and receiving files" $ do - it "send and receive file, fully asynchronous" testAsyncFileTransfer - it "send and receive file to group, fully asynchronous" testAsyncGroupFileTransfer + describe "connect, fully asynchronous (when clients are never simultaneously online)" $ do + it "v2" testFullAsync + it "v1" testFullAsyncV1 + it "v1 to v2" testFullAsyncV1toV2 + it "v2 to v1" testFullAsyncV2toV1 + describe "async sending and receiving files" $ do + xdescribe "send and receive file, fully asynchronous" $ do + it "v2" testAsyncFileTransfer + it "v1" testAsyncFileTransferV1 + xit "send and receive file to group, fully asynchronous" testAsyncGroupFileTransfer describe "webrtc calls api" $ do it "negotiate call" testNegotiateCall describe "maintenance mode" $ do it "start/stop/export/import chat" testMaintenanceMode it "export/import chat with files" testMaintenanceModeWithFiles -testAddContact :: IO () -testAddContact = - testChat2 aliceProfile bobProfile $ - \alice bob -> do +versionTestMatrix2 :: (TestCC -> TestCC -> IO ()) -> Spec +versionTestMatrix2 runTest = do + it "v2" $ testChat2 aliceProfile bobProfile $ runTest + it "v1" $ testChatCfg2 testCfgV1 aliceProfile bobProfile $ runTest + it "v1 to v2" . withTmpFiles $ + withNewTestChat "alice" aliceProfile $ \alice -> + withNewTestChatV1 "bob" bobProfile $ \bob -> + runTest alice bob + it "v2 to v1" . withTmpFiles $ + withNewTestChatV1 "alice" aliceProfile $ \alice -> + withNewTestChat "bob" bobProfile $ \bob -> + runTest alice bob + +versionTestMatrix3 :: (TestCC -> TestCC -> TestCC -> IO ()) -> Spec +versionTestMatrix3 runTest = do + it "v2" $ testChat3 aliceProfile bobProfile cathProfile $ runTest + it "v1" $ testChatCfg3 testCfgV1 aliceProfile bobProfile cathProfile $ runTest + it "v1 to v2" . withTmpFiles $ + withNewTestChat "alice" aliceProfile $ \alice -> + withNewTestChatV1 "bob" bobProfile $ \bob -> + withNewTestChatV1 "cath" cathProfile $ \cath -> + runTest alice bob cath + it "v2+v1 to v2" . withTmpFiles $ + withNewTestChat "alice" aliceProfile $ \alice -> + withNewTestChat "bob" bobProfile $ \bob -> + withNewTestChatV1 "cath" cathProfile $ \cath -> + runTest alice bob cath + it "v2 to v1" . withTmpFiles $ + withNewTestChatV1 "alice" aliceProfile $ \alice -> + withNewTestChat "bob" bobProfile $ \bob -> + withNewTestChat "cath" cathProfile $ \cath -> + runTest alice bob cath + it "v2+v1 to v1" . withTmpFiles $ + withNewTestChatV1 "alice" aliceProfile $ \alice -> + withNewTestChat "bob" bobProfile $ \bob -> + withNewTestChatV1 "cath" cathProfile $ \cath -> + runTest alice bob cath + +testAddContact :: Spec +testAddContact = versionTestMatrix2 runTestAddContact + where + runTestAddContact alice bob = do alice ##> "/c" inv <- getInvitation alice bob ##> ("/c " <> inv) @@ -141,7 +185,6 @@ testAddContact = alice #$> ("/_get chat @2 count=100", chat, []) bob #$> ("/clear alice", id, "alice: all messages are removed locally ONLY") bob #$> ("/_get chat @2 count=100", chat, []) - where chatsEmpty alice bob = do alice @@@ [("@bob", "")] alice #$> ("/_get chat @2 count=100", chat, []) @@ -313,10 +356,10 @@ testDirectMessageDelete = bob @@@ [("@alice", "do you receive my messages?")] bob #$> ("/_get chat @2 count=100", chat', [((0, "hello 🙂"), Nothing), ((1, "do you receive my messages?"), Just (0, "hello 🙂"))]) -testGroup :: IO () -testGroup = - testChat3 aliceProfile bobProfile cathProfile $ - \alice bob cath -> do +testGroup :: Spec +testGroup = versionTestMatrix3 runTestGroup + where + runTestGroup alice bob cath = do connectUsers alice bob connectUsers alice cath alice ##> "/g team" @@ -407,7 +450,7 @@ testGroup = bob #$> ("/_get chat #1 count=100", chat, []) cath #$> ("/clear #team", id, "#team: all messages are removed locally ONLY") cath #$> ("/_get chat #1 count=100", chat, []) - where + getReadChats :: TestCC -> TestCC -> TestCC -> IO () getReadChats alice bob cath = do alice @@@ [("#team", "hey team"), ("@cath", ""), ("@bob", "")] alice #$> ("/_get chat #1 count=100", chat, [(1, "hello"), (0, "hi there"), (0, "hey team")]) @@ -1204,10 +1247,10 @@ testGroupFileSndCancelBeforeTransfer = bob ##> "/fr 1 ./tests/tmp" bob <## "file cancelled: test.txt" -testMessageWithFile :: IO () -testMessageWithFile = - testChat2 aliceProfile bobProfile $ - \alice bob -> do +testMessageWithFile :: Spec +testMessageWithFile = versionTestMatrix2 runTestMessageWithFile + where + runTestMessageWithFile alice bob = do connectUsers alice bob alice ##> "/_send @2 json {\"filePath\": \"./tests/fixtures/test.jpg\", \"msgContent\": {\"type\": \"text\", \"text\": \"hi, sending a file\"}}" alice <# "@bob hi, sending a file" @@ -1415,10 +1458,10 @@ testSendImageWithTextAndQuote = (alice <## "completed sending file 3 (test.jpg) to bob") B.readFile "./tests/tmp/test_1.jpg" `shouldReturn` src -testGroupSendImage :: IO () -testGroupSendImage = - testChat3 aliceProfile bobProfile cathProfile $ - \alice bob cath -> do +testGroupSendImage :: Spec +testGroupSendImage = versionTestMatrix3 runTestGroupSendImage + where + runTestGroupSendImage alice bob cath = do createGroup3 "team" alice bob cath alice ##> "/_send #1 json {\"filePath\": \"./tests/fixtures/test.jpg\", \"msgContent\": {\"text\":\"\",\"type\":\"image\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=\"}}" alice <# "/f #team ./tests/fixtures/test.jpg" @@ -1519,32 +1562,31 @@ testGroupSendImageWithTextAndQuote = cath #$> ("/_get chat #1 count=100", chat'', [((0, "hi team"), Nothing, Nothing), ((0, "hey bob"), Just (0, "hi team"), Just "./tests/tmp/test_1.jpg")]) cath @@@ [("#team", "hey bob"), ("@alice", ""), ("@bob", "")] -testUserContactLink :: IO () -testUserContactLink = testChat3 aliceProfile bobProfile cathProfile $ - \alice bob cath -> do - alice ##> "/ad" - cLink <- getContactLink alice True - bob ##> ("/c " <> cLink) - alice <#? bob - alice @@@ [("<@bob", "")] - alice ##> "/ac bob" - alice <## "bob (Bob): accepting contact request..." - concurrently_ - (bob <## "alice (Alice): contact is connected") - (alice <## "bob (Bob): contact is connected") - alice @@@ [("@bob", "")] - alice <##> bob +testUserContactLink :: Spec +testUserContactLink = versionTestMatrix3 $ \alice bob cath -> do + alice ##> "/ad" + cLink <- getContactLink alice True + bob ##> ("/c " <> cLink) + alice <#? bob + alice @@@ [("<@bob", "")] + alice ##> "/ac bob" + alice <## "bob (Bob): accepting contact request..." + concurrently_ + (bob <## "alice (Alice): contact is connected") + (alice <## "bob (Bob): contact is connected") + alice @@@ [("@bob", "")] + alice <##> bob - cath ##> ("/c " <> cLink) - alice <#? cath - alice @@@ [("<@cath", ""), ("@bob", "hey")] - alice ##> "/ac cath" - alice <## "cath (Catherine): accepting contact request..." - concurrently_ - (cath <## "alice (Alice): contact is connected") - (alice <## "cath (Catherine): contact is connected") - alice @@@ [("@cath", ""), ("@bob", "hey")] - alice <##> cath + cath ##> ("/c " <> cLink) + alice <#? cath + alice @@@ [("<@cath", ""), ("@bob", "hey")] + alice ##> "/ac cath" + alice <## "cath (Catherine): accepting contact request..." + concurrently_ + (cath <## "alice (Alice): contact is connected") + (alice <## "cath (Catherine): contact is connected") + alice @@@ [("@cath", ""), ("@bob", "hey")] + alice <##> cath testUserContactLinkAutoAccept :: IO () testUserContactLinkAutoAccept = @@ -1808,11 +1850,8 @@ testFullAsync = withTmpFiles $ do withNewTestChat "bob" bobProfile $ \bob -> do bob ##> ("/c " <> inv) bob <## "confirmation sent!" - withTestChat "alice" $ \_ -> pure () - withTestChat "bob" $ \_ -> pure () - withTestChat "alice" $ \alice -> - alice <## "1 contacts connected (use /cs for the list)" - withTestChat "bob" $ \_ -> pure () + withTestChat "alice" $ \_ -> pure () -- connecting... notification in UI + withTestChat "bob" $ \_ -> pure () -- connecting... notification in UI withTestChat "alice" $ \alice -> do alice <## "1 contacts connected (use /cs for the list)" alice <## "bob (Bob): contact is connected" @@ -1820,6 +1859,81 @@ testFullAsync = withTmpFiles $ do bob <## "1 contacts connected (use /cs for the list)" bob <## "alice (Alice): contact is connected" +testFullAsyncV1 :: IO () +testFullAsyncV1 = withTmpFiles $ do + inv <- withNewAlice $ \alice -> do + alice ##> "/c" + getInvitation alice + withNewBob $ \bob -> do + bob ##> ("/c " <> inv) + bob <## "confirmation sent!" + withAlice $ \_ -> pure () + withBob $ \_ -> pure () + withAlice $ \alice -> + alice <## "1 contacts connected (use /cs for the list)" + withBob $ \_ -> pure () + withAlice $ \alice -> do + alice <## "1 contacts connected (use /cs for the list)" + alice <## "bob (Bob): contact is connected" + withBob $ \bob -> do + bob <## "1 contacts connected (use /cs for the list)" + bob <## "alice (Alice): contact is connected" + where + withNewAlice = withNewTestChatV1 "alice" aliceProfile + withAlice = withTestChatV1 "alice" + withNewBob = withNewTestChatV1 "bob" bobProfile + withBob = withTestChatV1 "bob" + +testFullAsyncV1toV2 :: IO () +testFullAsyncV1toV2 = withTmpFiles $ do + inv <- withNewAlice $ \alice -> do + alice ##> "/c" + getInvitation alice + withNewBob $ \bob -> do + bob ##> ("/c " <> inv) + bob <## "confirmation sent!" + withAlice $ \_ -> pure () + withBob $ \_ -> pure () + withAlice $ \alice -> + alice <## "1 contacts connected (use /cs for the list)" + withBob $ \_ -> pure () + withAlice $ \alice -> do + alice <## "1 contacts connected (use /cs for the list)" + alice <## "bob (Bob): contact is connected" + withBob $ \bob -> do + bob <## "1 contacts connected (use /cs for the list)" + bob <## "alice (Alice): contact is connected" + where + withNewAlice = withNewTestChat "alice" aliceProfile + withAlice = withTestChat "alice" + withNewBob = withNewTestChatV1 "bob" bobProfile + withBob = withTestChatV1 "bob" + +testFullAsyncV2toV1 :: IO () +testFullAsyncV2toV1 = withTmpFiles $ do + inv <- withNewAlice $ \alice -> do + alice ##> "/c" + getInvitation alice + withNewBob $ \bob -> do + bob ##> ("/c " <> inv) + bob <## "confirmation sent!" + withAlice $ \_ -> pure () + withBob $ \_ -> pure () + withAlice $ \alice -> + alice <## "1 contacts connected (use /cs for the list)" + withBob $ \_ -> pure () + withAlice $ \alice -> do + alice <## "1 contacts connected (use /cs for the list)" + alice <## "bob (Bob): contact is connected" + withBob $ \bob -> do + bob <## "1 contacts connected (use /cs for the list)" + bob <## "alice (Alice): contact is connected" + where + withNewAlice = withNewTestChatV1 "alice" aliceProfile + withAlice = withTestChatV1 "alice" + withNewBob = withNewTestChat "bob" bobProfile + withBob = withTestChat "bob" + testAsyncFileTransfer :: IO () testAsyncFileTransfer = withTmpFiles $ do withNewTestChat "alice" aliceProfile $ \alice -> @@ -1836,8 +1950,8 @@ testAsyncFileTransfer = withTmpFiles $ do bob <## "use /fr 1 [/ | ] to receive it" bob ##> "/fr 1 ./tests/tmp" bob <## "saving file 1 from alice to ./tests/tmp/test.jpg" - withTestChatContactConnected' "alice" - withTestChatContactConnected' "bob" + -- withTestChatContactConnected' "alice" -- TODO not needed in v2 + -- withTestChatContactConnected' "bob" -- TODO not needed in v2 withTestChatContactConnected' "alice" withTestChatContactConnected' "bob" withTestChatContactConnected "alice" $ \alice -> do @@ -1850,6 +1964,36 @@ testAsyncFileTransfer = withTmpFiles $ do dest <- B.readFile "./tests/tmp/test.jpg" dest `shouldBe` src +testAsyncFileTransferV1 :: IO () +testAsyncFileTransferV1 = withTmpFiles $ do + withNewTestChatV1 "alice" aliceProfile $ \alice -> + withNewTestChatV1 "bob" bobProfile $ \bob -> + connectUsers alice bob + withTestChatContactConnectedV1 "alice" $ \alice -> do + alice ##> "/_send @2 json {\"filePath\": \"./tests/fixtures/test.jpg\", \"msgContent\": {\"type\":\"text\", \"text\": \"hi, sending a file\"}}" + alice <# "@bob hi, sending a file" + alice <# "/f @bob ./tests/fixtures/test.jpg" + alice <## "use /fc 1 to cancel sending" + withTestChatContactConnectedV1 "bob" $ \bob -> do + bob <# "alice> hi, sending a file" + bob <# "alice> sends file test.jpg (136.5 KiB / 139737 bytes)" + bob <## "use /fr 1 [/ | ] to receive it" + bob ##> "/fr 1 ./tests/tmp" + bob <## "saving file 1 from alice to ./tests/tmp/test.jpg" + withTestChatContactConnectedV1' "alice" -- TODO not needed in v2 + withTestChatContactConnectedV1' "bob" -- TODO not needed in v2 + withTestChatContactConnectedV1' "alice" + withTestChatContactConnectedV1' "bob" + withTestChatContactConnectedV1 "alice" $ \alice -> do + alice <## "started sending file 1 (test.jpg) to bob" + alice <## "completed sending file 1 (test.jpg) to bob" + withTestChatContactConnectedV1 "bob" $ \bob -> do + bob <## "started receiving file 1 (test.jpg) from alice" + bob <## "completed receiving file 1 (test.jpg) from alice" + src <- B.readFile "./tests/fixtures/test.jpg" + dest <- B.readFile "./tests/tmp/test.jpg" + dest `shouldBe` src + testAsyncGroupFileTransfer :: IO () testAsyncGroupFileTransfer = withTmpFiles $ do withNewTestChat "alice" aliceProfile $ \alice -> @@ -1873,9 +2017,9 @@ testAsyncGroupFileTransfer = withTmpFiles $ do withTestChatGroup3Connected' "alice" withTestChatGroup3Connected' "bob" withTestChatGroup3Connected' "cath" - withTestChatGroup3Connected' "alice" - withTestChatGroup3Connected' "bob" - withTestChatGroup3Connected' "cath" + -- withTestChatGroup3Connected' "alice" -- TODO not needed in v2 + -- withTestChatGroup3Connected' "bob" -- TODO not needed in v2 + -- withTestChatGroup3Connected' "cath" -- TODO not needed in v2 withTestChatGroup3Connected' "alice" withTestChatGroup3Connected "bob" $ \bob -> do bob <## "started receiving file 1 (test.jpg) from alice" @@ -2052,6 +2196,15 @@ withTestChatContactConnected dbPrefix action = withTestChatContactConnected' :: String -> IO () withTestChatContactConnected' dbPrefix = withTestChatContactConnected dbPrefix $ \_ -> pure () +withTestChatContactConnectedV1 :: String -> (TestCC -> IO a) -> IO a +withTestChatContactConnectedV1 dbPrefix action = + withTestChatV1 dbPrefix $ \cc -> do + cc <## "1 contacts connected (use /cs for the list)" + action cc + +withTestChatContactConnectedV1' :: String -> IO () +withTestChatContactConnectedV1' dbPrefix = withTestChatContactConnectedV1 dbPrefix $ \_ -> pure () + withTestChatGroup3Connected :: String -> (TestCC -> IO a) -> IO a withTestChatGroup3Connected dbPrefix action = do withTestChat dbPrefix $ \cc -> do diff --git a/tests/ProtocolTests.hs b/tests/ProtocolTests.hs index 3b615ddff..1be897fec 100644 --- a/tests/ProtocolTests.hs +++ b/tests/ProtocolTests.hs @@ -16,6 +16,7 @@ import Simplex.Messaging.Crypto.Ratchet import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (parseAll) import Simplex.Messaging.Protocol (ProtocolServer (..), smpClientVRange) +import Simplex.Messaging.Version import Test.Hspec protocolTests :: Spec @@ -42,7 +43,7 @@ connReqData :: ConnReqUriData connReqData = ConnReqUriData { crScheme = simplexChat, - crAgentVRange = smpAgentVRange, + crAgentVRange = mkVersionRange 1 1, crSmpQueues = [queue] } From 121541759ba498f67b84142cad8536976c980c86 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Thu, 9 Jun 2022 14:52:55 +0100 Subject: [PATCH 13/14] ios: update library --- apps/ios/SimpleX--iOS--Info.plist | 2 + apps/ios/SimpleX.xcodeproj/project.pbxproj | 60 +++++++++++----------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/apps/ios/SimpleX--iOS--Info.plist b/apps/ios/SimpleX--iOS--Info.plist index 1287772e1..01f16a5a1 100644 --- a/apps/ios/SimpleX--iOS--Info.plist +++ b/apps/ios/SimpleX--iOS--Info.plist @@ -23,8 +23,10 @@ UIBackgroundModes + audio fetch remote-notification + voip diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 27c9e9c79..e59216069 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -43,6 +43,16 @@ 5C5F2B6D27EBC3FE006A9D5F /* ImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5F2B6C27EBC3FE006A9D5F /* ImagePicker.swift */; }; 5C5F2B7027EBC704006A9D5F /* ProfileImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5F2B6F27EBC704006A9D5F /* ProfileImage.swift */; }; 5C6AD81327A834E300348BD7 /* NewChatButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6AD81227A834E300348BD7 /* NewChatButton.swift */; }; + 5C6F2A3C28522C9A00103588 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C6F2A3728522C9A00103588 /* libgmp.a */; }; + 5C6F2A3D28522C9A00103588 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C6F2A3728522C9A00103588 /* libgmp.a */; }; + 5C6F2A3E28522C9A00103588 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C6F2A3828522C9A00103588 /* libffi.a */; }; + 5C6F2A3F28522C9A00103588 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C6F2A3828522C9A00103588 /* libffi.a */; }; + 5C6F2A4028522C9A00103588 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C6F2A3928522C9A00103588 /* libgmpxx.a */; }; + 5C6F2A4128522C9A00103588 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C6F2A3928522C9A00103588 /* libgmpxx.a */; }; + 5C6F2A4228522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C6F2A3A28522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy-ghc8.10.7.a */; }; + 5C6F2A4328522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C6F2A3A28522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy-ghc8.10.7.a */; }; + 5C6F2A4428522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C6F2A3B28522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy.a */; }; + 5C6F2A4528522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C6F2A3B28522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy.a */; }; 5C7505A227B65FDB00BE3227 /* CIMetaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7505A127B65FDB00BE3227 /* CIMetaView.swift */; }; 5C7505A527B679EE00BE3227 /* NavLinkPlain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7505A427B679EE00BE3227 /* NavLinkPlain.swift */; }; 5C7505A827B6D34800BE3227 /* ChatInfoToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7505A727B6D34800BE3227 /* ChatInfoToolbar.swift */; }; @@ -109,16 +119,6 @@ 648010AB281ADD15009009B9 /* CIFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648010AA281ADD15009009B9 /* CIFileView.swift */; }; 649BCDA0280460FD00C3A862 /* ComposeImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCD9F280460FD00C3A862 /* ComposeImageView.swift */; }; 649BCDA22805D6EF00C3A862 /* CIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCDA12805D6EF00C3A862 /* CIImageView.swift */; }; - 64A6908128376BB90076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A6907C28376BB90076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC.a */; }; - 64A6908228376BBA0076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A6907C28376BB90076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC.a */; }; - 64A6908328376BBA0076573F /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A6907D28376BB90076573F /* libffi.a */; }; - 64A6908428376BBA0076573F /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A6907D28376BB90076573F /* libffi.a */; }; - 64A6908528376BBA0076573F /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A6907E28376BB90076573F /* libgmpxx.a */; }; - 64A6908628376BBA0076573F /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A6907E28376BB90076573F /* libgmpxx.a */; }; - 64A6908728376BBA0076573F /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A6907F28376BB90076573F /* libgmp.a */; }; - 64A6908828376BBA0076573F /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A6907F28376BB90076573F /* libgmp.a */; }; - 64A6908928376BBA0076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A6908028376BB90076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC-ghc8.10.7.a */; }; - 64A6908A28376BBA0076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A6908028376BB90076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC-ghc8.10.7.a */; }; 64AA1C6927EE10C800AC7277 /* ContextItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64AA1C6827EE10C800AC7277 /* ContextItemView.swift */; }; 64AA1C6C27F3537400AC7277 /* DeletedItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64AA1C6B27F3537400AC7277 /* DeletedItemView.swift */; }; 64DAE1512809D9F5000DA960 /* FileUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64DAE1502809D9F5000DA960 /* FileUtils.swift */; }; @@ -172,6 +172,11 @@ 5C5F2B6C27EBC3FE006A9D5F /* ImagePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagePicker.swift; sourceTree = ""; }; 5C5F2B6F27EBC704006A9D5F /* ProfileImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileImage.swift; sourceTree = ""; }; 5C6AD81227A834E300348BD7 /* NewChatButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewChatButton.swift; sourceTree = ""; }; + 5C6F2A3728522C9A00103588 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5C6F2A3828522C9A00103588 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5C6F2A3928522C9A00103588 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5C6F2A3A28522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy-ghc8.10.7.a"; sourceTree = ""; }; + 5C6F2A3B28522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy.a"; sourceTree = ""; }; 5C7505A127B65FDB00BE3227 /* CIMetaView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIMetaView.swift; sourceTree = ""; }; 5C7505A427B679EE00BE3227 /* NavLinkPlain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavLinkPlain.swift; sourceTree = ""; }; 5C7505A727B6D34800BE3227 /* ChatInfoToolbar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatInfoToolbar.swift; sourceTree = ""; }; @@ -237,11 +242,6 @@ 6493D667280ED77F007A76FB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 649BCD9F280460FD00C3A862 /* ComposeImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeImageView.swift; sourceTree = ""; }; 649BCDA12805D6EF00C3A862 /* CIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIImageView.swift; sourceTree = ""; }; - 64A6907C28376BB90076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC.a"; sourceTree = ""; }; - 64A6907D28376BB90076573F /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; - 64A6907E28376BB90076573F /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 64A6907F28376BB90076573F /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 64A6908028376BB90076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC-ghc8.10.7.a"; sourceTree = ""; }; 64AA1C6827EE10C800AC7277 /* ContextItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextItemView.swift; sourceTree = ""; }; 64AA1C6B27F3537400AC7277 /* DeletedItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeletedItemView.swift; sourceTree = ""; }; 64DAE1502809D9F5000DA960 /* FileUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUtils.swift; sourceTree = ""; }; @@ -252,15 +252,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 64A6908928376BBA0076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC-ghc8.10.7.a in Frameworks */, + 5C6F2A4228522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy-ghc8.10.7.a in Frameworks */, 646BB38C283BEEB9001CE359 /* LocalAuthentication.framework in Frameworks */, - 64A6908528376BBA0076573F /* libgmpxx.a in Frameworks */, - 64A6908728376BBA0076573F /* libgmp.a in Frameworks */, + 5C6F2A4428522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy.a in Frameworks */, + 5C6F2A3E28522C9A00103588 /* libffi.a in Frameworks */, + 5C6F2A3C28522C9A00103588 /* libgmp.a in Frameworks */, 5C8F01CD27A6F0D8007D2C8D /* CodeScanner in Frameworks */, 5C764E83279C748B000C6508 /* libz.tbd in Frameworks */, 5C764E82279C748B000C6508 /* libiconv.tbd in Frameworks */, - 64A6908328376BBA0076573F /* libffi.a in Frameworks */, - 64A6908128376BB90076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC.a in Frameworks */, + 5C6F2A4028522C9A00103588 /* libgmpxx.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -275,13 +275,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 5C6F2A4528522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy.a in Frameworks */, + 5C6F2A4328522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy-ghc8.10.7.a in Frameworks */, 5CDCAD5F28187D6900503DA2 /* libiconv.tbd in Frameworks */, - 64A6908628376BBA0076573F /* libgmpxx.a in Frameworks */, - 64A6908A28376BBA0076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC-ghc8.10.7.a in Frameworks */, + 5C6F2A4128522C9A00103588 /* libgmpxx.a in Frameworks */, + 5C6F2A3D28522C9A00103588 /* libgmp.a in Frameworks */, 5CDCAD6128187D8000503DA2 /* libz.tbd in Frameworks */, - 64A6908228376BBA0076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC.a in Frameworks */, - 64A6908828376BBA0076573F /* libgmp.a in Frameworks */, - 64A6908428376BBA0076573F /* libffi.a in Frameworks */, + 5C6F2A3F28522C9A00103588 /* libffi.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -334,11 +334,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 64A6907D28376BB90076573F /* libffi.a */, - 64A6907F28376BB90076573F /* libgmp.a */, - 64A6907E28376BB90076573F /* libgmpxx.a */, - 64A6908028376BB90076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC-ghc8.10.7.a */, - 64A6907C28376BB90076573F /* libHSsimplex-chat-2.1.0-KOac7DFCSQz9HzISDnAYtC.a */, + 5C6F2A3828522C9A00103588 /* libffi.a */, + 5C6F2A3728522C9A00103588 /* libgmp.a */, + 5C6F2A3928522C9A00103588 /* libgmpxx.a */, + 5C6F2A3A28522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy-ghc8.10.7.a */, + 5C6F2A3B28522C9A00103588 /* libHSsimplex-chat-2.2.0-3TOca6xkke4IR3YLgDepFy.a */, ); path = Libraries; sourceTree = ""; From 235fb8dc0c87dae5274e56b34c576e718a0e8cd5 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Thu, 9 Jun 2022 15:18:12 +0100 Subject: [PATCH 14/14] remove missing libs --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 8aa6904b5..cea0f8393 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -217,8 +217,6 @@ 5C7505A127B65FDB00BE3227 /* CIMetaView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIMetaView.swift; sourceTree = ""; }; 5C7505A427B679EE00BE3227 /* NavLinkPlain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavLinkPlain.swift; sourceTree = ""; }; 5C7505A727B6D34800BE3227 /* ChatInfoToolbar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatInfoToolbar.swift; sourceTree = ""; }; - 5C764E7B279C71D4000C6508 /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sdk/usr/lib/libiconv.tbd; sourceTree = DEVELOPER_DIR; }; - 5C764E7C279C71DB000C6508 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; 5C764E88279CBCB3000C6508 /* ChatModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatModel.swift; sourceTree = ""; }; 5C971E1C27AEBEF600C8A3CE /* ChatInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatInfoView.swift; sourceTree = ""; }; 5C971E2027AEBF8300C8A3CE /* ChatInfoImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatInfoImage.swift; sourceTree = ""; }; @@ -389,8 +387,6 @@ 646BB38B283BEEB9001CE359 /* LocalAuthentication.framework */, 5CDCAD6028187D7900503DA2 /* libz.tbd */, 5CDCAD5E28187D4A00503DA2 /* libiconv.tbd */, - 5C764E7C279C71DB000C6508 /* libz.tbd */, - 5C764E7B279C71D4000C6508 /* libiconv.tbd */, ); name = Frameworks; sourceTree = "";