Address review feedback

This commit is contained in:
Torsten Grote 2024-03-06 14:05:52 -03:00
parent ee581ee652
commit 8489753d58
No known key found for this signature in database
GPG key ID: 3E5F77D92CF891FF
4 changed files with 25 additions and 24 deletions

View file

@ -125,21 +125,20 @@ internal class MetadataManager(
val now = clock.time() val now = clock.time()
metadata.time = now metadata.time = now
metadata.d2dBackup = settingsManager.d2dBackupsEnabled() metadata.d2dBackup = settingsManager.d2dBackupsEnabled()
metadata.packageMetadataMap.getOrPut(packageName) {
if (metadata.packageMetadataMap.containsKey(packageName)) { PackageMetadata(
metadata.packageMetadataMap[packageName]!!.time = now
metadata.packageMetadataMap[packageName]!!.state = APK_AND_DATA
metadata.packageMetadataMap[packageName]!!.backupType = type
// don't override a previous K/V size, if there were no K/V changes
if (size != null) metadata.packageMetadataMap[packageName]!!.size = size
} else {
metadata.packageMetadataMap[packageName] = PackageMetadata(
time = now, time = now,
state = APK_AND_DATA, state = APK_AND_DATA,
backupType = type, backupType = type,
size = size, size = size,
system = packageInfo.isSystemApp(), system = packageInfo.isSystemApp(),
) )
}.apply {
time = now
state = APK_AND_DATA
backupType = type
// don't override a previous K/V size, if there were no K/V changes
if (size != null) this.size = size
} }
} }
} }
@ -159,18 +158,15 @@ internal class MetadataManager(
backupType: BackupType? = null, backupType: BackupType? = null,
) { ) {
check(packageState != APK_AND_DATA) { "Backup Error with non-error package state." } check(packageState != APK_AND_DATA) { "Backup Error with non-error package state." }
val packageName = packageInfo.packageName
modifyMetadata(metadataOutputStream) { modifyMetadata(metadataOutputStream) {
if (metadata.packageMetadataMap.containsKey(packageName)) { metadata.packageMetadataMap.getOrPut(packageInfo.packageName) {
metadata.packageMetadataMap[packageName]!!.state = packageState PackageMetadata(
} else {
metadata.packageMetadataMap[packageName] = PackageMetadata(
time = 0L, time = 0L,
state = packageState, state = packageState,
backupType = backupType, backupType = backupType,
system = packageInfo.isSystemApp() system = packageInfo.isSystemApp()
) )
} }.state = packageState
} }
} }
@ -186,16 +182,13 @@ internal class MetadataManager(
packageInfo: PackageInfo, packageInfo: PackageInfo,
packageState: PackageState, packageState: PackageState,
) = modifyCachedMetadata { ) = modifyCachedMetadata {
val packageName = packageInfo.packageName metadata.packageMetadataMap.getOrPut(packageInfo.packageName) {
if (metadata.packageMetadataMap.containsKey(packageName)) { PackageMetadata(
metadata.packageMetadataMap[packageName]!!.state = packageState
} else {
metadata.packageMetadataMap[packageName] = PackageMetadata(
time = 0L, time = 0L,
state = packageState, state = packageState,
system = packageInfo.isSystemApp(), system = packageInfo.isSystemApp(),
) )
} }.state = packageState
} }
/** /**

View file

@ -5,6 +5,7 @@ import androidx.activity.result.contract.ActivityResultContracts.CreateDocument
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreferenceCompat import androidx.preference.SwitchPreferenceCompat
import com.google.android.mms.ContentType.TEXT_PLAIN
import com.stevesoltys.seedvault.R import com.stevesoltys.seedvault.R
import com.stevesoltys.seedvault.permitDiskReads import com.stevesoltys.seedvault.permitDiskReads
import com.stevesoltys.seedvault.transport.backup.PackageService import com.stevesoltys.seedvault.transport.backup.PackageService
@ -17,7 +18,7 @@ class ExpertSettingsFragment : PreferenceFragmentCompat() {
private val packageService: PackageService by inject() private val packageService: PackageService by inject()
private val createFileLauncher = private val createFileLauncher =
registerForActivityResult(CreateDocument("text/plain")) { uri -> registerForActivityResult(CreateDocument(TEXT_PLAIN)) { uri ->
viewModel.onLogcatUriReceived(uri) viewModel.onLogcatUriReceived(uri)
} }

View file

@ -46,8 +46,8 @@ class SettingsActivity : RequireProvisioningActivity(), OnPreferenceStartFragmen
val title = getString(R.string.storage_check_fragment_backup_title) val title = getString(R.string.storage_check_fragment_backup_title)
showFragment(StorageCheckFragment.newInstance(title), true, tag) showFragment(StorageCheckFragment.newInstance(title), true, tag)
} else { } else {
val f = supportFragmentManager.findFragmentByTag(tag) val fragment = supportFragmentManager.findFragmentByTag(tag)
if (f != null && f.isVisible) supportFragmentManager.popBackStack() if (fragment?.isVisible == true) supportFragmentManager.popBackStack()
} }
} }
} }

View file

@ -263,6 +263,13 @@ class SettingsFragment : PreferenceFragmentCompat() {
} }
} }
/**
* Sets the summary for scheduling which is information about when the next backup is scheduled.
*
* It could be that it shows the backup as running,
* gives an estimate about when the next run will be or
* says that nothing is scheduled which can happen when backup destination is on flash drive.
*/
private fun setAppBackupSchedulingSummary(workInfo: WorkInfo?) { private fun setAppBackupSchedulingSummary(workInfo: WorkInfo?) {
if (storage?.isUsb == true) { if (storage?.isUsb == true) {
backupScheduling.summary = getString(R.string.settings_backup_status_next_backup_usb) backupScheduling.summary = getString(R.string.settings_backup_status_next_backup_usb)