wip
This commit is contained in:
parent
49f1028d69
commit
9e07aed5fd
|
@ -33,12 +33,11 @@
|
|||
"Contacts.Add.explanation" = "Contact or group/channel name are usually JID in format name@domain.ltd (like email)";
|
||||
"Contacts.Add.serverError" = "Contact adding dailed. Server returned error";
|
||||
"Contacts.deleteContact" = "Delete contact";
|
||||
"Contacts.Delete.deleteFromDevice" = "Delete from device";
|
||||
"Contacts.Delete.deleteCompletely" = "Delete completely";
|
||||
"Contacts.sendMessage" = "Send message";
|
||||
"Contacts.editContact" = "Edit contact";
|
||||
"Contacts.selectContact" = "Select contact";
|
||||
"Contacts.Delete.message" = "You can delete contact from this device (contact will be available on other devices), or delete it completely";
|
||||
"Contacts.Delete.message" = "Contact will be deleted completelly";
|
||||
"Contacts.Delete.error" = "Contact not deleted. Server returns error.";
|
||||
|
||||
// MARK: Chats list screen
|
||||
|
|
|
@ -91,14 +91,6 @@ private struct ContactsScreenRow: View {
|
|||
}
|
||||
|
||||
@ViewBuilder private var deleteConfirmation: some View {
|
||||
Button(role: .destructive) {
|
||||
Task {
|
||||
await deleteFromDevice()
|
||||
}
|
||||
} label: {
|
||||
Text(L10n.Contacts.Delete.deleteFromDevice)
|
||||
}
|
||||
|
||||
Button(role: .destructive) {
|
||||
Task {
|
||||
await deleteCompletely()
|
||||
|
@ -112,19 +104,6 @@ private struct ContactsScreenRow: View {
|
|||
}
|
||||
}
|
||||
|
||||
private func deleteFromDevice() async {
|
||||
router.showModal {
|
||||
LoadingScreen()
|
||||
}
|
||||
|
||||
defer {
|
||||
router.dismissModal()
|
||||
}
|
||||
|
||||
// var roster = roster
|
||||
// try? await roster.setLocallyDeleted(true)
|
||||
}
|
||||
|
||||
private func deleteCompletely() async {
|
||||
router.showModal {
|
||||
LoadingScreen()
|
||||
|
@ -135,7 +114,7 @@ private struct ContactsScreenRow: View {
|
|||
}
|
||||
|
||||
do {
|
||||
// try await clientsStore.deleteRoster(roster)
|
||||
try await wrapper.deleteContact(contact)
|
||||
} catch {
|
||||
router.showAlert(
|
||||
.alert,
|
||||
|
|
|
@ -24,6 +24,7 @@ struct MainTabScreen: View {
|
|||
switch selectedTab {
|
||||
case .chats:
|
||||
Text("chats")
|
||||
Spacer()
|
||||
// ChatsListScreen()
|
||||
|
||||
case .contacts:
|
||||
|
@ -31,6 +32,7 @@ struct MainTabScreen: View {
|
|||
|
||||
case .settings:
|
||||
Text("settings")
|
||||
Spacer()
|
||||
// SettingsScreen()
|
||||
// .environment(\.settingsParent, .main)
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
enum AimErrors: Error {
|
||||
case loginError
|
||||
case contactRemoveError
|
||||
}
|
||||
|
|
|
@ -42,12 +42,16 @@ extension MonalXmppWrapper {
|
|||
}
|
||||
|
||||
func addContact(contactJid: String, forAccountID: Int) async {
|
||||
await withCheckedContinuation { [weak self] cnt in
|
||||
let contact = MLContact.createContact(fromJid: contactJid, andAccountID: NSNumber(value: forAccountID))
|
||||
self?.xmpp.add(contact)
|
||||
cnt.resume()
|
||||
xmpp.add(contact)
|
||||
}
|
||||
|
||||
func deleteContact(_ contact: Contact) async throws {
|
||||
if let mlContact = db.contactList().first(where: { $0.contactJid == contact.contactJid }) {
|
||||
xmpp.remove(mlContact)
|
||||
} else {
|
||||
throw AimErrors.contactRemoveError
|
||||
}
|
||||
NotificationCenter.default.post(name: Notification.Name(kMonalContactRefresh), object: nil)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue