add confirm revoke

This commit is contained in:
cheykrym 2025-10-24 10:20:20 +03:00
parent cf5d2ad7fb
commit be6394f6fb
2 changed files with 24 additions and 3 deletions

View File

@ -345,6 +345,9 @@
}
}
},
"Вы выйдете со всех устройств, кроме текущего." : {
"comment" : "Описание подтверждения завершения сессий"
},
"Выберите оценку — это поможет нам понять настроение." : {
"comment" : "feedback: rating hint",
"localizations" : {
@ -453,10 +456,16 @@
},
"Заблокируйте аккаунт, чтобы скрыть его сообщения и взаимодействия" : {
},
"Завершить" : {
"comment" : "Подтверждение завершения других сессий"
},
"Завершить другие сессии" : {
"comment" : "Кнопка завершения других сессий"
},
"Завершить сессии на других устройствах?" : {
"comment" : "Заголовок подтверждения завершения сессий"
},
"Заглушка: Push-уведомления" : {
},
@ -1344,7 +1353,7 @@
},
"Отмена" : {
"comment" : "Common cancel"
"comment" : "Common cancel\nОбщий текст кнопки отмены"
},
"Отображаемое имя" : {

View File

@ -6,6 +6,7 @@ struct ActiveSessionsView: View {
@State private var loadError: String?
@State private var revokeInProgress = false
@State private var activeAlert: SessionsAlert?
@State private var showRevokeConfirmation = false
private let sessionsService = SessionsService()
private var currentSession: SessionViewData? {
@ -78,6 +79,17 @@ struct ActiveSessionsView: View {
dismissButton: .default(Text(NSLocalizedString("OK", comment: "Общий текст кнопки OK")))
)
}
.confirmationDialog(
NSLocalizedString("Завершить сессии на других устройствах?", comment: "Заголовок подтверждения завершения сессий"),
isPresented: $showRevokeConfirmation
) {
Button(NSLocalizedString("Завершить", comment: "Подтверждение завершения других сессий"), role: .destructive) {
Task { await revokeOtherSessions() }
}
Button(NSLocalizedString("Отмена", comment: "Общий текст кнопки отмены"), role: .cancel) {}
} message: {
Text(NSLocalizedString("Вы выйдете со всех устройств, кроме текущего.", comment: "Описание подтверждения завершения сессий"))
}
}
private var loadingState: some View {
@ -215,8 +227,8 @@ struct ActiveSessionsView: View {
let primaryColor: Color = revokeInProgress ? .secondary : .red
return Button {
Task {
await revokeOtherSessions()
if !revokeInProgress {
showRevokeConfirmation = true
}
} label: {
HStack(spacing: 12) {