Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
package com.sameerasw.essentials.data.model

import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName

@Keep
data class DeviceSpecItem(
val name: String,
val value: String
@SerializedName("name") val name: String,
@SerializedName("value") val value: String
)

@Keep
data class DeviceSpecCategory(
val category: String,
val specifications: List<DeviceSpecItem>
@SerializedName("category") val category: String,
@SerializedName("specifications") val specifications: List<DeviceSpecItem>
)

@Keep
data class DeviceSpecs(
val deviceName: String,
val detailSpec: List<DeviceSpecCategory>,
val imageUrls: List<String> = emptyList(),
val localImagePaths: List<String> = emptyList(),
val lastUpdated: Long = System.currentTimeMillis()
@SerializedName("deviceName") val deviceName: String,
@SerializedName("detailSpec") val detailSpec: List<DeviceSpecCategory>,
@SerializedName("imageUrls") val imageUrls: List<String> = emptyList(),
@SerializedName("localImagePaths") val localImagePaths: List<String> = emptyList(),
@SerializedName("lastUpdated") val lastUpdated: Long = System.currentTimeMillis()
)
37 changes: 29 additions & 8 deletions app/src/main/java/com/sameerasw/essentials/domain/diy/Action.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.sameerasw.essentials.domain.diy

import androidx.annotation.DrawableRes
import androidx.annotation.Keep
import androidx.annotation.StringRes
import com.google.gson.annotations.SerializedName
import com.sameerasw.essentials.R

@Keep
sealed interface Action {
@get:StringRes
val title: Int
Expand All @@ -15,61 +18,77 @@ sealed interface Action {
val isConfigurable: Boolean
get() = false

@Keep
data object HapticVibration : Action {
override val title: Int = R.string.diy_action_haptic
override val icon: Int = R.drawable.rounded_mobile_vibrate_24
}

@Keep
data object ShowNotification : Action {
override val title: Int = R.string.diy_action_notification
override val icon: Int = R.drawable.rounded_notifications_unread_24
}

@Keep
data object RemoveNotification : Action {
override val title: Int = R.string.diy_action_remove_notification
override val icon: Int = R.drawable.rounded_notifications_off_24
}

@Keep
data object TurnOnFlashlight : Action {
override val title: Int = R.string.diy_action_flashlight_on
override val icon: Int = R.drawable.round_flashlight_on_24
}

@Keep
data object TurnOffFlashlight : Action {
override val title: Int = R.string.diy_action_flashlight_off
override val icon: Int = R.drawable.rounded_flashlight_on_24
}

@Keep
data object ToggleFlashlight : Action {
override val title: Int = R.string.diy_action_flashlight_toggle
override val icon: Int = R.drawable.rounded_flashlight_on_24
}

data class DimWallpaper(val dimAmount: Float = 0f) : Action {
@Keep
data class DimWallpaper(
@SerializedName("dimAmount") val dimAmount: Float = 0f
) : Action {
override val title: Int get() = R.string.diy_action_dim_wallpaper
override val icon: Int get() = R.drawable.rounded_mobile_screensaver_24
override val permissions: List<String> = listOf("shizuku", "root")
override val isConfigurable: Boolean = true
}

@Keep
data class DeviceEffects(
val enabled: Boolean = true,
val grayscale: Boolean = false,
val suppressAmbient: Boolean = false,
val dimWallpaper: Boolean = false,
val nightMode: Boolean = false
@SerializedName("enabled") val enabled: Boolean = true,
@SerializedName("grayscale") val grayscale: Boolean = false,
@SerializedName("suppressAmbient") val suppressAmbient: Boolean = false,
@SerializedName("dimWallpaper") val dimWallpaper: Boolean = false,
@SerializedName("nightMode") val nightMode: Boolean = false
) : Action {
override val title: Int get() = R.string.diy_action_device_effects
override val icon: Int get() = R.drawable.rounded_bed_24
override val permissions: List<String> = listOf("notification_policy")
override val isConfigurable: Boolean = true
}

@Keep
enum class SoundModeType {
SOUND, VIBRATE, SILENT
@SerializedName("SOUND") SOUND,
@SerializedName("VIBRATE") VIBRATE,
@SerializedName("SILENT") SILENT
}

data class SoundMode(val mode: SoundModeType = SoundModeType.SOUND) : Action {
@Keep
data class SoundMode(
@SerializedName("mode") val mode: SoundModeType = SoundModeType.SOUND
) : Action {
override val title: Int get() = R.string.diy_action_sound_mode
override val icon: Int get() = when (mode) {
SoundModeType.SOUND -> R.drawable.rounded_volume_up_24
Expand All @@ -80,11 +99,13 @@ sealed interface Action {
override val isConfigurable: Boolean = true
}

@Keep
data object TurnOnLowPower : Action {
override val title: Int = R.string.diy_action_low_power_on
override val icon: Int = R.drawable.rounded_battery_android_frame_shield_24
}

@Keep
data object TurnOffLowPower : Action {
override val title: Int = R.string.diy_action_low_power_off
override val icon: Int = R.drawable.rounded_battery_android_frame_shield_24
Expand Down
29 changes: 17 additions & 12 deletions app/src/main/java/com/sameerasw/essentials/domain/diy/Automation.kt
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
package com.sameerasw.essentials.domain.diy

import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName

@Keep
data class Automation(
val id: String,
val type: Type,
val trigger: Trigger? = null,
val state: State? = null,
val actions: List<Action> = emptyList(),
val entryAction: Action? = null,
val exitAction: Action? = null,
val isEnabled: Boolean = true,
val selectedApps: List<String> = emptyList()
@SerializedName("id") val id: String,
@SerializedName("type") val type: Type,
@SerializedName("trigger") val trigger: Trigger? = null,
@SerializedName("state") val state: State? = null,
@SerializedName("actions") val actions: List<Action> = emptyList(),
@SerializedName("entryAction") val entryAction: Action? = null,
@SerializedName("exitAction") val exitAction: Action? = null,
@SerializedName("isEnabled") val isEnabled: Boolean = true,
@SerializedName("selectedApps") val selectedApps: List<String> = emptyList()
) {
@Keep
enum class Type {
TRIGGER,
STATE,
APP
@SerializedName("TRIGGER") TRIGGER,
@SerializedName("STATE") STATE,
@SerializedName("APP") APP
}
}
16 changes: 11 additions & 5 deletions app/src/main/java/com/sameerasw/essentials/domain/diy/State.kt
Original file line number Diff line number Diff line change
@@ -1,32 +1,38 @@
package com.sameerasw.essentials.domain.diy

import androidx.annotation.DrawableRes
import androidx.annotation.Keep
import androidx.annotation.StringRes
import com.google.gson.annotations.SerializedName
import com.sameerasw.essentials.R

@Keep
sealed interface State {
@get:StringRes
val title: Int

@get:DrawableRes
val icon: Int

@Keep
data object Charging : State {
override val title: Int = R.string.diy_state_charging
override val icon: Int = R.drawable.rounded_charger_24
}

@Keep
data object ScreenOn : State {
override val title: Int = R.string.diy_state_screen_on
override val icon: Int = R.drawable.rounded_mobile_text_2_24
}

@Keep
data class TimePeriod(
val startHour: Int = 0,
val startMinute: Int = 0,
val endHour: Int = 0,
val endMinute: Int = 0,
val days: Set<Int> = emptySet()
@SerializedName("startHour") val startHour: Int = 0,
@SerializedName("startMinute") val startMinute: Int = 0,
@SerializedName("endHour") val endHour: Int = 0,
@SerializedName("endMinute") val endMinute: Int = 0,
@SerializedName("days") val days: Set<Int> = emptySet()
) : State {
override val title: Int get() = R.string.diy_state_time_period
override val icon: Int get() = R.drawable.rounded_timelapse_24
Expand Down
15 changes: 12 additions & 3 deletions app/src/main/java/com/sameerasw/essentials/domain/diy/Trigger.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.sameerasw.essentials.domain.diy

import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName
import com.sameerasw.essentials.R

@Keep
sealed interface Trigger {
val title: Int
val icon: Int
Expand All @@ -10,35 +13,41 @@ sealed interface Trigger {
val isConfigurable: Boolean
get() = false

@Keep
data object ScreenOff : Trigger {
override val title: Int = R.string.diy_trigger_screen_off
override val icon: Int = R.drawable.rounded_mobile_lock_portrait_24
}

@Keep
data object ScreenOn : Trigger {
override val title: Int = R.string.diy_trigger_screen_on
override val icon: Int = R.drawable.rounded_mobile_text_2_24
}

@Keep
data object DeviceUnlock : Trigger {
override val title: Int = R.string.diy_trigger_device_unlock
override val icon: Int = R.drawable.rounded_mobile_unlock_24
}

@Keep
data object ChargerConnected : Trigger {
override val title: Int = R.string.diy_trigger_charger_connected
override val icon: Int = R.drawable.rounded_battery_charging_60_24
}

@Keep
data object ChargerDisconnected : Trigger {
override val title: Int = R.string.diy_trigger_charger_disconnected
override val icon: Int = R.drawable.rounded_battery_android_frame_3_24
}

@Keep
data class Schedule(
val hour: Int = 0,
val minute: Int = 0,
val days: Set<Int> = emptySet()
@SerializedName("hour") val hour: Int = 0,
@SerializedName("minute") val minute: Int = 0,
@SerializedName("days") val days: Set<Int> = emptySet()
) : Trigger {
override val title: Int get() = R.string.diy_trigger_schedule
override val icon: Int get() = R.drawable.rounded_nest_clock_farsight_analog_24
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package com.sameerasw.essentials.domain.model

import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName

@Keep
data class AppSelection(
val packageName: String,
val isEnabled: Boolean
@SerializedName("packageName") val packageName: String,
@SerializedName("isEnabled") val isEnabled: Boolean
)
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.sameerasw.essentials.domain.model

import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName

@Keep
data class DnsPreset(
val id: String = java.util.UUID.randomUUID().toString(),
val name: String,
val hostname: String,
val isDefault: Boolean = false
@SerializedName("id") val id: String = java.util.UUID.randomUUID().toString(),
@SerializedName("name") val name: String,
@SerializedName("hostname") val hostname: String,
@SerializedName("isDefault") val isDefault: Boolean = false
)
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.sameerasw.essentials.domain.model

import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName

@Keep
data class LocationAlarm(
val latitude: Double = 0.0,
val longitude: Double = 0.0,
val radius: Int = 1000, // in meters
val isEnabled: Boolean = false
@SerializedName("latitude") val latitude: Double = 0.0,
@SerializedName("longitude") val longitude: Double = 0.0,
@SerializedName("radius") val radius: Int = 1000, // in meters
@SerializedName("isEnabled") val isEnabled: Boolean = false
)
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package com.sameerasw.essentials.domain.model

import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName

@Keep
data class MapsChannel(
val id: String,
val name: String,
val isEnabled: Boolean = false
@SerializedName("id") val id: String,
@SerializedName("name") val name: String,
@SerializedName("isEnabled") val isEnabled: Boolean = false
)
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package com.sameerasw.essentials.domain.model

import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName

@Keep
data class SnoozeChannel(
val id: String,
val name: String,
val isBlocked: Boolean = false
@SerializedName("id") val id: String,
@SerializedName("name") val name: String,
@SerializedName("isBlocked") val isBlocked: Boolean = false
)
Loading