diff --git a/app/src/main/java/com/example/login_v3/data/di/NetworkModule.kt b/app/src/main/java/com/example/login_v3/data/di/NetworkModule.kt index ccb8fa2..d8f8921 100644 --- a/app/src/main/java/com/example/login_v3/data/di/NetworkModule.kt +++ b/app/src/main/java/com/example/login_v3/data/di/NetworkModule.kt @@ -32,4 +32,4 @@ object NetworkModule { // 直接使用上面提供的 retrofit 實體 return retrofit.create(TecnologiaApi::class.java) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/login_v3/data/local/UserPreferences/UserPreferences_Repository.kt b/app/src/main/java/com/example/login_v3/data/local/UserPreferences/UserPreferences_Repository.kt new file mode 100644 index 0000000..da1e1f1 --- /dev/null +++ b/app/src/main/java/com/example/login_v3/data/local/UserPreferences/UserPreferences_Repository.kt @@ -0,0 +1,38 @@ +package com.example.login_v3.data.local.UserPreferences + +import androidx.datastore.core.DataStore +import androidx.datastore.preferences.core.Preferences // 確保是這個 Preferences +import androidx.datastore.preferences.core.edit +import androidx.datastore.preferences.core.emptyPreferences +import androidx.datastore.preferences.core.stringPreferencesKey +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.map +import java.io.IOException + + +class UserPreferencesRepository(private val dataStore: DataStore) { + + private object PreferencesKeys { + val THEME_MODE = stringPreferencesKey("theme_mode") + } + + // 讀取設定:直接在宣告時賦值,簡潔又安全 + val themeModeFlow: Flow = dataStore.data + .catch { exception -> + if (exception is IOException) { + emit(emptyPreferences()) + } else { + throw exception + } + } + .map { preferences -> + preferences[PreferencesKeys.THEME_MODE] ?: "system" + } + + suspend fun saveThemeMode(mode: String) { + dataStore.edit { preferences -> + preferences[PreferencesKeys.THEME_MODE] = mode + } + } +} \ No newline at end of file