Skip to content

Commit

Permalink
[fix] do not accept invalid cache and do not assume we have cache
Browse files Browse the repository at this point in the history
Signed-off-by: androidacy-user <[email protected]>
  • Loading branch information
androidacy-user committed Jul 20, 2023
1 parent 7adc736 commit b57c2a2
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,12 @@ class AndroidacyRepoData(cacheRoot: File?, testMode: Boolean) : RepoData(
)
var lastLastUpdate: Long = 0
for (i in 0 until len) {
jsonObject = jsonArray.getJSONObject(i)
try {
jsonObject = jsonArray.getJSONObject(i)
} catch (e: JSONException) {
Timber.e(e, "Failed to parse module")
continue
}
val moduleId: String = try {
jsonObject.getString("codename")
} catch (e: JSONException) {
Expand Down
79 changes: 42 additions & 37 deletions app/src/main/kotlin/com/fox2code/mmm/repo/RepoUpdater.kt
Original file line number Diff line number Diff line change
Expand Up @@ -61,46 +61,51 @@ class RepoUpdater(repoData2: RepoData) {
val moduleListCacheDao = db.moduleListCacheDao()
// now we have the cache, we need to check if it's up to date
val results = moduleListCacheDao.getByRepoId(repoData.preferenceId!!)
toUpdate = emptyList()
toApply = HashSet()
for (moduleListCache in results) {
(toApply as HashSet<RepoModule>).add(
RepoModule(
repoData,
moduleListCache.codename,
moduleListCache.name,
moduleListCache.description,
moduleListCache.author,
moduleListCache.donate,
moduleListCache.config,
moduleListCache.support,
moduleListCache.version,
moduleListCache.versionCode
if (results.isNotEmpty()) {
toUpdate = emptyList()
toApply = HashSet()
for (moduleListCache in results) {
(toApply as HashSet<RepoModule>).add(
RepoModule(
repoData,
moduleListCache.codename,
moduleListCache.name,
moduleListCache.description,
moduleListCache.author,
moduleListCache.donate,
moduleListCache.config,
moduleListCache.support,
moduleListCache.version,
moduleListCache.versionCode
)
)
}
Timber.d(
"Fetched %d modules from cache for %s, from %s records",
(toApply as HashSet<RepoModule>).size,
repoData.preferenceId,
results.size
)
val jsonObject = JSONObject()
// apply the toApply list to the toUpdate list
try {
jsonObject.put("modules", JSONArray(results))
toUpdate = repoData.populate(jsonObject)
} catch (e: Exception) {
Timber.e(e)
}
// log first 100 chars of indexRaw
indexRaw = jsonObject.toString().toByteArray()
Timber.d(
"Index raw: %s",
String(indexRaw!!, StandardCharsets.UTF_8).subSequence(0, 100)
)
// Since we reuse instances this should work
toApply = HashSet(repoData.moduleHashMap.values)
(toApply as HashSet<RepoModule>).removeAll(toUpdate!!.toSet())
// Return repo to update
return toUpdate!!.size
}
Timber.d(
"Fetched %d modules from cache for %s, from %s records",
(toApply as HashSet<RepoModule>).size,
repoData.preferenceId,
results.size
)
val jsonObject = JSONObject()
// apply the toApply list to the toUpdate list
try {
jsonObject.put("modules", JSONArray(results))
toUpdate = repoData.populate(jsonObject)
} catch (e: Exception) {
Timber.e(e)
}
// log first 100 chars of indexRaw
indexRaw = jsonObject.toString().toByteArray()
Timber.d("Index raw: %s", String(indexRaw!!, StandardCharsets.UTF_8).subSequence(0, 100))
// Since we reuse instances this should work
toApply = HashSet(repoData.moduleHashMap.values)
(toApply as HashSet<RepoModule>).removeAll(toUpdate!!.toSet())
// Return repo to update
return toUpdate!!.size
}
return try {
if (!repoData.prepare()) {
Expand Down

0 comments on commit b57c2a2

Please sign in to comment.