diff --git a/app/src/main/java/me/lucky/wasted/MainActivity.kt b/app/src/main/java/me/lucky/wasted/MainActivity.kt index e990a06..7278d5f 100644 --- a/app/src/main/java/me/lucky/wasted/MainActivity.kt +++ b/app/src/main/java/me/lucky/wasted/MainActivity.kt @@ -64,7 +64,7 @@ open class MainActivity : AppCompatActivity() { wipeESIM.isChecked = prefs.isWipeESIM wipeESIM.isEnabled = wipeData.isChecked maxFailedPasswordAttempts.value = prefs.maxFailedPasswordAttempts.toFloat() - wipeOnInactiveSwitch.isChecked = prefs.isWipeOnInactive + wipeOnInactivitySwitch.isChecked = prefs.isWipeOnInactivity toggle.isChecked = prefs.isServiceEnabled } } @@ -91,17 +91,17 @@ open class MainActivity : AppCompatActivity() { maxFailedPasswordAttempts.addOnChangeListener { _, value, _ -> prefs.maxFailedPasswordAttempts = value.toInt() } - wipeOnInactiveSwitch.setOnCheckedChangeListener { _, isChecked -> - if (!setWipeOnInactiveComponentsState(prefs.isServiceEnabled && isChecked)) { - wipeOnInactiveSwitch.isChecked = false + wipeOnInactivitySwitch.setOnCheckedChangeListener { _, isChecked -> + if (!setWipeOnInactivityComponentsState(prefs.isServiceEnabled && isChecked)) { + wipeOnInactivitySwitch.isChecked = false showWipeJobServiceStartFailedPopup() return@setOnCheckedChangeListener } - prefs.isWipeOnInactive = isChecked + prefs.isWipeOnInactivity = isChecked } - wipeOnInactiveSwitch.setOnLongClickListener { - showWipeOnInactiveSettings() + wipeOnInactivitySwitch.setOnLongClickListener { + showWipeOnInactivitySettings() true } toggle.setOnCheckedChangeListener { _, isChecked -> @@ -113,19 +113,19 @@ open class MainActivity : AppCompatActivity() { } } - private fun showWipeOnInactiveSettings() { + private fun showWipeOnInactivitySettings() { val items = arrayOf("1", "2", "3", "5", "7", "10", "15", "30") - var days = prefs.wipeOnInactiveDays + var days = prefs.wipeOnInactivityDays var checked = items.indexOf(days.toString()) if (checked == -1) checked = items - .indexOf(Preferences.DEFAULT_WIPE_ON_INACTIVE_DAYS.toString()) + .indexOf(Preferences.DEFAULT_WIPE_ON_INACTIVITY_DAYS.toString()) MaterialAlertDialogBuilder(this) - .setTitle(R.string.wipe_on_inactive_days) + .setTitle(R.string.wipe_on_inactivity_days) .setSingleChoiceItems(items, checked) { _, which -> days = items[which].toInt() } .setPositiveButton(R.string.ok) { _, _ -> - prefs.wipeOnInactiveDays = days + prefs.wipeOnInactivityDays = days } .show() } @@ -137,7 +137,7 @@ open class MainActivity : AppCompatActivity() { } private fun setOn() { - if (!setWipeOnInactiveComponentsState(prefs.isWipeOnInactive)) { + if (!setWipeOnInactivityComponentsState(prefs.isWipeOnInactivity)) { binding.toggle.isChecked = false showWipeJobServiceStartFailedPopup() return @@ -158,7 +158,7 @@ open class MainActivity : AppCompatActivity() { private fun setOff() { prefs.isServiceEnabled = false setCodeReceiverState(false) - setWipeOnInactiveComponentsState(false) + setWipeOnInactivityComponentsState(false) shortcut.remove() admin.remove() } @@ -185,7 +185,7 @@ open class MainActivity : AppCompatActivity() { } } - private fun setWipeOnInactiveComponentsState(value: Boolean): Boolean { + private fun setWipeOnInactivityComponentsState(value: Boolean): Boolean { val result = job.setState(value) if (result) { setUnlockServiceState(value) diff --git a/app/src/main/java/me/lucky/wasted/Preferences.kt b/app/src/main/java/me/lucky/wasted/Preferences.kt index b766302..e8925e2 100644 --- a/app/src/main/java/me/lucky/wasted/Preferences.kt +++ b/app/src/main/java/me/lucky/wasted/Preferences.kt @@ -7,7 +7,7 @@ import androidx.security.crypto.MasterKeys class Preferences(ctx: Context) { companion object { - const val DEFAULT_WIPE_ON_INACTIVE_DAYS = 7 + const val DEFAULT_WIPE_ON_INACTIVITY_DAYS = 7 private const val SERVICE_ENABLED = "service_enabled" private const val CODE = "code" @@ -15,12 +15,14 @@ class Preferences(ctx: Context) { private const val WIPE_DATA = "wipe_data" private const val WIPE_ESIM = "wipe_esim" private const val MAX_FAILED_PASSWORD_ATTEMPTS = "max_failed_password_attempts" - private const val WIPE_ON_INACTIVE = "wipe_on_inactive" - private const val WIPE_ON_INACTIVE_DAYS = "wipe_on_inactive_days" + private const val WIPE_ON_INACTIVITY = "wipe_on_inactivity" + private const val WIPE_ON_INACTIVITY_DAYS = "wipe_on_inactivity_days" private const val FILE_NAME = "sec_shared_prefs" // migration private const val DO_WIPE = "do_wipe" + private const val WIPE_ON_INACTIVE = "wipe_on_inactive" + private const val WIPE_ON_INACTIVE_DAYS = "wipe_on_inactive_days" } private val mk = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC) @@ -56,11 +58,17 @@ class Preferences(ctx: Context) { get() = prefs.getInt(MAX_FAILED_PASSWORD_ATTEMPTS, 0) set(value) = prefs.edit { putInt(MAX_FAILED_PASSWORD_ATTEMPTS, value) } - var isWipeOnInactive: Boolean - get() = prefs.getBoolean(WIPE_ON_INACTIVE, false) - set(value) = prefs.edit { putBoolean(WIPE_ON_INACTIVE, value) } + var isWipeOnInactivity: Boolean + get() = prefs.getBoolean( + WIPE_ON_INACTIVITY, + prefs.getBoolean(WIPE_ON_INACTIVE, false), + ) + set(value) = prefs.edit { putBoolean(WIPE_ON_INACTIVITY, value) } - var wipeOnInactiveDays: Int - get() = prefs.getInt(WIPE_ON_INACTIVE_DAYS, DEFAULT_WIPE_ON_INACTIVE_DAYS) - set(value) = prefs.edit { putInt(WIPE_ON_INACTIVE_DAYS, value) } + var wipeOnInactivityDays: Int + get() = prefs.getInt( + WIPE_ON_INACTIVITY_DAYS, + prefs.getInt(WIPE_ON_INACTIVE_DAYS, DEFAULT_WIPE_ON_INACTIVITY_DAYS), + ) + set(value) = prefs.edit { putInt(WIPE_ON_INACTIVITY_DAYS, value) } } diff --git a/app/src/main/java/me/lucky/wasted/RestartReceiver.kt b/app/src/main/java/me/lucky/wasted/RestartReceiver.kt index 02505da..256a1ca 100644 --- a/app/src/main/java/me/lucky/wasted/RestartReceiver.kt +++ b/app/src/main/java/me/lucky/wasted/RestartReceiver.kt @@ -10,7 +10,7 @@ class RestartReceiver : BroadcastReceiver() { if (intent.action != Intent.ACTION_BOOT_COMPLETED && intent.action != Intent.ACTION_MY_PACKAGE_REPLACED) return val prefs = Preferences(context) - if (!prefs.isServiceEnabled || !prefs.isWipeOnInactive) return + if (!prefs.isServiceEnabled || !prefs.isWipeOnInactivity) return ContextCompat.startForegroundService(context, Intent(context, UnlockService::class.java)) } } diff --git a/app/src/main/java/me/lucky/wasted/WipeJobManager.kt b/app/src/main/java/me/lucky/wasted/WipeJobManager.kt index 04431db..c4fa4bc 100644 --- a/app/src/main/java/me/lucky/wasted/WipeJobManager.kt +++ b/app/src/main/java/me/lucky/wasted/WipeJobManager.kt @@ -18,7 +18,7 @@ class WipeJobManager(private val ctx: Context) { fun schedule(): Int { return jobScheduler.schedule( JobInfo.Builder(JOB_ID, ComponentName(ctx, WipeJobService::class.java)) - .setMinimumLatency(TimeUnit.DAYS.toMillis(prefs.wipeOnInactiveDays.toLong())) + .setMinimumLatency(TimeUnit.DAYS.toMillis(prefs.wipeOnInactivityDays.toLong())) .setBackoffCriteria(0, JobInfo.BACKOFF_POLICY_LINEAR) .setPersisted(true) .build() diff --git a/app/src/main/java/me/lucky/wasted/WipeJobService.kt b/app/src/main/java/me/lucky/wasted/WipeJobService.kt index 4908178..77ba7a8 100644 --- a/app/src/main/java/me/lucky/wasted/WipeJobService.kt +++ b/app/src/main/java/me/lucky/wasted/WipeJobService.kt @@ -6,7 +6,7 @@ import android.app.job.JobService class WipeJobService : JobService() { override fun onStartJob(params: JobParameters?): Boolean { val prefs = Preferences(this) - if (!prefs.isServiceEnabled || !prefs.isWipeOnInactive) return false + if (!prefs.isServiceEnabled || !prefs.isWipeOnInactivity) return false try { DeviceAdminManager(this).wipeData() } catch (exc: SecurityException) {} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c147ff0..7b384f6 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -98,17 +98,17 @@ android:layout_marginVertical="8dp" /> + android:text="@string/wipe_on_inactivity_switch" /> + android:text="@string/wipe_on_inactivity_description" /> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index c311e1c..b11498d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -15,12 +15,12 @@ Паниковать Максимальное количество неудачных попыток ввода пароля. Количество - Стереть при неактивности - Стереть данные когда устройство не разблокируется N дней. - Дней + Стереть при неактивности + Стереть данные когда устройство не разблокируется N дней. + Дней Дефолт OK - Стереть данные при условии + Стереть данные при неактивности Не удалось запустить службу стирания данных Получать события разблокировки Служба Разблокировки diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 243f0ce..450a3f4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -15,12 +15,12 @@ Panic Maximum number of failed password attempts. Count - Wipe on inactive - Wipe device when it was not unlocked for N days. - Days + Wipe on inactivity + Wipe device when it was not unlocked for N days. + Days Default OK - Wipe device on condition + Wipe device on inactivity Failed to start wipe service Receive unlock events Unlock Service diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png index 2c5c0d3..fa1e516 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png differ