Skip to content

Commit 0419b3a

Browse files
committed
Try reading stored timer in both obfuscated and non-obfuscated state
1 parent e6adbe5 commit 0419b3a

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

app/src/main/kotlin/com/simplemobiletools/clock/helpers/Config.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.Context
44
import android.media.RingtoneManager
55
import com.simplemobiletools.clock.extensions.gson.gson
66
import com.simplemobiletools.clock.models.Alarm
7+
import com.simplemobiletools.clock.models.ObfuscatedTimer
78
import com.simplemobiletools.clock.models.Timer
89
import com.simplemobiletools.commons.extensions.getDefaultAlarmSound
910
import com.simplemobiletools.commons.extensions.getDefaultAlarmTitle
@@ -70,10 +71,18 @@ class Config(context: Context) : BaseConfig(context) {
7071
set(alarm) = prefs.edit().putString(ALARM_LAST_CONFIG, gson.toJson(alarm)).apply()
7172

7273
var timerLastConfig: Timer?
73-
get() = prefs.getString(TIMER_LAST_CONFIG, null)?.let { lastAlarm ->
74-
gson.fromJson(lastAlarm, Timer::class.java)
74+
get() = prefs.getString(TIMER_LAST_CONFIG, null)?.let { lastTimer ->
75+
try {
76+
if (lastTimer.contains("\"b\"")) {
77+
gson.fromJson(lastTimer, ObfuscatedTimer::class.java).toTimer()
78+
} else {
79+
gson.fromJson(lastTimer, Timer::class.java)
80+
}
81+
} catch (e: Exception) {
82+
null
83+
}
7584
}
76-
set(alarm) = prefs.edit().putString(TIMER_LAST_CONFIG, gson.toJson(alarm)).apply()
85+
set(timer) = prefs.edit().putString(TIMER_LAST_CONFIG, gson.toJson(timer)).apply()
7786

7887
var timerChannelId: String?
7988
get() = prefs.getString(TIMER_CHANNEL_ID, null)

app/src/main/kotlin/com/simplemobiletools/clock/models/Timer.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.simplemobiletools.clock.models
22

3+
import androidx.annotation.Keep
34
import androidx.room.Entity
45
import androidx.room.PrimaryKey
56

67
@Entity(tableName = "timers")
8+
@Keep
79
data class Timer(
810
@PrimaryKey(autoGenerate = true) var id: Int?,
911
var seconds: Int,
@@ -16,3 +18,31 @@ data class Timer(
1618
var channelId: String? = null,
1719
var oneShot: Boolean = false
1820
)
21+
22+
@Keep
23+
data class ObfuscatedTimer(
24+
var a: Int?,
25+
var b: Int,
26+
// We ignore timer state and will just use idle
27+
val c: Map<Any, Any>,
28+
var d: Boolean,
29+
var e: String,
30+
var f: String,
31+
var g: String,
32+
var h: Long,
33+
var i: String? = null,
34+
var j: Boolean = false
35+
) {
36+
fun toTimer(): Timer = Timer(
37+
a,
38+
b,
39+
TimerState.Idle,
40+
d,
41+
e,
42+
f,
43+
g,
44+
h,
45+
i,
46+
j
47+
)
48+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
package com.simplemobiletools.clock.models
22

3+
import androidx.annotation.Keep
4+
5+
@Keep
36
sealed class TimerState {
7+
@Keep
48
object Idle : TimerState()
9+
@Keep
510
data class Running(val duration: Long, val tick: Long) : TimerState()
11+
@Keep
612
data class Paused(val duration: Long, val tick: Long) : TimerState()
13+
@Keep
714
object Finished : TimerState()
815
}

0 commit comments

Comments
 (0)