Skip to content

Commit 783a5c0

Browse files
committed
wip
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent aa380fd commit 783a5c0

1 file changed

Lines changed: 42 additions & 40 deletions

File tree

app/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupFragment.kt

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -83,24 +83,7 @@ class BackupFragment :
8383
private var showSidebar = true
8484
private var showCalendarBackup = true
8585

86-
private var isCalendarBackupEnabled: Boolean
87-
get() = arbitraryDataProvider.getBooleanValue(user, PREFERENCE_CALENDAR_BACKUP_ENABLED)
88-
set(enabled) = arbitraryDataProvider.storeOrUpdateKeyValue(
89-
user.accountName,
90-
PREFERENCE_CALENDAR_BACKUP_ENABLED,
91-
enabled
92-
)
93-
94-
private var isContactsBackupEnabled: Boolean
95-
get() = arbitraryDataProvider.getBooleanValue(user, PREFERENCE_CONTACTS_BACKUP_ENABLED)
96-
set(enabled) = arbitraryDataProvider.storeOrUpdateKeyValue(
97-
user.accountName,
98-
PREFERENCE_CONTACTS_BACKUP_ENABLED,
99-
enabled
100-
)
101-
102-
//region Lifecycle
103-
86+
// region Lifecycle
10487
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
10588
if (themeUtils.themingEnabled(context)) requireContext().theme.applyStyle(R.style.FallbackThemingTheme, true)
10689

@@ -118,7 +101,7 @@ class BackupFragment :
118101
val contactsPreferenceActivity = requireActivity() as ContactsPreferenceActivity
119102
user = contactsPreferenceActivity.user.orElseThrow { RuntimeException() }
120103

121-
setupSwitches(user)
104+
setupSwitches()
122105
setupCheckListeners()
123106
setBackupNowButtonVisibility()
124107
setOnClickListeners()
@@ -148,32 +131,54 @@ class BackupFragment :
148131
outState.putSerializable(KEY_CALENDAR_DATE, GregorianCalendar(it.year, it.month, it.dayOfMonth))
149132
}
150133
}
134+
// endregion
151135

152-
//endregion
153-
154-
//region Setup
136+
// region Setup
137+
private fun setupSwitches() {
138+
val activity = getTypedActivity(ContactsPreferenceActivity::class.java) ?: return
139+
val user = activity.user?.takeIf { it.isPresent }?.get() ?: return
155140

156-
private fun setupSwitches(user: User) {
157141
binding.dailyBackup.isChecked = arbitraryDataProvider.getBooleanValue(
158142
user,
159143
ContactsPreferenceActivity.PREFERENCE_CONTACTS_AUTOMATIC_BACKUP
160144
)
161-
binding.contacts.isChecked = isContactsBackupEnabled && checkContactBackupPermission()
162-
binding.calendar.isChecked = isCalendarBackupEnabled && checkCalendarBackupPermission(requireContext())
145+
binding.contacts.isChecked = isBackupEnabled(BackupType.Contacts) && checkContactBackupPermission()
146+
binding.calendar.isChecked = isBackupEnabled(BackupType.Calendar) && checkCalendarBackupPermission(requireContext())
163147
binding.calendar.visibility = if (showCalendarBackup) View.VISIBLE else View.GONE
164148
}
165149

150+
private enum class BackupType(val key: String) {
151+
Calendar(PREFERENCE_CALENDAR_BACKUP_ENABLED),
152+
Contacts(PREFERENCE_CONTACTS_BACKUP_ENABLED)
153+
}
154+
155+
private fun isBackupEnabled(type: BackupType): Boolean {
156+
val activity = getTypedActivity(ContactsPreferenceActivity::class.java) ?: return false
157+
val user = activity.user?.takeIf { it.isPresent }?.get() ?: return false
158+
return arbitraryDataProvider.getBooleanValue(user, type.key)
159+
}
160+
161+
private fun setBackup(type: BackupType, value: Boolean) {
162+
val activity = getTypedActivity(ContactsPreferenceActivity::class.java) ?: return
163+
val user = activity.user?.takeIf { it.isPresent }?.get() ?: return
164+
arbitraryDataProvider.storeOrUpdateKeyValue(
165+
user.accountName,
166+
type.key,
167+
value
168+
)
169+
}
170+
166171
private fun setupCheckListeners() {
167172
binding.dailyBackup.setOnCheckedChangeListener { _, isChecked ->
168173
if (checkAndAskForContactsReadPermission()) setAutomaticBackup(isChecked)
169174
}
170175
contactsCheckedListener = CompoundButton.OnCheckedChangeListener { _, isChecked ->
171-
isContactsBackupEnabled = isChecked && checkAndAskForContactsReadPermission()
176+
setBackup(BackupType.Contacts, (isChecked && checkAndAskForContactsReadPermission()))
172177
setBackupNowButtonVisibility()
173178
setAutomaticBackup(binding.dailyBackup.isChecked)
174179
}
175180
calendarCheckedListener = CompoundButton.OnCheckedChangeListener { _, isChecked ->
176-
isCalendarBackupEnabled = isChecked && checkAndAskForCalendarReadPermission()
181+
setBackup(BackupType.Calendar, (isChecked && checkAndAskForCalendarReadPermission()))
177182
setBackupNowButtonVisibility()
178183
setAutomaticBackup(binding.dailyBackup.isChecked)
179184
}
@@ -263,19 +268,17 @@ class BackupFragment :
263268
}
264269
return true
265270
}
266-
267271
//endregion
268272

269273
//region Backup operations
270-
271274
private fun backupNow() {
272275
val activity = getTypedActivity(ContactsPreferenceActivity::class.java) ?: return
273276
val user = activity.user?.takeIf { it.isPresent }?.get() ?: return
274277

275-
if (isContactsBackupEnabled && checkContactBackupPermission()) {
278+
if (isBackupEnabled(BackupType.Contacts) && checkContactBackupPermission()) {
276279
backgroundJobManager.startImmediateContactsBackup(user)
277280
}
278-
if (showCalendarBackup && isCalendarBackupEnabled && checkCalendarBackupPermission(requireContext())) {
281+
if (showCalendarBackup && isBackupEnabled(BackupType.Calendar) && checkCalendarBackupPermission(requireContext())) {
279282
backgroundJobManager.startImmediateCalendarBackup(user)
280283
}
281284
DisplayUtils.showSnackMessage(this, R.string.contacts_preferences_backup_scheduled)
@@ -286,14 +289,14 @@ class BackupFragment :
286289
val user = activity.user?.takeIf { it.isPresent }?.get() ?: return
287290

288291
if (enabled) {
289-
if (isContactsBackupEnabled) {
292+
if (isBackupEnabled(BackupType.Contacts)) {
290293
Log_OC.d(TAG, "Scheduling contacts backup job")
291294
backgroundJobManager.schedulePeriodicContactsBackup(user)
292295
} else {
293296
Log_OC.d(TAG, "Cancelling contacts backup job")
294297
backgroundJobManager.cancelPeriodicContactsBackup(user)
295298
}
296-
if (isCalendarBackupEnabled) {
299+
if (isBackupEnabled(BackupType.Calendar)) {
297300
Log_OC.d(TAG, "Scheduling calendar backup job")
298301
backgroundJobManager.schedulePeriodicCalendarBackup(user)
299302
} else {
@@ -354,11 +357,9 @@ class BackupFragment :
354357
addAll(storageManager.getFolderContent(calendarFolder, false))
355358
}
356359
}
357-
358360
//endregion
359361

360362
//region Date picker
361-
362363
private fun openCleanDate() {
363364
if (checkAndAskForCalendarReadPermission() && checkAndAskForContactsReadPermission()) openDate(null)
364365
}
@@ -448,11 +449,9 @@ class BackupFragment :
448449
val calendarBackups = if (showCalendarBackup) inRange.filter { MimeTypeUtil.isCalendar(it) } else emptyList()
449450
return listOfNotNull(contactBackup) + calendarBackups
450451
}
451-
452452
//endregion
453453

454454
//region Permissions
455-
456455
private fun checkAndAskForContactsReadPermission(): Boolean {
457456
if (checkSelfPermission(requireActivity(), Manifest.permission.READ_CONTACTS)) return true
458457
requestContactsPermissionLauncher.launch(Manifest.permission.READ_CONTACTS)
@@ -482,7 +481,11 @@ class BackupFragment :
482481

483482
private val requestContactsPermissionLauncher =
484483
registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted ->
485-
if (isGranted) isContactsBackupEnabled = true else resetSwitch(binding.contacts, contactsCheckedListener)
484+
if (isGranted) {
485+
setBackup(BackupType.Contacts, true)
486+
} else {
487+
resetSwitch(binding.contacts, contactsCheckedListener)
488+
}
486489
setBackupNowButtonVisibility()
487490
setAutomaticBackup(binding.dailyBackup.isChecked)
488491
}
@@ -492,14 +495,13 @@ class BackupFragment :
492495
val readGranted = permissions[Manifest.permission.READ_CALENDAR] == true
493496
val writeGranted = permissions[Manifest.permission.WRITE_CALENDAR] == true
494497
if (readGranted && writeGranted) {
495-
isCalendarBackupEnabled = true
498+
setBackup(BackupType.Calendar, true)
496499
} else {
497500
resetSwitch(binding.calendar, calendarCheckedListener)
498501
}
499502
setBackupNowButtonVisibility()
500503
setAutomaticBackup(binding.dailyBackup.isChecked)
501504
}
502-
503505
//endregion
504506

505507
companion object {

0 commit comments

Comments
 (0)