Skip to content
Open
Show file tree
Hide file tree
Changes from 13 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,8 +1,6 @@
package com.hmh.hamyeonham.core.domain.usagegoal.model

data class UsageGoal(
val totalGoalTime:Long = 0,
val status: ChallengeStatus = ChallengeStatus.NONE,
data class AppUsageGoal(
val appGoals: List<App> = emptyList()
) {
data class App(
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.hmh.hamyeonham.core.domain.usagegoal.repository

import com.hmh.hamyeonham.core.domain.usagegoal.model.UsageGoal
import com.hmh.hamyeonham.core.domain.usagegoal.model.AppUsageGoal
import kotlinx.coroutines.flow.Flow

interface UsageGoalsRepository {
suspend fun updateUsageGoal(): Result<Boolean>
suspend fun getUsageGoals(): Flow<UsageGoal>
suspend fun addUsageGoal(usageGoal: UsageGoal.App)
suspend fun addUsageGoalList(usageGoalList: List<UsageGoal.App>)
suspend fun getUsageGoals(): Flow<AppUsageGoal>
suspend fun addUsageGoal(appUsageGoal: AppUsageGoal.App)
suspend fun addUsageGoalList(appUsageGoalList: List<AppUsageGoal.App>)
suspend fun deleteUsageGoal(packageName: String)
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@ import androidx.lifecycle.ProcessLifecycleOwner
import androidx.lifecycle.lifecycleScope
import com.hmh.hamyeonham.common.navigation.NavigationProvider
import com.hmh.hamyeonham.common.time.getCurrentDayStartEndEpochMillis
import com.hmh.hamyeonham.core.domain.usagegoal.model.UsageGoal
import com.hmh.hamyeonham.core.domain.usagegoal.model.AppUsageGoal
import com.hmh.hamyeonham.lock.GetIsUnLockUseCase
import com.hmh.hamyeonham.usagestats.usecase.GetTotalUsageGoalUseCase
import com.hmh.hamyeonham.usagestats.usecase.GetTotalUsageStatsUseCase
import com.hmh.hamyeonham.usagestats.usecase.GetUsageGoalsUseCase
import com.hmh.hamyeonham.usagestats.usecase.GetUsageStatFromPackageUseCase
import dagger.hilt.android.qualifiers.ApplicationContext
Expand All @@ -31,8 +29,6 @@ class AppLockManger @Inject constructor(
private val getUsageGoalsUseCase: GetUsageGoalsUseCase,
private val getUsageIsLockUseCase: GetIsUnLockUseCase,
private val navigationProvider: NavigationProvider,
private val getTotalUsageStatsUseCase: GetTotalUsageStatsUseCase,
private val getTotalUsageGoalUseCase: GetTotalUsageGoalUseCase,
) {
private var checkUsageJob: Job? = null
private var timerJob: Job? = null
Expand All @@ -52,54 +48,42 @@ class AppLockManger @Inject constructor(
endTime = endTime,
packageName = packageName
)
val totalUsageStats = getTotalUsageStatsUseCase(
startTime = startTime,
endTime = endTime,
)

Log.d("Usage", "packageName: $packageName, usage: $usageStats")
val usageGoals = getUsageGoalsUseCase().firstOrNull() ?: return@launch
val currentAppGoal =
usageGoals.appGoals.find { it.packageName == packageName } ?: return@launch
val totalUsageGoal = getTotalUsageGoalUseCase()
checkLockApp(
usageStats = usageStats,
currentAppGoal = currentAppGoal,
packageName = packageName,
totalUsageStats = totalUsageStats,
totalUsageGoal = totalUsageGoal
)
}
}

private suspend fun checkLockApp(
usageStats: Long,
currentAppGoal: UsageGoal.App,
currentAppGoal: AppUsageGoal.App,
packageName: String,
totalUsageStats: Long,
totalUsageGoal: UsageGoal
) {
if (usageStats >= currentAppGoal.goalTime || totalUsageStats >= totalUsageGoal.totalGoalTime) {
if (usageStats >= currentAppGoal.goalTime) {
moveToLock(packageName)
} else {
releaseTimerJob()
val appRemainingTime = currentAppGoal.goalTime - usageStats
val totalRemainingTime = totalUsageGoal.totalGoalTime - totalUsageStats
startTimer(
appRemainingTime = appRemainingTime,
totalRemainingTime = totalRemainingTime,
packageName = packageName
)
}
}

private fun startTimer(
appRemainingTime: Long,
totalRemainingTime: Long,
packageName: String
) {
val remainingTime = minOf(appRemainingTime, totalRemainingTime)
timerJob = ProcessLifecycleOwner.get().lifecycleScope.launch {
delay(remainingTime)
delay(appRemainingTime)
moveToLock(packageName)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import com.hmh.hamyeonham.usagestats.model.UsageStatusAndGoal
sealed class HomeItem {
data class TotalModel(
val userName: String,
val challengeSuccess: Boolean,
val totalGoalTime: Long,
val totalTimeInForeground: Long,
) : HomeItem() {
Expand Down
Loading