90 lines
2.3 KiB
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
|
|
}
|
|
}
|