add confirm while delete
This commit is contained in:
parent
6b81860960
commit
43a5d8193d
@ -102,7 +102,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"OK" : {
|
"OK" : {
|
||||||
"comment" : "Profile update alert button",
|
"comment" : "Common OK\nProfile update alert button",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
@ -386,6 +386,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Добавление новых блокировок появится позже." : {
|
||||||
|
"comment" : "Add blocked user placeholder message"
|
||||||
|
},
|
||||||
"Другое" : {
|
"Другое" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
@ -1268,6 +1271,9 @@
|
|||||||
},
|
},
|
||||||
"Открыть правила" : {
|
"Открыть правила" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Отмена" : {
|
||||||
|
"comment" : "Common cancel"
|
||||||
},
|
},
|
||||||
"Отображаемое имя" : {
|
"Отображаемое имя" : {
|
||||||
|
|
||||||
@ -1609,6 +1615,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Пользователь \"%1$@\" будет удалён из списка заблокированных." : {
|
||||||
|
"comment" : "Unblock confirmation message"
|
||||||
|
},
|
||||||
"Пользователь Системы 1" : {
|
"Пользователь Системы 1" : {
|
||||||
"comment" : "Тестовая подмена офф аккаунта",
|
"comment" : "Тестовая подмена офф аккаунта",
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
@ -1828,7 +1837,7 @@
|
|||||||
|
|
||||||
},
|
},
|
||||||
"Разблокировать" : {
|
"Разблокировать" : {
|
||||||
|
"comment" : "Unblock confirmation action"
|
||||||
},
|
},
|
||||||
"Разрешить пересылку сообщений" : {
|
"Разрешить пересылку сообщений" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -2027,6 +2036,9 @@
|
|||||||
"Скопировать" : {
|
"Скопировать" : {
|
||||||
"comment" : "Search placeholder copy"
|
"comment" : "Search placeholder copy"
|
||||||
},
|
},
|
||||||
|
"Скоро" : {
|
||||||
|
"comment" : "Add blocked user placeholder title"
|
||||||
|
},
|
||||||
"Скоро появится мини-игра, где можно заработать очки для кастомизации профиля. Следите за обновлениями!" : {
|
"Скоро появится мини-игра, где можно заработать очки для кастомизации профиля. Следите за обновлениями!" : {
|
||||||
"comment" : "Concept tab placeholder description"
|
"comment" : "Concept tab placeholder description"
|
||||||
},
|
},
|
||||||
@ -2206,6 +2218,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Удалить из заблокированных?" : {
|
||||||
|
"comment" : "Unblock confirmation title"
|
||||||
|
},
|
||||||
"Удалить чат (скоро)" : {
|
"Удалить чат (скоро)" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
|
|||||||
@ -4,6 +4,9 @@ struct BlockedUsersView: View {
|
|||||||
@State private var blockedUsers: [BlockedUser] = []
|
@State private var blockedUsers: [BlockedUser] = []
|
||||||
@State private var isLoading = false
|
@State private var isLoading = false
|
||||||
@State private var loadError: String?
|
@State private var loadError: String?
|
||||||
|
@State private var showAddBlockedUserAlert = false
|
||||||
|
@State private var pendingUnblock: BlockedUser?
|
||||||
|
@State private var showUnblockConfirmation = false
|
||||||
|
|
||||||
private let blockedUsersService = BlockedUsersService()
|
private let blockedUsersService = BlockedUsersService()
|
||||||
|
|
||||||
@ -37,26 +40,57 @@ struct BlockedUsersView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Spacer()
|
Spacer()
|
||||||
Button(role: .destructive) {
|
|
||||||
unblock(user)
|
|
||||||
} label: {
|
|
||||||
Text(NSLocalizedString("Разблокировать", comment: ""))
|
|
||||||
}
|
|
||||||
.buttonStyle(.borderless)
|
|
||||||
}
|
}
|
||||||
.padding(.vertical, 4)
|
.padding(.vertical, 4)
|
||||||
|
.swipeActions(edge: .trailing) {
|
||||||
|
Button(role: .destructive) {
|
||||||
|
pendingUnblock = user
|
||||||
|
showUnblockConfirmation = true
|
||||||
|
} label: {
|
||||||
|
Label(NSLocalizedString("Разблокировать", comment: ""), systemImage: "person.crop.circle.badge.xmark")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.navigationTitle(NSLocalizedString("Заблокированные", comment: ""))
|
.navigationTitle(NSLocalizedString("Заблокированные", comment: ""))
|
||||||
.navigationBarTitleDisplayMode(.inline)
|
.navigationBarTitleDisplayMode(.inline)
|
||||||
|
.toolbar {
|
||||||
|
ToolbarItem(placement: .navigationBarTrailing) {
|
||||||
|
Button {
|
||||||
|
showAddBlockedUserAlert = true
|
||||||
|
} label: {
|
||||||
|
Image(systemName: "plus")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.task {
|
.task {
|
||||||
await loadBlockedUsers()
|
await loadBlockedUsers()
|
||||||
}
|
}
|
||||||
.refreshable {
|
.refreshable {
|
||||||
await loadBlockedUsers()
|
await loadBlockedUsers()
|
||||||
}
|
}
|
||||||
|
.alert(NSLocalizedString("Скоро", comment: "Add blocked user placeholder title"), isPresented: $showAddBlockedUserAlert) {
|
||||||
|
Button(NSLocalizedString("OK", comment: "Common OK"), role: .cancel) {}
|
||||||
|
} message: {
|
||||||
|
Text(NSLocalizedString("Добавление новых блокировок появится позже.", comment: "Add blocked user placeholder message"))
|
||||||
|
}
|
||||||
|
.confirmationDialog(
|
||||||
|
NSLocalizedString("Удалить из заблокированных?", comment: "Unblock confirmation title"),
|
||||||
|
isPresented: $showUnblockConfirmation,
|
||||||
|
presenting: pendingUnblock
|
||||||
|
) { user in
|
||||||
|
Button(NSLocalizedString("Разблокировать", comment: "Unblock confirmation action"), role: .destructive) {
|
||||||
|
unblock(user)
|
||||||
|
pendingUnblock = nil
|
||||||
|
}
|
||||||
|
Button(NSLocalizedString("Отмена", comment: "Common cancel"), role: .cancel) {
|
||||||
|
pendingUnblock = nil
|
||||||
|
}
|
||||||
|
} message: { user in
|
||||||
|
Text(String(format: NSLocalizedString("Пользователь \"%1$@\" будет удалён из списка заблокированных.", comment: "Unblock confirmation message"), user.displayName))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private var emptyState: some View {
|
private var emptyState: some View {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user