mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-14 09:57:31 -04:00
Added migration code to move from the internal app directory to the public app directory upon application update. This ensures that after updating, users will automatically start using the public directory for downloads without needing to configure storage settings.
This commit is contained in:
parent
7008e7b90b
commit
4cc76fbd89
@ -33,12 +33,15 @@ import androidx.navigation.NavDestination
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import androidx.navigation.ui.setupWithNavController
|
||||
import com.google.android.material.navigation.NavigationView
|
||||
import eu.mhutti1.utils.storage.StorageDeviceUtils
|
||||
import org.kiwix.kiwixmobile.BuildConfig
|
||||
import org.kiwix.kiwixmobile.R
|
||||
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions
|
||||
import org.kiwix.kiwixmobile.core.dao.NewBookDao
|
||||
import org.kiwix.kiwixmobile.core.downloader.fetch.DOWNLOAD_NOTIFICATION_TITLE
|
||||
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
||||
import org.kiwix.kiwixmobile.core.utils.EXTERNAL_SELECT_POSITION
|
||||
import org.kiwix.kiwixmobile.core.utils.INTERNAL_SELECT_POSITION
|
||||
import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange
|
||||
import org.kiwix.kiwixmobile.databinding.ActivityKiwixMainBinding
|
||||
import org.kiwix.kiwixmobile.kiwixActivityComponent
|
||||
@ -114,6 +117,24 @@ class KiwixMainActivity : CoreMainActivity() {
|
||||
onNavigationItemSelected(item)
|
||||
}
|
||||
activityKiwixMainBinding.bottomNavView.setupWithNavController(navController)
|
||||
migrateInternalToPublicAppDirectory()
|
||||
}
|
||||
|
||||
private fun migrateInternalToPublicAppDirectory() {
|
||||
if (!sharedPreferenceUtil.prefIsAppDirectoryMigrated) {
|
||||
val writableStoragePaths = StorageDeviceUtils.getWritableStorage(this)
|
||||
val targetStoragePath = when (sharedPreferenceUtil.storagePosition) {
|
||||
INTERNAL_SELECT_POSITION ->
|
||||
sharedPreferenceUtil.getPublicDirectoryPath(writableStoragePaths[0].name)
|
||||
|
||||
EXTERNAL_SELECT_POSITION -> writableStoragePaths.getOrNull(1)?.name
|
||||
else -> null
|
||||
}
|
||||
targetStoragePath?.let {
|
||||
sharedPreferenceUtil.putPrefStorage(it)
|
||||
sharedPreferenceUtil.putPrefAppDirectoryMigrated(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||
|
@ -114,12 +114,7 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider {
|
||||
}
|
||||
}
|
||||
|
||||
setMainActivityToCoreApp().also {
|
||||
// Creates the public app-specific directory for existing users who have not
|
||||
// configured storage, allowing them to copy their ZIM files into this
|
||||
// public directory. This directory is created only once.
|
||||
sharedPreferenceUtil.defaultPublicStorage()
|
||||
}
|
||||
setMainActivityToCoreApp()
|
||||
if (!sharedPreferenceUtil.prefIsBookmarksMigrated) {
|
||||
// run the migration on background thread to avoid any UI related issues.
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
|
@ -103,6 +103,9 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) {
|
||||
val prefIsHistoryMigrated: Boolean
|
||||
get() = sharedPreferences.getBoolean(PREF_HISTORY_MIGRATED, false)
|
||||
|
||||
val prefIsAppDirectoryMigrated: Boolean
|
||||
get() = sharedPreferences.getBoolean(PREF_APP_DIRECTORY_TO_PUBLIC_MIGRATED, false)
|
||||
|
||||
val prefStorage: String
|
||||
get() {
|
||||
val storage = sharedPreferences.getString(PREF_STORAGE, null)
|
||||
@ -146,6 +149,9 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) {
|
||||
fun putPrefNotesMigrated(isMigrated: Boolean) =
|
||||
sharedPreferences.edit { putBoolean(PREF_NOTES_MIGRATED, isMigrated) }
|
||||
|
||||
fun putPrefAppDirectoryMigrated(isMigrated: Boolean) =
|
||||
sharedPreferences.edit { putBoolean(PREF_APP_DIRECTORY_TO_PUBLIC_MIGRATED, isMigrated) }
|
||||
|
||||
fun putPrefLanguage(language: String) =
|
||||
sharedPreferences.edit { putString(PREF_LANG, language) }
|
||||
|
||||
@ -310,5 +316,6 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) {
|
||||
const val PREF_RECENT_SEARCH_MIGRATED = "pref_recent_search_migrated"
|
||||
const val PREF_HISTORY_MIGRATED = "pref_history_migrated"
|
||||
const val PREF_NOTES_MIGRATED = "pref_notes_migrated"
|
||||
const val PREF_APP_DIRECTORY_TO_PUBLIC_MIGRATED = "pref_app_directory_to_public_migrated"
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user