From be6394f6fb79a49b28f9460cea5c46c9d67dcfca Mon Sep 17 00:00:00 2001 From: cheykrym Date: Fri, 24 Oct 2025 10:20:20 +0300 Subject: [PATCH] add confirm revoke --- yobble/Resources/Localizable.xcstrings | 11 ++++++++++- .../Views/Tab/Settings/ActiveSessionsView.swift | 16 ++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/yobble/Resources/Localizable.xcstrings b/yobble/Resources/Localizable.xcstrings index d536026..815a0a1 100644 --- a/yobble/Resources/Localizable.xcstrings +++ b/yobble/Resources/Localizable.xcstrings @@ -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Общий текст кнопки отмены" }, "Отображаемое имя" : { diff --git a/yobble/Views/Tab/Settings/ActiveSessionsView.swift b/yobble/Views/Tab/Settings/ActiveSessionsView.swift index a4ebac2..2d2cbad 100644 --- a/yobble/Views/Tab/Settings/ActiveSessionsView.swift +++ b/yobble/Views/Tab/Settings/ActiveSessionsView.swift @@ -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) {