add alert in chat

This commit is contained in:
cheykrym 2025-12-12 02:19:24 +03:00
parent 28d2525e4a
commit 452ccfacd6
3 changed files with 20 additions and 3 deletions

View File

@ -598,6 +598,9 @@
}, },
"Добро пожаловать в Yobble!" : { "Добро пожаловать в Yobble!" : {
},
"Дождитесь отправки предыдущего сообщения." : {
}, },
"Дополнительные действия." : { "Дополнительные действия." : {
"comment" : "Message profile more action description" "comment" : "Message profile more action description"
@ -1910,6 +1913,9 @@
}, },
"Ошибка в данных. Проверьте введённую информацию." : { "Ошибка в данных. Проверьте введённую информацию." : {
},
"Ошибка отправки" : {
}, },
"Ошибка при деавторизации." : { "Ошибка при деавторизации." : {
"localizations" : { "localizations" : {

View File

@ -6,6 +6,7 @@ final class PrivateChatViewModel: ObservableObject {
@Published private(set) var isInitialLoading: Bool = false @Published private(set) var isInitialLoading: Bool = false
@Published private(set) var isLoadingMore: Bool = false @Published private(set) var isLoadingMore: Bool = false
@Published var errorMessage: String? @Published var errorMessage: String?
@Published var sendingErrorMessage: String?
@Published private(set) var isSending: Bool = false @Published private(set) var isSending: Bool = false
@Published private(set) var hasMore: Bool = true @Published private(set) var hasMore: Bool = true
@ -74,11 +75,12 @@ final class PrivateChatViewModel: ObservableObject {
return return
} }
guard trimmed.count <= maxMessageLength else { guard trimmed.count <= maxMessageLength else {
errorMessage = NSLocalizedString("Сообщение слишком длинное.", comment: "") sendingErrorMessage = NSLocalizedString("Сообщение слишком длинное.", comment: "")
completion(false) completion(false)
return return
} }
guard !isSending else { guard !isSending else {
sendingErrorMessage = NSLocalizedString("Дождитесь отправки предыдущего сообщения.", comment: "")
completion(false) completion(false)
return return
} }
@ -88,6 +90,7 @@ final class PrivateChatViewModel: ObservableObject {
} }
isSending = true isSending = true
sendingErrorMessage = nil
chatService.sendPrivateMessage(chatId: chatId, content: trimmed) { [weak self] result in chatService.sendPrivateMessage(chatId: chatId, content: trimmed) { [weak self] result in
guard let self else { return } guard let self else { return }
@ -113,7 +116,7 @@ final class PrivateChatViewModel: ObservableObject {
self.errorMessage = nil self.errorMessage = nil
completion(true) completion(true)
case .failure(let error): case .failure(let error):
self.errorMessage = self.message(for: error) self.sendingErrorMessage = self.message(for: error)
completion(false) completion(false)
} }
@ -213,4 +216,4 @@ final class PrivateChatViewModel: ObservableObject {
return lhs.messageId < rhs.messageId return lhs.messageId < rhs.messageId
} }
} }

View File

@ -66,6 +66,14 @@ struct PrivateChatView: View {
} }
.hidden() .hidden()
} }
.alert("Ошибка отправки", isPresented: Binding(
get: { viewModel.sendingErrorMessage != nil },
set: { if !$0 { viewModel.sendingErrorMessage = nil } }
), actions: {
Button("OK") { }
}, message: {
Text(viewModel.sendingErrorMessage ?? "Не удалось отправить сообщение.")
})
.navigationTitle(toolbarTitle) .navigationTitle(toolbarTitle)
.navigationBarTitleDisplayMode(.inline) .navigationBarTitleDisplayMode(.inline)
// .navigationBarBackButtonHidden(true) // .navigationBarBackButtonHidden(true)