Skip to content

Commit

Permalink
Reduce some cognitive complexity
Browse files Browse the repository at this point in the history
  • Loading branch information
LunarX committed Oct 12, 2023
1 parent 1b165ec commit 6b56495
Showing 1 changed file with 83 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,77 @@ class SyncSettingsActivity : BaseActivity() {
saveOldPictures.value = SavePicturesDate.SINCE_NOW
}

observeAllUsers()
observeCustomDate()
observeSelectedDrive()

selectPath.setOnClickListener {
Intent(this@SyncSettingsActivity, SelectFolderActivity::class.java).apply {
putExtras(
SelectFolderActivityArgs(
userId = selectDriveViewModel.selectedUserId.value!!,
driveId = selectDriveViewModel.selectedDrive.value?.id!!,
folderId = syncSettingsViewModel.syncFolder.value ?: -1,
disabledFolderId = Utils.ROOT_ID,
).toBundle()
)
selectFolderResultLauncher.launch(this)
}
}

observeSyncFolder()
observeSaveOldPictures(oldSaveOldPicturesValue)

syncDatePicker.setOnClickListener { showSyncDatePicker() }

observeSyncIntervalType(oldIntervalTypeValue)

syncVideoSwitch.isChecked = oldSyncVideoValue
createDatedSubFoldersSwitch.isChecked = oldCreateDatedSubFoldersValue
deletePicturesAfterSyncSwitch.isChecked = oldDeleteAfterSyncValue

activateSync.setOnClickListener { activateSyncSwitch.isChecked = !activateSyncSwitch.isChecked }
activateSyncSwitch.setOnCheckedChangeListener { _, isChecked ->
saveSettingVisibility(isChecked)
if (AccountUtils.isEnableAppSync() == isChecked) editNumber-- else editNumber++
if (isChecked) permission.checkSyncPermissions()
changeSaveButtonStatus()
}

mediaFolders.setOnClickListener {
SelectMediaFoldersDialog().show(supportFragmentManager, "SyncSettingsSelectMediaFoldersDialog")
}

syncVideoSwitch.setOnCheckedChangeListener { _, isChecked ->
if (oldSyncVideoValue == isChecked) editNumber-- else editNumber++
changeSaveButtonStatus()
}

createDatedSubFoldersSwitch.setOnCheckedChangeListener { _, isChecked ->
if (oldCreateDatedSubFoldersValue == isChecked) editNumber-- else editNumber++
changeSaveButtonStatus()
}

deletePicturesAfterSyncSwitch.setOnCheckedChangeListener { _, isChecked ->
if (oldDeleteAfterSyncValue == isChecked) editNumber-- else editNumber++
changeSaveButtonStatus()
}

syncDate.setOnClickListener {
SelectSaveDateBottomSheetDialog().show(supportFragmentManager, "SyncSettingsSelectSaveDateBottomSheetDialog")
}

syncPeriodicity.setOnClickListener {
SelectIntervalTypeBottomSheetDialog().show(supportFragmentManager, "SyncSettingsSelectIntervalTypeBottomSheetDialog")
}

saveButton.initProgress(this@SyncSettingsActivity)
saveButton.setOnClickListener {
if (permission.checkSyncPermissions()) saveSettings()
}
}

private fun observeAllUsers() {
AccountUtils.getAllUsers().observe(this@SyncSettingsActivity) { users ->
if (users.size > 1) {
activeSelectDrive()
Expand All @@ -121,22 +192,27 @@ class SyncSettingsActivity : BaseActivity() {
}
}
}
}

private fun observeCustomDate() = with(binding) {
syncSettingsViewModel.customDate.observe(this@SyncSettingsActivity) { date ->
syncDatePicker.apply {
isGone = date == null
text = date?.format(FORMAT_DATE_CLEAR_MONTH) ?: ""
}
}
}

private fun observeSelectedDrive() = with(binding) {
selectDriveViewModel.selectedDrive.observe(this@SyncSettingsActivity) {
it?.let {
driveIcon.imageTintList = ColorStateList.valueOf(Color.parseColor(it.preferences.color))
driveName.text = it.name
selectDivider.isVisible = true
selectPath.isVisible = true
} ?: run {
driveIcon.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(this@SyncSettingsActivity, R.color.iconColor))
driveIcon.imageTintList =
ColorStateList.valueOf(ContextCompat.getColor(this@SyncSettingsActivity, R.color.iconColor))
driveName.setText(R.string.selectDriveTitle)
selectDivider.isGone = true
selectPath.isGone = true
Expand All @@ -149,21 +225,9 @@ class SyncSettingsActivity : BaseActivity() {
}
changeSaveButtonStatus()
}
}

selectPath.setOnClickListener {
Intent(this@SyncSettingsActivity, SelectFolderActivity::class.java).apply {
putExtras(
SelectFolderActivityArgs(
userId = selectDriveViewModel.selectedUserId.value!!,
driveId = selectDriveViewModel.selectedDrive.value?.id!!,
folderId = syncSettingsViewModel.syncFolder.value ?: -1,
disabledFolderId = Utils.ROOT_ID,
).toBundle()
)
selectFolderResultLauncher.launch(this)
}
}

private fun observeSyncFolder() = with(binding) {
syncSettingsViewModel.syncFolder.observe(this@SyncSettingsActivity) { syncFolderId ->

val selectedUserId = selectDriveViewModel.selectedUserId.value
Expand All @@ -178,7 +242,9 @@ class SyncSettingsActivity : BaseActivity() {
}
mediaFoldersSettingsVisibility(syncFolderId != null)
}
}

private fun observeSaveOldPictures(oldSaveOldPicturesValue: SavePicturesDate) = with(binding) {
syncSettingsViewModel.saveOldPictures.observe(this@SyncSettingsActivity) {
if (it != oldSaveOldPicturesValue) editNumber++
changeSaveButtonStatus()
Expand All @@ -190,58 +256,14 @@ class SyncSettingsActivity : BaseActivity() {
syncSettingsViewModel.customDate.value = null
}
}
}

syncDatePicker.setOnClickListener { showSyncDatePicker() }

private fun observeSyncIntervalType(oldIntervalTypeValue: IntervalType) = with(binding) {
syncSettingsViewModel.syncIntervalType.observe(this@SyncSettingsActivity) {
if (syncSettingsViewModel.syncIntervalType.value != oldIntervalTypeValue) editNumber++
changeSaveButtonStatus()
syncPeriodicityValue.text = getString(it.title).lowercase()
}

syncVideoSwitch.isChecked = oldSyncVideoValue
createDatedSubFoldersSwitch.isChecked = oldCreateDatedSubFoldersValue
deletePicturesAfterSyncSwitch.isChecked = oldDeleteAfterSyncValue

activateSync.setOnClickListener { activateSyncSwitch.isChecked = !activateSyncSwitch.isChecked }
activateSyncSwitch.setOnCheckedChangeListener { _, isChecked ->
saveSettingVisibility(isChecked)
if (AccountUtils.isEnableAppSync() == isChecked) editNumber-- else editNumber++
if (isChecked) permission.checkSyncPermissions()
changeSaveButtonStatus()
}

mediaFolders.setOnClickListener {
SelectMediaFoldersDialog().show(supportFragmentManager, "SyncSettingsSelectMediaFoldersDialog")
}

syncVideoSwitch.setOnCheckedChangeListener { _, isChecked ->
if (oldSyncVideoValue == isChecked) editNumber-- else editNumber++
changeSaveButtonStatus()
}

createDatedSubFoldersSwitch.setOnCheckedChangeListener { _, isChecked ->
if (oldCreateDatedSubFoldersValue == isChecked) editNumber-- else editNumber++
changeSaveButtonStatus()
}

deletePicturesAfterSyncSwitch.setOnCheckedChangeListener { _, isChecked ->
if (oldDeleteAfterSyncValue == isChecked) editNumber-- else editNumber++
changeSaveButtonStatus()
}

syncDate.setOnClickListener {
SelectSaveDateBottomSheetDialog().show(supportFragmentManager, "SyncSettingsSelectSaveDateBottomSheetDialog")
}

syncPeriodicity.setOnClickListener {
SelectIntervalTypeBottomSheetDialog().show(supportFragmentManager, "SyncSettingsSelectIntervalTypeBottomSheetDialog")
}

saveButton.initProgress(this@SyncSettingsActivity)
saveButton.setOnClickListener {
if (permission.checkSyncPermissions()) saveSettings()
}
}

private fun setOnBackPressed() {
Expand Down

0 comments on commit 6b56495

Please sign in to comment.