- BookmarkDetail: All user-facing texts and error messages in BookmarkDetailView, BookmarkDetailViewModel, BookmarkLabelsView, and BookmarkLabelsViewModel translated to English. - Bookmarks: All UI strings, swipe actions, and error messages in BookmarkCardView, BookmarksView, BookmarksViewModel, and related enums translated to English. - Labels: All UI and error messages in LabelsView and LabelsViewModel translated to English. - Menu: All sidebar/tab names, navigation titles, and queue texts in BookmarkState, PhoneTabView, PlayerQueueResumeButton, SidebarTab updated to English. - Settings: All section headers, toggle labels, button texts, and error/success messages in FontSettingsView, FontSettingsViewModel, SettingsContainerView, SettingsGeneralView, SettingsGeneralViewModel, SettingsServerView, SettingsServerViewModel translated to English. - SpeechPlayer: All player UI texts, progress, and queue messages in SpeechPlayerView translated to English. This commit unifies the app language to English for all user-facing areas.
79 lines
2.5 KiB
Swift
79 lines
2.5 KiB
Swift
import Foundation
|
|
import Observation
|
|
import SwiftUI
|
|
|
|
@Observable
|
|
class SettingsGeneralViewModel {
|
|
private let saveSettingsUseCase: PSaveSettingsUseCase
|
|
private let loadSettingsUseCase: PLoadSettingsUseCase
|
|
|
|
// MARK: - UI Settings
|
|
var selectedTheme: Theme = .system
|
|
// MARK: - Sync Settings
|
|
var autoSyncEnabled: Bool = true
|
|
var syncInterval: Int = 15
|
|
// MARK: - Reading Settings
|
|
var enableReaderMode: Bool = false
|
|
var openExternalLinksInApp: Bool = true
|
|
var autoMarkAsRead: Bool = false
|
|
// MARK: - App Info
|
|
var appVersion: String = "1.0.0"
|
|
var developerName: String = "Your Name"
|
|
// MARK: - Messages
|
|
var errorMessage: String?
|
|
var successMessage: String?
|
|
|
|
// MARK: - Data Management (Placeholder)
|
|
|
|
// func clearCache() async {}
|
|
// func resetSettings() async {}
|
|
|
|
init(_ factory: UseCaseFactory = DefaultUseCaseFactory.shared) {
|
|
self.saveSettingsUseCase = factory.makeSaveSettingsUseCase()
|
|
self.loadSettingsUseCase = factory.makeLoadSettingsUseCase()
|
|
}
|
|
|
|
@MainActor
|
|
func loadGeneralSettings() async {
|
|
do {
|
|
if let settings = try await loadSettingsUseCase.execute() {
|
|
selectedTheme = .system // settings.theme ?? .system
|
|
autoSyncEnabled = false // settings.autoSyncEnabled
|
|
// syncInterval = settings.syncInterval
|
|
// enableReaderMode = settings.enableReaderMode
|
|
// openExternalLinksInApp = settings.openExternalLinksInApp
|
|
// autoMarkAsRead = settings.autoMarkAsRead
|
|
appVersion = "1.0.0"
|
|
developerName = "Ilyas Hallak"
|
|
}
|
|
} catch {
|
|
errorMessage = "Error loading settings"
|
|
}
|
|
}
|
|
|
|
@MainActor
|
|
func saveGeneralSettings() async {
|
|
do {
|
|
|
|
// TODO: add save general settings here
|
|
/*try await saveSettingsUseCase.execute(
|
|
token: "",
|
|
selectedTheme: selectedTheme,
|
|
autoSyncEnabled: autoSyncEnabled,
|
|
syncInterval: syncInterval,
|
|
enableReaderMode: enableReaderMode,
|
|
openExternalLinksInApp: openExternalLinksInApp,
|
|
autoMarkAsRead: autoMarkAsRead
|
|
)*/
|
|
successMessage = "Settings saved"
|
|
} catch {
|
|
errorMessage = "Error saving settings"
|
|
}
|
|
}
|
|
|
|
func clearMessages() {
|
|
errorMessage = nil
|
|
successMessage = nil
|
|
}
|
|
}
|