AutoCat/AutoCat/Screens/SettingsScreen/SettingsViewModel.swift

90 lines
2.3 KiB
Swift

//
// SettingsViewModel.swift
// AutoCat
//
// Created by Selim Mustafaev on 17.08.2024.
// Copyright © 2024 Selim Mustafaev. All rights reserved.
//
import SwiftUI
import AutoCatCore
@MainActor
@Observable
class SettingsViewModel {
weak var coordinator: SettingsCoordinator?
var settingService: SettingsServiceProtocol
var autocatEmail: String {
settingService.user.email
}
var canSignOut: Bool {
!settingService.user.token.isEmpty
}
var googleAuthorized: Bool {
settingService.user.firebaseIdToken != nil
}
var googleUsername: String? {
guard let jwtString = settingService.user.firebaseIdToken,
let jwt = JWT<FirebasePayload>(string: jwtString) else { return nil }
return jwt.payload.name
}
var googleEmail: String? {
guard let jwtString = settingService.user.firebaseIdToken,
let jwt = JWT<FirebasePayload>(string: jwtString) else { return nil }
return jwt.payload.email
}
var recognizeAlternativeOrder: Bool {
get { settingService.recognizeAlternativeOrder }
set { settingService.recognizeAlternativeOrder = newValue }
}
var recognizeShortenedNumbers: Bool {
get { settingService.recognizeShortenedNumbers }
set { settingService.recognizeShortenedNumbers = newValue }
}
var backend: Constants.Backend {
get { settingService.backend }
set { settingService.backend = newValue }
}
var recordBeep: Bool {
get { settingService.recordBeep }
set { settingService.recordBeep = newValue }
}
var showDebugInfo: Bool {
get { settingService.showDebugInfo }
set { settingService.showDebugInfo = newValue }
}
var defaultRegion: String {
get { settingService.defaultRegion }
set { settingService.defaultRegion = newValue }
}
init(settingsService: SettingsServiceProtocol) {
self.settingService = settingsService
}
func signOut() {
settingService.user.token = ""
coordinator?.openAuthScreen()
}
func googleSignout() {
settingService.user.firebaseIdToken = nil
settingService.user.firebaseRefreshToken = nil
}
}