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
9 changes: 4 additions & 5 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,19 @@ android {
isShrinkResources = true
}
}

lint {
disable.add("NullSafeMutableLiveData")
}
}

dependencies {
implementation(projects.core.common)
implementation(projects.core.analytics)
implementation(projects.core.buildconfig)
implementation(projects.core.network)
implementation(projects.core.designsystem)
implementation(projects.core.datastore)
implementation(projects.core.alarm)
implementation(projects.core.media)
implementation(projects.core.ui)
implementation(projects.data)
implementation(projects.domain)
implementation(projects.feature.splash)
implementation(projects.feature.onboarding)
implementation(projects.feature.home)
Expand Down
2 changes: 2 additions & 0 deletions build-logic/src/main/java/orbit.kotlin.library.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import com.yapp.convention.configureKotlin
import com.yapp.convention.configureTestKotlin

plugins {
kotlin("jvm")
}

configureKotlin()
configureTestKotlin()
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import android.content.Context
import android.content.Intent
import com.yapp.alarm.AlarmConstants
import com.yapp.domain.model.Alarm
import com.yapp.domain.model.toJson

fun createAlarmAlertPendingIntent(
context: Context,
Expand All @@ -31,7 +32,7 @@ private fun createAlarmAlertIntent(
): Intent {
return Intent("com.yapp.alarm.interaction.ACTION_ALARM_INTERACTION").apply {
putExtra(AlarmConstants.EXTRA_NOTIFICATION_ID, notificationId)
putExtra(AlarmConstants.EXTRA_ALARM, alarm)
putExtra(AlarmConstants.EXTRA_ALARM, alarm.toJson())
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
setPackage(context.packageName)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import android.content.Intent
import com.yapp.alarm.AlarmConstants
import com.yapp.alarm.receivers.AlarmReceiver
import com.yapp.domain.model.Alarm
import com.yapp.domain.model.toJson

fun createAlarmSnoozePendingIntent(
context: Context,
Expand All @@ -27,6 +28,6 @@ fun createAlarmSnoozeIntent(
): Intent {
return Intent(context, AlarmReceiver::class.java).apply {
action = AlarmConstants.ACTION_ALARM_SNOOZED
putExtra(AlarmConstants.EXTRA_ALARM, alarm)
putExtra(AlarmConstants.EXTRA_ALARM, alarm.toJson())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.yapp.alarm.AlarmConstants
import com.yapp.alarm.receivers.AlarmReceiver
import com.yapp.domain.model.Alarm
import com.yapp.domain.model.AlarmDay
import com.yapp.domain.model.toJson

fun createAlarmReceiverPendingIntentForSchedule(
app: Application,
Expand All @@ -29,7 +30,7 @@ private fun createAlarmReceiverIntent(
): Intent {
return Intent(AlarmConstants.ACTION_ALARM_TRIGGERED).apply {
setClass(app, AlarmReceiver::class.java)
putExtra(AlarmConstants.EXTRA_ALARM, alarm)
putExtra(AlarmConstants.EXTRA_ALARM, alarm.toJson())
day?.let { putExtra(AlarmConstants.EXTRA_ALARM_DAY, it.name) }
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.yapp.alarm.AlarmConstants
import com.yapp.alarm.receivers.AlarmReceiver
import com.yapp.domain.model.Alarm
import com.yapp.domain.model.AlarmDay
import com.yapp.domain.model.toJson

fun createAlarmReceiverPendingIntentForUnSchedule(
app: Application,
Expand All @@ -25,6 +26,6 @@ fun createAlarmReceiverPendingIntentForUnSchedule(
private fun createAlarmReceiverIntent(app: Application, alarm: Alarm): Intent {
return Intent(AlarmConstants.ACTION_ALARM_TRIGGERED).apply {
setClass(app, AlarmReceiver::class.java)
putExtra(AlarmConstants.EXTRA_ALARM, alarm)
putExtra(AlarmConstants.EXTRA_ALARM, alarm.toJson())
}
}
24 changes: 5 additions & 19 deletions core/alarm/src/main/java/com/yapp/alarm/receivers/AlarmReceiver.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package com.yapp.alarm.receivers
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.os.Build
import android.util.Log
import android.widget.Toast
import com.yapp.alarm.AlarmConstants
Expand All @@ -14,8 +13,8 @@ import com.yapp.analytics.AnalyticsHelper
import com.yapp.domain.model.Alarm
import com.yapp.domain.model.toAlarmDay
import com.yapp.domain.model.toTimeString
import com.yapp.domain.repository.AlarmRepository
import com.yapp.domain.repository.FortuneRepository
import com.yapp.domain.usecase.AlarmUseCase
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
Expand All @@ -38,7 +37,7 @@ class AlarmReceiver : BroadcastReceiver() {
lateinit var fortuneRepository: FortuneRepository

@Inject
lateinit var alarmUseCase: AlarmUseCase
lateinit var alarmRepository: AlarmRepository

override fun onReceive(context: Context?, intent: Intent?) {
context ?: return
Expand All @@ -47,15 +46,7 @@ class AlarmReceiver : BroadcastReceiver() {
val alarmServiceIntent = createAlarmServiceIntent(context, intent)
when (intent.action) {
AlarmConstants.ACTION_ALARM_TRIGGERED -> {
val alarm: Alarm? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
alarmServiceIntent.getParcelableExtra(
AlarmConstants.EXTRA_ALARM,
Alarm::class.java,
)
} else {
@Suppress("DEPRECATION")
alarmServiceIntent.getParcelableExtra(AlarmConstants.EXTRA_ALARM)
}
val alarm: Alarm? = alarmServiceIntent.getStringExtra(AlarmConstants.EXTRA_ALARM)?.let(Alarm::fromJson)
analyticsHelper.logEvent(
AnalyticsEvent(
type = "alarm_ring",
Expand All @@ -70,12 +61,7 @@ class AlarmReceiver : BroadcastReceiver() {
}

AlarmConstants.ACTION_ALARM_SNOOZED -> {
val alarm: Alarm? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getParcelableExtra(AlarmConstants.EXTRA_ALARM, Alarm::class.java)
} else {
@Suppress("DEPRECATION")
intent.getParcelableExtra(AlarmConstants.EXTRA_ALARM)
}
val alarm: Alarm? = intent.getStringExtra(AlarmConstants.EXTRA_ALARM)?.let(Alarm::fromJson)
analyticsHelper.logEvent(
AnalyticsEvent(
type = "alarm_snooze",
Expand Down Expand Up @@ -107,7 +93,7 @@ class AlarmReceiver : BroadcastReceiver() {
context.stopService(alarmServiceIntent)

CoroutineScope(Dispatchers.IO).launch {
val alarms = alarmUseCase.getAllAlarms().first()
val alarms = alarmRepository.getAllAlarms().first()

val isSnoozeId = notificationId >= AlarmConstants.SNOOZE_ID_OFFSET

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.yapp.alarm.AndroidAlarmScheduler
import com.yapp.domain.usecase.AlarmUseCase
import com.yapp.domain.repository.AlarmRepository
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
Expand All @@ -17,7 +17,7 @@ import javax.inject.Inject
class RescheduleAlarmReceiver : BroadcastReceiver() {

@Inject
lateinit var alarmUseCase: AlarmUseCase
lateinit var alarmRepository: AlarmRepository

@Inject
lateinit var androidAlarmScheduler: AndroidAlarmScheduler
Expand All @@ -35,7 +35,7 @@ class RescheduleAlarmReceiver : BroadcastReceiver() {
private fun rescheduleAlarm(pendingResult: PendingResult) {
CoroutineScope(Dispatchers.IO + SupervisorJob()).launch {
try {
val alarms = alarmUseCase.getAllAlarms().first()
val alarms = alarmRepository.getAllAlarms().first()
alarms
.filter { it.isAlarmActive }
.forEach { alarm -> androidAlarmScheduler.scheduleAlarm(alarm) }
Expand Down
13 changes: 4 additions & 9 deletions core/alarm/src/main/java/com/yapp/alarm/services/AlarmService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import com.yapp.alarm.scheduler.PostFortuneTaskScheduler
import com.yapp.domain.model.Alarm
import com.yapp.domain.model.AlarmDay
import com.yapp.domain.model.MissionType
import com.yapp.domain.usecase.AlarmUseCase
import com.yapp.domain.repository.AlarmRepository
import com.yapp.media.sound.SoundPlayer
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
Expand All @@ -41,7 +41,7 @@ import javax.inject.Inject
class AlarmService : Service() {

@Inject
lateinit var alarmUseCase: AlarmUseCase
lateinit var alarmRepository: AlarmRepository

@Inject
lateinit var soundPlayer: SoundPlayer
Expand Down Expand Up @@ -80,12 +80,7 @@ class AlarmService : Service() {
}

private fun handleIntent(intent: Intent) {
val alarm: Alarm? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getParcelableExtra(AlarmConstants.EXTRA_ALARM, Alarm::class.java)
} else {
@Suppress("DEPRECATION")
intent.getParcelableExtra(AlarmConstants.EXTRA_ALARM)
}
val alarm: Alarm? = intent.getStringExtra(AlarmConstants.EXTRA_ALARM)?.let(Alarm::fromJson)

if (alarm == null) {
Log.e("AlarmService", "Failed to retrieve Alarm object from intent")
Expand Down Expand Up @@ -198,7 +193,7 @@ class AlarmService : Service() {

private fun turnOffAlarm(alarmId: Long) {
CoroutineScope(Dispatchers.IO).launch {
alarmUseCase.updateAlarmActive(
alarmRepository.updateAlarmActive(
id = alarmId,
active = false,
)
Expand Down
4 changes: 1 addition & 3 deletions core/common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import com.yapp.convention.setNamespace
plugins {
id("orbit.android.library")
id("orbit.android.hilt")
id("orbit.android.compose")
id("org.jetbrains.kotlin.plugin.serialization")
}

android {
Expand All @@ -13,7 +13,5 @@ android {
dependencies {
implementation(projects.core.designsystem)
implementation(projects.domain)
implementation(libs.compose.navigation)
implementation(libs.hilt.navigation.compose)
implementation(libs.kotlinx.serialization.json)
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.yapp.common.navigation.route

import com.yapp.domain.MissionMode
import com.yapp.domain.model.MissionMode
import kotlinx.serialization.Serializable

@Serializable
Expand Down
2 changes: 0 additions & 2 deletions core/database/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ room {
}

dependencies {
implementation(projects.domain)

ksp(libs.androidx.room.compiler)
implementation(libs.androidx.room.ktx)
implementation(libs.androidx.room.runtime)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@ package com.yapp.database

import androidx.room.Database
import androidx.room.RoomDatabase
import androidx.room.TypeConverters

@Database(entities = [AlarmEntity::class], version = 2, exportSchema = true)
@TypeConverters(MissionTypeConverter::class)
abstract class AlarmDatabase : RoomDatabase() {

abstract fun alarmDao(): AlarmDao
Expand Down
42 changes: 2 additions & 40 deletions core/database/src/main/java/com/yapp/database/AlarmEntity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package com.yapp.database
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import com.yapp.domain.model.Alarm
import com.yapp.domain.model.MissionType

@Entity(tableName = AlarmDatabase.DATABASE_NAME)
data class AlarmEntity(
Expand Down Expand Up @@ -33,45 +31,9 @@ data class AlarmEntity(
val isAlarmActive: Boolean = true,

@ColumnInfo(defaultValue = "1")
val missionType: MissionType = MissionType.TAP,
val missionType: Int = DEFAULT_MISSION_TYPE_VALUE,
@ColumnInfo(defaultValue = "10")
val missionCount: Int = 10,
)

fun AlarmEntity.toDomain() = Alarm(
id = id,
hour = hour,
minute = minute,
second = second,
repeatDays = repeatDays,
isHolidayAlarmOff = isHolidayAlarmOff,
isSnoozeEnabled = isSnoozeEnabled,
snoozeInterval = snoozeInterval,
snoozeCount = snoozeCount,
isVibrationEnabled = isVibrationEnabled,
isSoundEnabled = isSoundEnabled,
soundUri = soundUri,
soundVolume = soundVolume,
isAlarmActive = isAlarmActive,
missionType = missionType,
missionCount = missionCount,
)

fun Alarm.toEntity() = AlarmEntity(
id = id,
hour = hour,
minute = minute,
second = second,
repeatDays = repeatDays,
isHolidayAlarmOff = isHolidayAlarmOff,
isSnoozeEnabled = isSnoozeEnabled,
snoozeInterval = snoozeInterval,
snoozeCount = snoozeCount,
isVibrationEnabled = isVibrationEnabled,
isSoundEnabled = isSoundEnabled,
soundUri = soundUri,
soundVolume = soundVolume,
isAlarmActive = isAlarmActive,
missionType = missionType,
missionCount = missionCount,
)
private const val DEFAULT_MISSION_TYPE_VALUE = 1

This file was deleted.

4 changes: 4 additions & 0 deletions core/media/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ plugins {
android {
setNamespace("core.media")
}

dependencies {
implementation(projects.domain)
}
19 changes: 19 additions & 0 deletions core/media/src/main/java/com/yapp/media/di/AlarmSoundModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.yapp.media.di

import com.yapp.domain.media.AlarmSoundManager
import com.yapp.media.sound.AlarmSoundManagerImpl
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
interface AlarmSoundModule {
@Binds
@Singleton
fun bindAlarmSoundManager(
impl: AlarmSoundManagerImpl,
): AlarmSoundManager
}
Loading