add refresh chat msg

This commit is contained in:
cheykrym 2025-10-21 19:02:36 +03:00
parent 49ac88c23c
commit da5f198d8c
3 changed files with 26 additions and 15 deletions

View File

@ -28,11 +28,11 @@ struct TopBarView: View {
} }
private var statusMessage: String? { private var statusMessage: String? {
if viewModel.socketState != .connected {
return NSLocalizedString("Подключение", comment: "")
}
if viewModel.chatLoadingState == .loading { if viewModel.chatLoadingState == .loading {
return NSLocalizedString("Загрузка чатов", comment: "") return NSLocalizedString("Загрузка чатов", comment: "")
} else
if viewModel.socketState != .connected {
return NSLocalizedString("Подключение", comment: "")
} }
return nil return nil
} }

View File

@ -11,7 +11,7 @@ import UIKit
#endif #endif
struct ChatsTab: View { struct ChatsTab: View {
var currentUserId: String? @ObservedObject private var loginViewModel: LoginViewModel
@Binding var searchRevealProgress: CGFloat @Binding var searchRevealProgress: CGFloat
@Binding var searchText: String @Binding var searchText: String
private let searchService = SearchService() private let searchService = SearchService()
@ -33,8 +33,13 @@ struct ChatsTab: View {
private let searchRevealDistance: CGFloat = 90 private let searchRevealDistance: CGFloat = 90
init(currentUserId: String? = nil, searchRevealProgress: Binding<CGFloat>, searchText: Binding<String>) { private var currentUserId: String? {
self.currentUserId = currentUserId let userId = loginViewModel.userId
return userId.isEmpty ? nil : userId
}
init(loginViewModel: LoginViewModel, searchRevealProgress: Binding<CGFloat>, searchText: Binding<String>) {
self._loginViewModel = ObservedObject(wrappedValue: loginViewModel)
self._searchRevealProgress = searchRevealProgress self._searchRevealProgress = searchRevealProgress
self._searchText = searchText self._searchText = searchText
} }
@ -108,16 +113,14 @@ struct ChatsTab: View {
HStack(alignment: .top, spacing: 8) { HStack(alignment: .top, spacing: 8) {
Image(systemName: "exclamationmark.triangle.fill") Image(systemName: "exclamationmark.triangle.fill")
.foregroundColor(.orange) .foregroundColor(.orange)
Text(message) Text(message)
.font(.subheadline) .font(.subheadline)
.foregroundColor(.orange) .foregroundColor(.orange)
Spacer(minLength: 0) Spacer(minLength: 0)
Button(action: triggerChatsReload) {
// Button(action: triggerChatsReload) { Text(NSLocalizedString("Обновить", comment: ""))
// Text(NSLocalizedString("Обновить", comment: "")) .font(.subheadline)
// .font(.subheadline) }
// }
} }
.padding(.vertical, 4) .padding(.vertical, 4)
} }
@ -387,6 +390,9 @@ struct ChatsTab: View {
} }
private func triggerChatsReload() { private func triggerChatsReload() {
if loginViewModel.chatLoadingState != .loading {
loginViewModel.chatLoadingState = .loading
}
viewModel.loadInitialChats(force: true) viewModel.loadInitialChats(force: true)
} }
@ -1144,9 +1150,14 @@ struct ChatsTab_Previews: PreviewProvider {
struct Wrapper: View { struct Wrapper: View {
@State private var progress: CGFloat = 1 @State private var progress: CGFloat = 1
@State private var searchText: String = "" @State private var searchText: String = ""
@StateObject private var loginViewModel = LoginViewModel()
var body: some View { var body: some View {
ChatsTab(searchRevealProgress: $progress, searchText: $searchText) ChatsTab(
loginViewModel: loginViewModel,
searchRevealProgress: $progress,
searchText: $searchText
)
.environmentObject(ThemeManager()) .environmentObject(ThemeManager())
} }
} }

View File

@ -53,7 +53,7 @@ struct MainView: View {
.opacity(selectedTab == 1 ? 1 : 0) .opacity(selectedTab == 1 ? 1 : 0)
ChatsTab( ChatsTab(
currentUserId: viewModel.userId.isEmpty ? nil : viewModel.userId, loginViewModel: viewModel,
searchRevealProgress: $chatSearchRevealProgress, searchRevealProgress: $chatSearchRevealProgress,
searchText: $chatSearchText searchText: $chatSearchText
) )