patch terms

This commit is contained in:
cheykrym 2025-10-23 19:20:04 +03:00
parent a28402136d
commit 85fb780c96
3 changed files with 7 additions and 9 deletions

View File

@ -18,11 +18,7 @@ class LoginViewModel: ObservableObject {
@Published var isLoggedIn: Bool = false @Published var isLoggedIn: Bool = false
@Published var socketState: SocketService.ConnectionState @Published var socketState: SocketService.ConnectionState
@Published var chatLoadingState: ChatLoadingState = .idle @Published var chatLoadingState: ChatLoadingState = .idle
@Published var hasAcceptedTerms: Bool { @Published var hasAcceptedTerms: Bool = false
didSet {
UserDefaults.standard.set(hasAcceptedTerms, forKey: DefaultsKeys.termsAccepted)
}
}
@Published var isLoadingTerms: Bool = false @Published var isLoadingTerms: Bool = false
@Published var termsContent: String = "" @Published var termsContent: String = ""
@Published var termsErrorMessage: String? @Published var termsErrorMessage: String?
@ -39,12 +35,10 @@ class LoginViewModel: ObservableObject {
private enum DefaultsKeys { private enum DefaultsKeys {
static let currentUser = "currentUser" static let currentUser = "currentUser"
static let userId = "userId" static let userId = "userId"
static let termsAccepted = "termsAccepted"
} }
init() { init() {
socketState = socketService.currentConnectionState socketState = socketService.currentConnectionState
hasAcceptedTerms = UserDefaults.standard.bool(forKey: DefaultsKeys.termsAccepted)
observeSocketState() observeSocketState()
observeChatsReload() observeChatsReload()
// loadStoredUser() // loadStoredUser()

View File

@ -16,6 +16,7 @@ struct LoginView: View {
@State private var isShowingRegistration = false @State private var isShowingRegistration = false
@State private var showLegacySupportNotice = false @State private var showLegacySupportNotice = false
@State private var isShowingTerms = false @State private var isShowingTerms = false
@State private var hasResetTermsOnAppear = false
@FocusState private var focusedField: Field? @FocusState private var focusedField: Field?
private enum Field: Hashable { private enum Field: Hashable {
@ -168,6 +169,10 @@ struct LoginView: View {
) )
} }
.onAppear { .onAppear {
if !hasResetTermsOnAppear {
viewModel.hasAcceptedTerms = false
hasResetTermsOnAppear = true
}
if shouldShowLegacySupportNotice { if shouldShowLegacySupportNotice {
showLegacySupportNotice = true showLegacySupportNotice = true
} }
@ -304,7 +309,6 @@ struct LoginView_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
let viewModel = LoginViewModel() let viewModel = LoginViewModel()
viewModel.isLoading = false // чтобы убрать спиннер viewModel.isLoading = false // чтобы убрать спиннер
viewModel.hasAcceptedTerms = true
return LoginView(viewModel: viewModel) return LoginView(viewModel: viewModel)
} }
} }

View File

@ -228,6 +228,7 @@ struct RegistrationView: View {
private func dismissSheet() { private func dismissSheet() {
focusedField = nil focusedField = nil
viewModel.hasAcceptedTerms = false
isPresented = false isPresented = false
presentationMode.wrappedValue.dismiss() presentationMode.wrappedValue.dismiss()
} }
@ -238,7 +239,6 @@ struct RegistrationView_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
let viewModel = LoginViewModel() let viewModel = LoginViewModel()
viewModel.isLoading = false // чтобы убрать спиннер viewModel.isLoading = false // чтобы убрать спиннер
viewModel.hasAcceptedTerms = true
return RegistrationView(viewModel: viewModel, isPresented: .constant(true)) return RegistrationView(viewModel: viewModel, isPresented: .constant(true))
} }
} }