Skip to content

Commit

Permalink
fix: instantiate property as requested instead of caching it
Browse files Browse the repository at this point in the history
Set external storage path and its related directory as getter property,
so that it will return the latest value when it is called.

Refs #1158
  • Loading branch information
goofyz committed Dec 28, 2023
1 parent d5fe6de commit f70e525
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
7 changes: 4 additions & 3 deletions app/src/main/java/com/osfans/trime/data/AppPrefs.kt
Original file line number Diff line number Diff line change
Expand Up @@ -333,14 +333,15 @@ class AppPrefs(
const val TIMING_SYNC_TRIGGER_TIME = "profile_timing_sync_trigger_time"
const val LAST_SYNC_STATUS = "profile_last_sync_status"
const val LAST_BACKGROUND_SYNC = "profile_last_background_sync"
val EXTERNAL_PATH_PREFIX: String = PathUtils.getExternalStoragePath()

private fun getExternalPathPrefix() = PathUtils.getExternalStoragePath()
}

var sharedDataDir: String
get() = prefs.getPref(SHARED_DATA_DIR, "$EXTERNAL_PATH_PREFIX/rime")
get() = prefs.getPref(SHARED_DATA_DIR, "${getExternalPathPrefix()}/rime")
set(v) = prefs.setPref(SHARED_DATA_DIR, v)
var userDataDir: String
get() = prefs.getPref(USER_DATA_DIR, "$EXTERNAL_PATH_PREFIX/rime")
get() = prefs.getPref(USER_DATA_DIR, "${getExternalPathPrefix()}/rime")
set(v) = prefs.setPref(USER_DATA_DIR, v)
var syncBackgroundEnabled: Boolean
get() = prefs.getPref(SYNC_BACKGROUND_ENABLED, false)
Expand Down
25 changes: 14 additions & 11 deletions app/src/main/java/com/osfans/trime/data/DataManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,18 @@ import timber.log.Timber
import java.io.File

object DataManager : DataDirectoryChangeListener.Listener {
private const val DEFAULT_CUSTOM_FILE_NAME = "default.custom.yaml"
private val prefs get() = AppPrefs.defaultInstance()

val defaultDataDirectory = File(PathUtils.getExternalStoragePath(), "rime")

@JvmStatic
var sharedDataDir = File(prefs.profile.sharedDataDir)
val sharedDataDir
get() = File(prefs.profile.sharedDataDir)

@JvmStatic
var userDataDir = File(prefs.profile.userDataDir)
val customDefault = File(sharedDataDir, "default.custom.yaml")

private val stagingDir = File(userDataDir, "build")
private val prebuiltDataDir = File(sharedDataDir, "build")
val userDataDir
get() = File(prefs.profile.userDataDir)

init {
DataDirectoryChangeListener.addDirectoryChangeListener(this)
Expand All @@ -42,6 +41,9 @@ object DataManager : DataDirectoryChangeListener.Listener {
*/
@JvmStatic
fun resolveDeployedResourcePath(resourceId: String): String {
val stagingDir = File(userDataDir, "build")
val prebuiltDataDir = File(sharedDataDir, "build")

val defaultPath = File(stagingDir, "$resourceId.yaml")
if (!defaultPath.exists()) {
val fallbackPath = File(prebuiltDataDir, "$resourceId.yaml")
Expand Down Expand Up @@ -84,9 +86,12 @@ object DataManager : DataDirectoryChangeListener.Listener {
}

// FIXME:缺失 default.custom.yaml 会导致方案列表为空
if (!customDefault.exists()) {
Timber.d("Creating empty default.custom.yaml ...")
customDefault.createNewFile()
with(File(sharedDataDir, DEFAULT_CUSTOM_FILE_NAME)) {
val customDefault = this
if (!customDefault.exists()) {
Timber.d("Creating empty default.custom.yaml ...")
customDefault.createNewFile()
}
}

Timber.i("Synced!")
Expand All @@ -96,7 +101,5 @@ object DataManager : DataDirectoryChangeListener.Listener {
* Update sharedDataDir and userDataDir.
*/
override fun onDataDirectoryChange() {
sharedDataDir = File(prefs.profile.sharedDataDir)
userDataDir = File(prefs.profile.userDataDir)
}
}

0 comments on commit f70e525

Please sign in to comment.