Skip to content

Commit e2bf8dc

Browse files
committed
Do not duplicate BuildConfig fields in Const.kt
1 parent 0cc6a5a commit e2bf8dc

File tree

5 files changed

+30
-43
lines changed

5 files changed

+30
-43
lines changed

app/src/main/java/org/fcitx/fcitx5/android/core/data/DataManager.kt

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import kotlinx.serialization.encodeToString
1313
import kotlinx.serialization.json.Json
1414
import org.fcitx.fcitx5.android.BuildConfig
1515
import org.fcitx.fcitx5.android.core.data.DataManager.dataDir
16-
import org.fcitx.fcitx5.android.utils.Const
1716
import org.fcitx.fcitx5.android.utils.FileUtil
1817
import org.fcitx.fcitx5.android.utils.appContext
1918
import org.fcitx.fcitx5.android.utils.javaIdRegex
@@ -39,13 +38,13 @@ object DataManager {
3938
var synced = false
4039
private set
4140

42-
// should be consistent with the deserialization in build.gradle.kts (:app)
43-
private fun deserializeDataDescriptor(raw: String) = runCatching {
44-
json.decodeFromString<DataDescriptor>(raw)
41+
// should be consistent with the deserialization in DataDescriptorPlugin (:build-logic)
42+
private fun deserializeDataDescriptor(raw: String): DataDescriptor {
43+
return json.decodeFromString<DataDescriptor>(raw)
4544
}
4645

47-
private fun serializeDataDescriptor(descriptor: DataDescriptor) = runCatching {
48-
json.encodeToString(descriptor)
46+
private fun serializeDataDescriptor(descriptor: DataDescriptor): String {
47+
return json.encodeToString(descriptor)
4948
}
5049

5150
// If Android version supports direct boot, we put the hierarchy in device encrypted storage
@@ -57,14 +56,12 @@ object DataManager {
5756
File(appContext.applicationInfo.dataDir)
5857
}
5958

60-
private val destDescriptorFile = File(dataDir, Const.dataDescriptorName)
61-
62-
private fun AssetManager.getDataDescriptor() =
63-
open(Const.dataDescriptorName)
59+
private fun AssetManager.getDataDescriptor(): DataDescriptor {
60+
return open(BuildConfig.DATA_DESCRIPTOR_NAME)
6461
.bufferedReader()
6562
.use { it.readText() }
6663
.let { deserializeDataDescriptor(it) }
67-
.getOrThrow()
64+
}
6865

6966
private val loadedPlugins = mutableSetOf<PluginDescriptor>()
7067
private val failedPlugins = mutableMapOf<String, PluginLoadFailed>()
@@ -102,6 +99,7 @@ object DataManager {
10299
// Parse plugin.xml
103100
for (packageName in pluginPackages) {
104101
val res = pm.getResourcesForApplication(packageName)
102+
105103
@SuppressLint("DiscouragedApi")
106104
val resId = res.getIdentifier("plugin", "xml", packageName)
107105
if (resId == 0) {
@@ -201,24 +199,15 @@ object DataManager {
201199
loadedPlugins.clear()
202200
failedPlugins.clear()
203201

202+
val destDescriptorFile = File(dataDir, BuildConfig.DATA_DESCRIPTOR_NAME)
203+
204204
// load last run's data descriptor
205-
val oldDescriptor =
206-
destDescriptorFile
207-
.takeIf { it.exists() && it.isFile }
208-
?.runCatching { readText() }
209-
?.getOrNull()
210-
?.let { deserializeDataDescriptor(it) }
211-
?.getOrNull()
212-
?: DataDescriptor("", mapOf(), mapOf())
205+
val oldDescriptor = destDescriptorFile
206+
.runCatching { deserializeDataDescriptor(bufferedReader().use { it.readText() }) }
207+
.getOrElse { DataDescriptor("", emptyMap(), emptyMap()) }
213208

214209
// load app's data descriptor
215-
val mainDescriptor =
216-
appContext.assets
217-
.open(Const.dataDescriptorName)
218-
.bufferedReader()
219-
.use { it.readText() }
220-
.let { deserializeDataDescriptor(it) }
221-
.getOrThrow()
210+
val mainDescriptor = appContext.assets.getDataDescriptor()
222211

223212
val (parsedDescriptors, failed) = detectPlugins()
224213
failedPlugins.putAll(failed)
@@ -290,13 +279,15 @@ object DataManager {
290279
}
291280
}
292281
// save the new hierarchy as the data descriptor to be used in the next run
293-
destDescriptorFile.writeText(serializeDataDescriptor(newHierarchy.downToDataDescriptor()).getOrThrow())
282+
destDescriptorFile.bufferedWriter().use {
283+
it.write(serializeDataDescriptor(newHierarchy.downToDataDescriptor()))
284+
}
294285
callbacks.forEach { it() }
295286
callbacks.clear()
296287
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
297288
// remove old assets from credential encrypted storage
298289
val oldDataDir = appContext.dataDir
299-
val oldDataDescriptor = oldDataDir.resolve(Const.dataDescriptorName)
290+
val oldDataDescriptor = oldDataDir.resolve(BuildConfig.DATA_DESCRIPTOR_NAME)
300291
if (oldDataDescriptor.exists()) {
301292
oldDataDescriptor.delete()
302293
oldDataDir.resolve("README.md").delete()
@@ -324,7 +315,7 @@ object DataManager {
324315

325316
fun deleteAndSync() {
326317
lock.withLock {
327-
dataDir.resolve(Const.dataDescriptorName).delete()
318+
dataDir.resolve(BuildConfig.DATA_DESCRIPTOR_NAME).delete()
328319
dataDir.resolve("README.md").delete()
329320
dataDir.resolve("usr").deleteRecursively()
330321
}

app/src/main/java/org/fcitx/fcitx5/android/core/data/PluginDescriptor.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
*/
55
package org.fcitx.fcitx5.android.core.data
66

7+
import org.fcitx.fcitx5.android.BuildConfig
78
import org.fcitx.fcitx5.android.core.data.PluginDescriptor.Companion.pluginPackagePrefix
8-
import org.fcitx.fcitx5.android.utils.Const
99

1010
/**
1111
* Metadata of a plugin, at `res/xml/plugin.xml`
@@ -35,12 +35,11 @@ data class PluginDescriptor(
3535
val nativeLibraryDir: String,
3636
val libraryDependency: Map<String, List<String>>
3737
) {
38-
val name by lazy {
39-
packageName.removePrefix("$pluginPackagePrefix.").removeSuffix(".${Const.buildType}")
40-
}
38+
val name = packageName.removePrefix(pluginPackagePrefix).removeSuffix(pluginPackageSuffix)
4139

4240
companion object {
43-
const val pluginPackagePrefix = "org.fcitx.fcitx5.android.plugin"
41+
const val pluginPackagePrefix = "org.fcitx.fcitx5.android.plugin."
42+
const val pluginPackageSuffix = ".${BuildConfig.BUILD_TYPE}"
4443
const val pluginAPI = "0.1"
4544
}
4645
}

app/src/main/java/org/fcitx/fcitx5/android/ui/main/AboutFragment.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.content.Intent
88
import android.net.Uri
99
import android.os.Bundle
1010
import androidx.navigation.fragment.findNavController
11+
import org.fcitx.fcitx5.android.BuildConfig
1112
import org.fcitx.fcitx5.android.R
1213
import org.fcitx.fcitx5.android.ui.common.PaddingPreferenceFragment
1314
import org.fcitx.fcitx5.android.utils.Const
@@ -37,12 +38,12 @@ class AboutFragment : PaddingPreferenceFragment() {
3738
addCategory(R.string.version) {
3839
isIconSpaceReserved = false
3940
addPreference(R.string.current_version, Const.versionName)
40-
addPreference(R.string.build_git_hash, Const.buildGitHash) {
41-
val commit = Const.buildGitHash.substringBefore('-')
41+
addPreference(R.string.build_git_hash, BuildConfig.BUILD_GIT_HASH) {
42+
val commit = BuildConfig.BUILD_GIT_HASH.substringBefore('-')
4243
val uri = Uri.parse("${Const.githubRepo}/commit/${commit}")
4344
startActivity(Intent(Intent.ACTION_VIEW, uri))
4445
}
45-
addPreference(R.string.build_time, formatDateTime(Const.buildTime))
46+
addPreference(R.string.build_time, formatDateTime(BuildConfig.BUILD_TIME))
4647
}
4748
}
4849
}

app/src/main/java/org/fcitx/fcitx5/android/utils/Const.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,10 @@ package org.fcitx.fcitx5.android.utils
77
import org.fcitx.fcitx5.android.BuildConfig
88

99
object Const {
10-
const val buildTime = BuildConfig.BUILD_TIME
11-
const val buildGitHash = BuildConfig.BUILD_GIT_HASH
1210
const val versionName = "${BuildConfig.VERSION_NAME}-${BuildConfig.BUILD_TYPE}"
13-
const val dataDescriptorName = BuildConfig.DATA_DESCRIPTOR_NAME
1411
const val githubRepo = "https://github.com/fcitx5-android/fcitx5-android"
1512
const val licenseSpdxId = "LGPL-2.1-or-later"
1613
const val licenseUrl = "https://www.gnu.org/licenses/old-licenses/lgpl-2.1"
1714
const val privacyPolicyUrl = "https://fcitx5-android.github.io/privacy/"
1815
const val faqUrl = "https://fcitx5-android.github.io/faq/"
19-
const val buildType = BuildConfig.BUILD_TYPE
2016
}

app/src/main/java/org/fcitx/fcitx5/android/utils/DeviceInfo.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ object DeviceInfo {
3737
appendLine("Package Name: ${BuildConfig.APPLICATION_ID}")
3838
appendLine("Version Code: ${BuildConfig.VERSION_CODE}")
3939
appendLine("Version Name: ${Const.versionName}")
40-
appendLine("Build Time: ${iso8601UTCDateTime(Const.buildTime)}")
41-
appendLine("Build Git Hash: ${Const.buildGitHash}")
40+
appendLine("Build Time: ${iso8601UTCDateTime(BuildConfig.BUILD_TIME)}")
41+
appendLine("Build Git Hash: ${BuildConfig.BUILD_GIT_HASH}")
4242
}
4343
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy