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
5 changes: 4 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,24 @@ android {

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)
implementation(projects.feature.alarmInteraction)
implementation(projects.feature.fortune)
implementation(projects.feature.mission)
implementation(projects.feature.setting)
implementation(projects.feature.navigator)
implementation(projects.feature.webview)
implementation(libs.firebase.analytics)
implementation(libs.firebase.crashlytics)
implementation(libs.play.services.ads)
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
android:value="@string/admob_app_id" />

<activity
android:name="com.yapp.navigator.MainActivity"
android:name="com.yapp.orbit.MainActivity"
android:windowSoftInputMode="adjustResize"
android:exported="true"
android:label="@string/app_name"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.yapp.navigator
package com.yapp.orbit

import android.annotation.SuppressLint
import android.content.pm.ActivityInfo
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.yapp.navigator
package com.yapp.orbit

import android.annotation.SuppressLint
import androidx.compose.animation.AnimatedVisibility
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ internal fun Project.configureComposeAndroid() {
val bom = libs.findLibrary("compose.bom").get()
add("implementation", platform(bom))

add("implementation", libs.findLibrary("activity.compose").get())

add("implementation", libs.findLibrary("compose.material3").get())
add("implementation", libs.findLibrary("compose.ui").get())
add("implementation", libs.findLibrary("compose.ui.tooling.preview").get())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ internal fun Project.configureHiltAndroid() {
dependencies {
"implementation"(libs.findLibrary("hilt.android").get())
"ksp"(libs.findLibrary("hilt.android.compiler").get())
"implementation"(libs.findLibrary("hilt-navigation-compose").get())
}
}

Expand Down
1 change: 0 additions & 1 deletion build-logic/src/main/java/orbit.android.feature.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ dependencies {
implementation(project(":core:ui"))

val libs = project.extensions.libs
implementation(libs.findLibrary("hilt-navigation-compose").get())
implementation(libs.findLibrary("compose-navigation").get())
implementation(libs.findLibrary("lifecycle-viewmodel").get())
implementation(libs.findLibrary("lifecycle-runtime").get())
Expand Down
1 change: 0 additions & 1 deletion core/alarm/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ android {

dependencies {
implementation(projects.core.analytics)
implementation(projects.core.datastore)
implementation(projects.core.designsystem)
implementation(projects.core.media)
implementation(projects.domain)
Expand Down
21 changes: 0 additions & 21 deletions core/alarm/src/main/java/com/yapp/alarm/AlarmModule.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,18 @@ import com.yapp.domain.model.Alarm
import com.yapp.domain.model.AlarmDay
import com.yapp.domain.model.toAlarmDays
import com.yapp.domain.model.toDayOfWeek
import com.yapp.domain.scheduler.AlarmScheduler
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import javax.inject.Inject

class AlarmHelper @Inject constructor(
class AndroidAlarmScheduler @Inject constructor(
private val app: Application,
private val alarmManager: AlarmManager,
) {
fun scheduleAlarm(alarm: Alarm) {
) : AlarmScheduler {
override fun scheduleAlarm(alarm: Alarm) {
val selectedDays = alarm.repeatDays.toAlarmDays()

if (selectedDays.isEmpty()) {
Expand All @@ -46,7 +47,7 @@ class AlarmHelper @Inject constructor(
Log.d("AlarmHelper", "Scheduled weekly alarm for $day at: $triggerMillis")
}

fun unScheduleAlarm(alarm: Alarm) {
override fun unScheduleAlarm(alarm: Alarm) {
val selectedDays = alarm.repeatDays.toAlarmDays()

if (selectedDays.isEmpty()) {
Expand Down
31 changes: 31 additions & 0 deletions core/alarm/src/main/java/com/yapp/alarm/di/AlarmModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.yapp.alarm.di

import android.app.AlarmManager
import android.content.Context
import com.yapp.alarm.AndroidAlarmScheduler
import com.yapp.domain.scheduler.AlarmScheduler
import dagger.Binds
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
abstract class AlarmModule {
@Binds
@Singleton
abstract fun bindsAlarmScheduler(
alarmScheduler: AndroidAlarmScheduler,
): AlarmScheduler

companion object {
@Provides
@Singleton
fun provideAlarmManager(@ApplicationContext context: Context): AlarmManager {
return context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import android.content.Intent
import androidx.activity.ComponentActivity
import androidx.core.net.toUri
import com.yapp.alarm.AlarmConstants
import com.yapp.datastore.UserPreferences
import com.yapp.domain.repository.FortuneRepository
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
Expand All @@ -20,7 +20,7 @@ import javax.inject.Inject
class AlarmInteractionActivityReceiver(private val activity: ComponentActivity) : BroadcastReceiver() {

@Inject
lateinit var userPreferences: UserPreferences
lateinit var fortuneRepository: FortuneRepository

override fun onReceive(context: Context?, intent: Intent?) {
val isSnoozed = intent?.getBooleanExtra(AlarmConstants.EXTRA_IS_SNOOZED, false) ?: false
Expand All @@ -30,7 +30,7 @@ class AlarmInteractionActivityReceiver(private val activity: ComponentActivity)

if (!isSnoozed) {
CoroutineScope(Dispatchers.IO).launch {
val fortuneDate = userPreferences.fortuneDateFlow.firstOrNull()
val fortuneDate = fortuneRepository.fortuneDateFlow.firstOrNull()
val todayDate = LocalDate.now().format(DateTimeFormatter.ISO_DATE)

if (fortuneDate != todayDate) {
Expand Down
20 changes: 10 additions & 10 deletions core/alarm/src/main/java/com/yapp/alarm/receivers/AlarmReceiver.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import android.os.Build
import android.util.Log
import android.widget.Toast
import com.yapp.alarm.AlarmConstants
import com.yapp.alarm.AlarmHelper
import com.yapp.alarm.AndroidAlarmScheduler
import com.yapp.alarm.services.AlarmService
import com.yapp.analytics.AnalyticsEvent
import com.yapp.analytics.AnalyticsHelper
import com.yapp.datastore.UserPreferences
import com.yapp.domain.model.Alarm
import com.yapp.domain.model.toTimeString
import com.yapp.domain.repository.FortuneRepository
import com.yapp.domain.usecase.AlarmUseCase
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
Expand All @@ -31,10 +31,10 @@ class AlarmReceiver : BroadcastReceiver() {
lateinit var analyticsHelper: AnalyticsHelper

@Inject
lateinit var alarmHelper: AlarmHelper
lateinit var androidAlarmScheduler: AndroidAlarmScheduler

@Inject
lateinit var userPreferences: UserPreferences
lateinit var fortuneRepository: FortuneRepository

@Inject
lateinit var alarmUseCase: AlarmUseCase
Expand Down Expand Up @@ -107,21 +107,21 @@ class AlarmReceiver : BroadcastReceiver() {
),
),
)
val existingId = userPreferences.firstDismissedAlarmIdFlow.firstOrNull()
val existingId = fortuneRepository.firstDismissedAlarmIdFlow.firstOrNull()
if (existingId == null) {
// 첫 번째 알람 해제 기록
userPreferences.saveFirstDismissedAlarmId(alarmId)
fortuneRepository.saveFirstDismissedAlarmId(alarmId)
} else if (existingId != alarmId) {
// 두 번째 알람 해제 감지 - 기존 기록 삭제
userPreferences.clearDismissedAlarmId()
fortuneRepository.clearDismissedAlarmId()
}
}

alarmHelper.cancelSnoozedAlarm(alarmId)
androidAlarmScheduler.cancelSnoozedAlarm(alarmId)
} else {
Log.e("AlarmReceiver", "알람 ID 수신 실패")
}
alarmHelper.cancelSnoozedAlarm(alarmId)
androidAlarmScheduler.cancelSnoozedAlarm(alarmId)
context.stopService(alarmServiceIntent)
sendBroadCastToCloseAlarmInteractionActivity(context)

Expand Down Expand Up @@ -167,7 +167,7 @@ class AlarmReceiver : BroadcastReceiver() {
)

context.stopService(Intent(context, AlarmService::class.java))
alarmHelper.scheduleAlarm(updatedAlarm)
androidAlarmScheduler.scheduleAlarm(updatedAlarm)
}

private fun sendBroadCastToCloseAlarmInteractionActivity(context: Context) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.yapp.alarm.receivers
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.yapp.alarm.AlarmHelper
import com.yapp.alarm.AndroidAlarmScheduler
import com.yapp.domain.usecase.AlarmUseCase
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
Expand All @@ -18,7 +18,7 @@ class RescheduleAlarmReceiver : BroadcastReceiver() {
lateinit var alarmUseCase: AlarmUseCase

@Inject
lateinit var alarmHelper: AlarmHelper
lateinit var androidAlarmScheduler: AndroidAlarmScheduler

override fun onReceive(context: Context?, intent: Intent?) {
context ?: return
Expand All @@ -33,7 +33,7 @@ class RescheduleAlarmReceiver : BroadcastReceiver() {
CoroutineScope(Dispatchers.IO).launch {
alarmUseCase.getAllAlarms().collect { alarms ->
alarms.forEach { alarm ->
alarmHelper.scheduleAlarm(alarm)
androidAlarmScheduler.scheduleAlarm(alarm)
}
}
}
Expand Down
12 changes: 6 additions & 6 deletions core/alarm/src/main/java/com/yapp/alarm/services/AlarmService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ import android.util.Log
import androidx.core.app.NotificationCompat
import androidx.core.net.toUri
import com.yapp.alarm.AlarmConstants
import com.yapp.alarm.AlarmHelper
import com.yapp.alarm.AndroidAlarmScheduler
import com.yapp.alarm.pendingIntent.interaction.createAlarmAlertPendingIntent
import com.yapp.alarm.pendingIntent.interaction.createAlarmDismissPendingIntent
import com.yapp.alarm.pendingIntent.interaction.createAlarmSnoozePendingIntent
import com.yapp.alarm.pendingIntent.interaction.createNavigateToMissionPendingIntent
import com.yapp.datastore.UserPreferences
import com.yapp.domain.model.Alarm
import com.yapp.domain.model.AlarmDay
import com.yapp.domain.repository.FortuneRepository
import com.yapp.domain.usecase.AlarmUseCase
import com.yapp.media.sound.SoundPlayer
import dagger.hilt.android.AndroidEntryPoint
Expand All @@ -51,10 +51,10 @@ class AlarmService : Service() {
private lateinit var vibrator: Vibrator

@Inject
lateinit var alarmHelper: AlarmHelper
lateinit var androidAlarmScheduler: AndroidAlarmScheduler

@Inject
lateinit var userPreferences: UserPreferences
lateinit var fortuneRepository: FortuneRepository

private val serviceScope = CoroutineScope(Dispatchers.IO + SupervisorJob())

Expand Down Expand Up @@ -103,7 +103,7 @@ class AlarmService : Service() {
// 반복 요일 알람 시, 다음 주 동일 요일 알람 예약
if (!isOneTimeAlarm) {
intent.getStringExtra(AlarmConstants.EXTRA_ALARM_DAY)?.let {
alarmHelper.scheduleWeeklyAlarm(alarm, AlarmDay.valueOf(it))
androidAlarmScheduler.scheduleWeeklyAlarm(alarm, AlarmDay.valueOf(it))
}
}

Expand All @@ -126,7 +126,7 @@ class AlarmService : Service() {
}

private suspend fun shouldNavigateToMission(): Boolean {
val fortuneDate = userPreferences.fortuneDateFlow.firstOrNull()
val fortuneDate = fortuneRepository.fortuneDateFlow.firstOrNull()
val todayDate = LocalDate.now().format(DateTimeFormatter.ISO_DATE)
return fortuneDate != todayDate
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@ package com.yapp.datastore.di

import android.content.Context
import androidx.datastore.core.DataStore
import androidx.datastore.core.DataStoreFactory
import androidx.datastore.dataStoreFile
import androidx.datastore.preferences.core.PreferenceDataStoreFactory
import androidx.datastore.preferences.core.Preferences
import com.yapp.datastore.token.AuthToken
import com.yapp.datastore.token.TokenDataSerializer
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand All @@ -18,18 +15,6 @@ import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
object DataStoreModule {
@Provides
@Singleton
fun providesTokenDataStore(
@ApplicationContext context: Context,
tokenDataSerializer: TokenDataSerializer,
): DataStore<AuthToken> =
DataStoreFactory.create(
serializer = tokenDataSerializer,
) {
context.dataStoreFile("token.json")
}

@Provides
@Singleton
fun providesPreferencesDataStore(
Expand Down
10 changes: 0 additions & 10 deletions core/datastore/src/main/java/com/yapp/datastore/token/AuthToken.kt

This file was deleted.

Loading