diff --git a/Linphone/GeneratedGit.swift b/Linphone/GeneratedGit.swift
index 0f258ee5e..29b5b3fed 100644
--- a/Linphone/GeneratedGit.swift
+++ b/Linphone/GeneratedGit.swift
@@ -2,6 +2,6 @@ import Foundation
public enum AppGitInfo {
public static let branch = "master"
- public static let commit = "65e685101"
+ public static let commit = "c01f79dd2"
public static let tag = "6.1.0-alpha"
}
diff --git a/Linphone/Localizable/en.lproj/Localizable.strings b/Linphone/Localizable/en.lproj/Localizable.strings
index 2f9a11fc8..cbc327642 100644
--- a/Linphone/Localizable/en.lproj/Localizable.strings
+++ b/Linphone/Localizable/en.lproj/Localizable.strings
@@ -221,8 +221,8 @@
"conversation_editing_message_title" = "Message being edited";
"conversation_message_edited_label" = "Edited";
"conversation_dialog_delete_chat_message_title" = "Delete this message?";
-"conversation_dialog_delete_locally_label" = "For me";
-"conversation_dialog_delete_for_everyone_label" = "For everyone";
+"conversation_dialog_delete_locally_label" = "Delete for me";
+"conversation_dialog_delete_for_everyone_label" = "Delete for everyone";
"conversation_message_content_deleted_label" = "This message has been deleted";
"conversation_message_content_deleted_by_us_label" = "You have deleted this message";
"conversation_end_to_end_encrypted_bottom_sheet_link" = "https://linphone.org/en/features/#security";
diff --git a/Linphone/Localizable/fr.lproj/Localizable.strings b/Linphone/Localizable/fr.lproj/Localizable.strings
index 6c40dbec1..9a9ab3ea0 100644
--- a/Linphone/Localizable/fr.lproj/Localizable.strings
+++ b/Linphone/Localizable/fr.lproj/Localizable.strings
@@ -221,8 +221,8 @@
"conversation_editing_message_title" = "Modification du message";
"conversation_message_edited_label" = "Modifié";
"conversation_dialog_delete_chat_message_title" = "Supprimer le message ?";
-"conversation_dialog_delete_locally_label" = "Pour moi";
-"conversation_dialog_delete_for_everyone_label" = "Pour tout le monde";
+"conversation_dialog_delete_locally_label" = "Supprimer pour moi";
+"conversation_dialog_delete_for_everyone_label" = "Supprimer pour tout le monde";
"conversation_message_content_deleted_label" = "Le message a été supprimé";
"conversation_message_content_deleted_by_us_label" = "Vous avez supprimé le message";
"conversation_end_to_end_encrypted_bottom_sheet_link" = "https://linphone.org/en/features/#security";
diff --git a/Linphone/UI/Main/ContentView.swift b/Linphone/UI/Main/ContentView.swift
index 139f0bd8d..6d757c7a2 100644
--- a/Linphone/UI/Main/ContentView.swift
+++ b/Linphone/UI/Main/ContentView.swift
@@ -1694,6 +1694,7 @@ struct ContentView: View {
}
}
+ /*
if isShowDeleteMessagePopup {
PopupView(
isShowPopup: $isShowDeleteMessagePopup,
@@ -1718,6 +1719,7 @@ struct ContentView: View {
self.isShowDeleteMessagePopup.toggle()
}
}
+ */
if isShowConversationInfoPopup {
PopupViewWithTextField(
diff --git a/Linphone/UI/Main/Conversations/Fragments/ConversationDeleteMessageBottomSheet.swift b/Linphone/UI/Main/Conversations/Fragments/ConversationDeleteMessageBottomSheet.swift
new file mode 100644
index 000000000..8117bf904
--- /dev/null
+++ b/Linphone/UI/Main/Conversations/Fragments/ConversationDeleteMessageBottomSheet.swift
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2010-2023 Belledonne Communications SARL.
+ *
+ * This file is part of linphone-iphone
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+import SwiftUI
+import linphonesw
+
+struct ConversationDeleteMessageBottomSheet: View {
+
+ @Environment(\.dismiss) var dismiss
+
+ private var idiom: UIUserInterfaceIdiom { UIDevice.current.userInterfaceIdiom }
+
+ @State private var orientation = UIDevice.current.orientation
+
+ @Binding var showingSheet: Bool
+
+ var body: some View {
+ VStack(alignment: .leading) {
+ if idiom != .pad && (orientation == .landscapeLeft
+ || orientation == .landscapeRight
+ || UIScreen.main.bounds.size.width > UIScreen.main.bounds.size.height) {
+ Spacer()
+ HStack {
+ Spacer()
+ Button("dialog_close") {
+ if #available(iOS 16.0, *) {
+ showingSheet.toggle()
+ } else {
+ showingSheet.toggle()
+ dismiss()
+ }
+ }
+ }
+ .padding(.trailing)
+ }
+
+ Spacer()
+
+ Button {
+ NotificationCenter.default.post(name: NSNotification.Name("DeleteMessageForEveryone"), object: nil)
+
+ if #available(iOS 16.0, *) {
+ if idiom != .pad {
+ showingSheet.toggle()
+ } else {
+ showingSheet.toggle()
+ dismiss()
+ }
+ } else {
+ showingSheet.toggle()
+ dismiss()
+ }
+ } label: {
+ HStack {
+ Image("trash-simple")
+ .renderingMode(.template)
+ .resizable()
+ .foregroundStyle(Color.redDanger500)
+ .frame(width: 25, height: 25, alignment: .leading)
+ Text("conversation_dialog_delete_for_everyone_label")
+ .foregroundStyle(Color.redDanger500)
+ .default_text_style(styleSize: 16)
+ Spacer()
+ }
+ .frame(maxHeight: .infinity)
+ }
+ .padding(.horizontal, 30)
+ .background(Color.gray100)
+
+ VStack {
+ Divider()
+ }
+ .frame(maxWidth: .infinity)
+
+ Button {
+ NotificationCenter.default.post(name: NSNotification.Name("DeleteMessageForMe"), object: nil)
+
+ if #available(iOS 16.0, *) {
+ if idiom != .pad {
+ showingSheet.toggle()
+ } else {
+ showingSheet.toggle()
+ dismiss()
+ }
+ } else {
+ showingSheet.toggle()
+ dismiss()
+ }
+ } label: {
+ HStack {
+ Image("trash-simple")
+ .renderingMode(.template)
+ .resizable()
+ .foregroundStyle(Color.redDanger500)
+ .frame(width: 25, height: 25, alignment: .leading)
+ Text("conversation_dialog_delete_locally_label")
+ .foregroundStyle(Color.redDanger500)
+ .default_text_style(styleSize: 16)
+ Spacer()
+ }
+ .frame(maxHeight: .infinity)
+ }
+ .padding(.horizontal, 30)
+ .background(Color.gray100)
+ }
+ .padding(.bottom)
+ .background(Color.gray100)
+ .frame(maxWidth: .infinity)
+ .onRotate { newOrientation in
+ orientation = newOrientation
+ }
+ }
+}
+
+#Preview {
+ ConversationsListBottomSheet(showingSheet: .constant(true))
+}
diff --git a/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift b/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift
index aaab69720..4ea522deb 100644
--- a/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift
+++ b/Linphone/UI/Main/Conversations/Fragments/ConversationFragment.swift
@@ -133,6 +133,15 @@ struct ConversationFragment: View {
.presentationDetents([.medium])
.presentationDragIndicator(.visible)
})
+ .sheet(isPresented: $isShowDeleteMessagePopup, onDismiss: {
+ isShowDeleteMessagePopup = false
+ }, content: {
+ ConversationDeleteMessageBottomSheet(
+ showingSheet: $isShowDeleteMessagePopup
+ )
+ .presentationDetents([.fraction(0.15)])
+ .ignoresSafeArea(.all)
+ })
.sheet(isPresented: $isShowPhotoLibrary, onDismiss: {
isShowPhotoLibrary = false
}, content: {
@@ -213,6 +222,13 @@ struct ConversationFragment: View {
} onDismiss: {
conversationViewModel.isShowSelectedMessageToDisplayDetails = false
}
+ .halfSheet(showSheet: $isShowDeleteMessagePopup) {
+ ConversationDeleteMessageBottomSheet(
+ showingSheet: $isShowDeleteMessagePopup
+ )
+ } onDismiss: {
+ isShowDeleteMessagePopup = false
+ }
.sheet(isPresented: $isShowPhotoLibrary, onDismiss: {
isShowPhotoLibrary = false
}, content: {
diff --git a/LinphoneApp.xcodeproj/project.pbxproj b/LinphoneApp.xcodeproj/project.pbxproj
index 9e8cc70fc..c2d9fe18f 100644
--- a/LinphoneApp.xcodeproj/project.pbxproj
+++ b/LinphoneApp.xcodeproj/project.pbxproj
@@ -198,6 +198,7 @@
D7D24D162AC1B4E800C6F35B /* NotoSans-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D7D24D102AC1B4E800C6F35B /* NotoSans-SemiBold.ttf */; };
D7D24D172AC1B4E800C6F35B /* NotoSans-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D7D24D112AC1B4E800C6F35B /* NotoSans-Bold.ttf */; };
D7D24D182AC1B4E800C6F35B /* NotoSans-ExtraBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D7D24D122AC1B4E800C6F35B /* NotoSans-ExtraBold.ttf */; };
+ D7D3007A2F684EAF00836032 /* ConversationDeleteMessageBottomSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7D300792F684EAE00836032 /* ConversationDeleteMessageBottomSheet.swift */; };
D7D5AD7F2DD34F0E00016721 /* AppAuth in Frameworks */ = {isa = PBXBuildFile; productRef = D7D5AD7E2DD34F0E00016721 /* AppAuth */; };
D7D5AD812DD34F1A00016721 /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = D7D5AD802DD34F1A00016721 /* FirebaseAnalytics */; };
D7D5AD832DD34F2300016721 /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = D7D5AD822DD34F2300016721 /* FirebaseCrashlytics */; };
@@ -471,6 +472,7 @@
D7D24D102AC1B4E800C6F35B /* NotoSans-SemiBold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NotoSans-SemiBold.ttf"; sourceTree = ""; };
D7D24D112AC1B4E800C6F35B /* NotoSans-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NotoSans-Bold.ttf"; sourceTree = ""; };
D7D24D122AC1B4E800C6F35B /* NotoSans-ExtraBold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NotoSans-ExtraBold.ttf"; sourceTree = ""; };
+ D7D300792F684EAE00836032 /* ConversationDeleteMessageBottomSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationDeleteMessageBottomSheet.swift; sourceTree = ""; };
D7D67B682F601F6100DD9976 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/AppIntentVocabulary.plist; sourceTree = ""; };
D7D67B6C2F601F6C00DD9976 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = en; path = en.lproj/AppIntentVocabulary.plist; sourceTree = ""; };
D7D67B6D2F601F6D00DD9976 /* eu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = eu; path = eu.lproj/AppIntentVocabulary.plist; sourceTree = ""; };
@@ -1137,6 +1139,7 @@
D7CEE0392B7A232200FD79B7 /* Fragments */ = {
isa = PBXGroup;
children = (
+ D7D300792F684EAE00836032 /* ConversationDeleteMessageBottomSheet.swift */,
D7AEB9732F324A6E00298546 /* ConversationDocumentsListFragment.swift */,
D7AEB9712F324A5C00298546 /* ConversationMediaListFragment.swift */,
D7EFD1E32CD11F53005E67CD /* EphemeralFragment.swift */,
@@ -1624,6 +1627,7 @@
D74C9CF82ACACECE0021626A /* WelcomePage1Fragment.swift in Sources */,
66E56BCE2BA9A1F8006CE56F /* MeetingModel.swift in Sources */,
D7DC09712CFDBF9A00A6D47C /* AccountProfileViewModel.swift in Sources */,
+ D7D3007A2F684EAF00836032 /* ConversationDeleteMessageBottomSheet.swift in Sources */,
D7E6D0552AEBFCCE00A57AAF /* ContactsInnerFragment.swift in Sources */,
D72343362AD037AF009AA24E /* ToastView.swift in Sources */,
D711B1302E8FCEDE00DF8C71 /* CardDavViewModel.swift in Sources */,