diff --git a/app/src/main/java/org/hydev/wearsync/Extensions.kt b/app/src/main/java/org/hydev/wearsync/Extensions.kt index 54bc46f..1e9edbe 100644 --- a/app/src/main/java/org/hydev/wearsync/Extensions.kt +++ b/app/src/main/java/org/hydev/wearsync/Extensions.kt @@ -5,6 +5,7 @@ import android.app.Service import android.bluetooth.BluetoothManager import android.content.Context import android.content.Intent +import android.database.Cursor import android.os.Build import android.view.View import androidx.activity.ComponentActivity @@ -12,9 +13,12 @@ import androidx.activity.result.ActivityResult import androidx.activity.result.ActivityResultCallback import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.edit +import androidx.core.database.getIntOrNull +import androidx.core.database.getStringOrNull import androidx.preference.PreferenceManager import com.google.android.material.snackbar.Snackbar import com.google.gson.* +import com.google.gson.reflect.TypeToken import com.influxdb.client.InfluxDBClient import com.influxdb.client.domain.DeletePredicateRequest import com.influxdb.client.domain.WritePrecision @@ -118,18 +122,23 @@ val Date.offset get() = toInstant().atOffset(ZoneOffset.UTC) fun Long.ensureMs() = if (this < 99999999999) this * 1000 else this // GSON -fun makeGson(): Gson -{ - val sd = JsonSerializer { src, _, _ -> if (src == null) null else JsonPrimitive(src.time / 1000) } - val dd = JsonDeserializer { json, _, _ -> if (json == null) null else Date(json.asLong.ensureMs()) } - val si = JsonSerializer { src, _, _ -> if (src == null) null else JsonPrimitive(src.epochSecond) } - val di = JsonDeserializer { json, _, _ -> if (json == null) null else Date(json.asLong.ensureMs()).toInstant() } +object GsonExtensions { + fun makeGson(): Gson + { + val sd = JsonSerializer { src, _, _ -> if (src == null) null else JsonPrimitive(src.time / 1000) } + val dd = JsonDeserializer { json, _, _ -> if (json == null) null else Date(json.asLong.ensureMs()) } + val si = JsonSerializer { src, _, _ -> if (src == null) null else JsonPrimitive(src.epochSecond) } + val di = JsonDeserializer { json, _, _ -> if (json == null) null else Date(json.asLong.ensureMs()).toInstant() } - return GsonBuilder() - .registerTypeAdapter(Date::class.java, sd) - .registerTypeAdapter(Date::class.java, dd) - .registerTypeAdapter(Instant::class.java, si) - .registerTypeAdapter(Instant::class.java, di) - .create() + return GsonBuilder() + .registerTypeAdapter(Date::class.java, sd) + .registerTypeAdapter(Date::class.java, dd) + .registerTypeAdapter(Instant::class.java, si) + .registerTypeAdapter(Instant::class.java, di) + .create() + } + val GSON = makeGson() + inline fun Gson.parse(json: String?) = fromJson(json, object : TypeToken() {}.type) + inline fun String.parseJson() = GSON.parse(this) +} } -val GSON = makeGson();