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", "comment" : "feedback: rating hint",
"localizations" : { "localizations" : {
@ -453,10 +456,16 @@
}, },
"Заблокируйте аккаунт, чтобы скрыть его сообщения и взаимодействия" : { "Заблокируйте аккаунт, чтобы скрыть его сообщения и взаимодействия" : {
},
"Завершить" : {
"comment" : "Подтверждение завершения других сессий"
}, },
"Завершить другие сессии" : { "Завершить другие сессии" : {
"comment" : "Кнопка завершения других сессий" "comment" : "Кнопка завершения других сессий"
}, },
"Завершить сессии на других устройствах?" : {
"comment" : "Заголовок подтверждения завершения сессий"
},
"Заглушка: Push-уведомления" : { "Заглушка: 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 loadError: String?
@State private var revokeInProgress = false @State private var revokeInProgress = false
@State private var activeAlert: SessionsAlert? @State private var activeAlert: SessionsAlert?
@State private var showRevokeConfirmation = false
private let sessionsService = SessionsService() private let sessionsService = SessionsService()
private var currentSession: SessionViewData? { private var currentSession: SessionViewData? {
@ -78,6 +79,17 @@ struct ActiveSessionsView: View {
dismissButton: .default(Text(NSLocalizedString("OK", comment: "Общий текст кнопки OK"))) 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 { private var loadingState: some View {
@ -215,8 +227,8 @@ struct ActiveSessionsView: View {
let primaryColor: Color = revokeInProgress ? .secondary : .red let primaryColor: Color = revokeInProgress ? .secondary : .red
return Button { return Button {
Task { if !revokeInProgress {
await revokeOtherSessions() showRevokeConfirmation = true
} }
} label: { } label: {
HStack(spacing: 12) { HStack(spacing: 12) {