Skip to content

Commit 0c62ead

Browse files
authored
Merge pull request #38 from janewaitara/feat_code_cleanup
Feat code cleanup
2 parents 63040c0 + c4a4277 commit 0c62ead

File tree

69 files changed

+816
-556
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+816
-556
lines changed

app/src/main/java/com/mumbicodes/projectie/data/repository/MilestonesRepositoryImpl.kt

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package com.mumbicodes.projectie.data.repository
22

33
import com.mumbicodes.projectie.data.db.MilestonesDao
4+
import com.mumbicodes.projectie.data.helpers.safeTransaction
5+
import com.mumbicodes.projectie.data.helpers.toDataResult
6+
import com.mumbicodes.projectie.domain.model.DataResult
47
import com.mumbicodes.projectie.domain.model.Milestone
58
import com.mumbicodes.projectie.domain.relations.MilestoneWithTasks
69
import com.mumbicodes.projectie.domain.repository.MilestonesRepository
10+
import com.mumbicodes.projectie.domain.util.AllMilestonesOrder
711
import kotlinx.coroutines.flow.Flow
12+
import kotlinx.coroutines.flow.map
813

914
class MilestonesRepositoryImpl(
1015
private val milestonesDao: MilestonesDao,
@@ -14,17 +19,30 @@ class MilestonesRepositoryImpl(
1419
milestonesDao.insertMilestone(milestone)
1520
}
1621

17-
override fun getMilestoneByIdWithTasks(milestoneId: Int): Flow<MilestoneWithTasks?> =
22+
override suspend fun getMilestoneByIdWithTasks(milestoneId: Int): DataResult<Flow<MilestoneWithTasks?>> = safeTransaction {
1823
milestonesDao.getMilestoneByIdWithTasks(milestoneId)
24+
}.toDataResult()
1925

2026
override suspend fun getAllMilestonesBasedOnProjIdAndStatus(
2127
projectId: Int,
2228
status: String?,
23-
): List<Milestone> =
29+
): DataResult<List<Milestone>> = safeTransaction {
2430
milestonesDao.getAllMilestonesBasedOnProjIdAndStatus(projectId)
25-
26-
override fun getAllMilestones(): Flow<List<MilestoneWithTasks>> =
27-
milestonesDao.getAllMilestones()
31+
}.toDataResult()
32+
33+
override suspend fun getAllMilestones(milestonesOrder: AllMilestonesOrder): DataResult<Flow<List<MilestoneWithTasks>>> =
34+
safeTransaction {
35+
milestonesDao.getAllMilestones().map { milestonesWithTasks ->
36+
when (milestonesOrder) {
37+
is AllMilestonesOrder.MostUrgent -> milestonesWithTasks.sortedBy {
38+
it.milestone.milestoneEndDate
39+
}
40+
is AllMilestonesOrder.LeastUrgent -> milestonesWithTasks.sortedByDescending {
41+
it.milestone.milestoneEndDate
42+
}
43+
}
44+
}
45+
}.toDataResult()
2846

2947
override suspend fun deleteMilestone(milestone: Milestone) {
3048
milestonesDao.deleteMilestone(milestone)

app/src/main/java/com/mumbicodes/projectie/domain/repository/MilestonesRepository.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
package com.mumbicodes.projectie.domain.repository
22

3+
import com.mumbicodes.projectie.domain.model.DataResult
34
import com.mumbicodes.projectie.domain.model.Milestone
45
import com.mumbicodes.projectie.domain.relations.MilestoneWithTasks
6+
import com.mumbicodes.projectie.domain.util.AllMilestonesOrder
57
import kotlinx.coroutines.flow.Flow
68

79
interface MilestonesRepository {
810

911
suspend fun insertMilestone(milestone: Milestone)
1012

11-
fun getMilestoneByIdWithTasks(milestoneId: Int): Flow<MilestoneWithTasks?>
13+
suspend fun getMilestoneByIdWithTasks(milestoneId: Int): DataResult <Flow<MilestoneWithTasks?>>
1214

1315
suspend fun getAllMilestonesBasedOnProjIdAndStatus(
1416
projectId: Int,
1517
status: String?,
16-
): List<Milestone>
18+
): DataResult<List<Milestone>>
1719

18-
fun getAllMilestones(): Flow<List<MilestoneWithTasks>>
20+
suspend fun getAllMilestones(milestonesOrder: AllMilestonesOrder): DataResult<Flow<List<MilestoneWithTasks>>>
1921

2022
suspend fun deleteMilestone(milestone: Milestone)
2123

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,16 @@
11
package com.mumbicodes.projectie.domain.use_case.milestones
22

3+
import com.mumbicodes.projectie.domain.model.DataResult
34
import com.mumbicodes.projectie.domain.relations.MilestoneWithTasks
45
import com.mumbicodes.projectie.domain.repository.MilestonesRepository
56
import com.mumbicodes.projectie.domain.util.AllMilestonesOrder
67
import kotlinx.coroutines.flow.Flow
7-
import kotlinx.coroutines.flow.map
88

99
class GetAllMilestonesUseCase(private val repository: MilestonesRepository) {
1010

11-
operator fun invoke(
11+
suspend operator fun invoke(
1212
milestonesOrder: AllMilestonesOrder = AllMilestonesOrder.MostUrgent,
13-
): Flow<List<MilestoneWithTasks>> {
14-
return repository.getAllMilestones().map { milestonesWithTasks ->
15-
when (milestonesOrder) {
16-
is AllMilestonesOrder.MostUrgent -> milestonesWithTasks.sortedBy {
17-
it.milestone.milestoneEndDate
18-
}
19-
is AllMilestonesOrder.LeastUrgent -> milestonesWithTasks.sortedByDescending {
20-
it.milestone.milestoneEndDate
21-
}
22-
}
23-
}
13+
): DataResult<Flow<List<MilestoneWithTasks>>> {
14+
return repository.getAllMilestones(milestonesOrder)
2415
}
2516
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.mumbicodes.projectie.domain.use_case.milestones
22

3+
import com.mumbicodes.projectie.domain.model.DataResult
34
import com.mumbicodes.projectie.domain.relations.MilestoneWithTasks
45
import com.mumbicodes.projectie.domain.repository.MilestonesRepository
56
import kotlinx.coroutines.flow.Flow
67

78
class GetMilestoneByIdWithTasksUseCase(
89
private val repository: MilestonesRepository
910
) {
10-
operator fun invoke(milestoneId: Int): Flow<MilestoneWithTasks?> =
11+
suspend operator fun invoke(milestoneId: Int): DataResult<Flow<MilestoneWithTasks?>> =
1112
repository.getMilestoneByIdWithTasks(milestoneId)
1213
}

app/src/main/java/com/mumbicodes/projectie/domain/use_case/milestones/GetMilestonesUseCase.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.mumbicodes.projectie.domain.use_case.milestones
22

3+
import com.mumbicodes.projectie.domain.model.DataResult
34
import com.mumbicodes.projectie.domain.model.Milestone
45
import com.mumbicodes.projectie.domain.repository.MilestonesRepository
56

@@ -9,6 +10,6 @@ class GetMilestonesUseCase(
910
suspend operator fun invoke(
1011
projectId: Int,
1112
status: String,
12-
): List<Milestone> =
13+
): DataResult<List<Milestone>> =
1314
repository.getAllMilestonesBasedOnProjIdAndStatus(projectId, status)
1415
}

app/src/main/java/com/mumbicodes/projectie/domain/use_case/projects/CheckProjectStatusUseCase.kt

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,53 @@ package com.mumbicodes.projectie.domain.use_case.projects
22

33
import android.app.Application
44
import com.mumbicodes.projectie.R
5+
import com.mumbicodes.projectie.domain.model.DataResult
56
import com.mumbicodes.projectie.domain.repository.MilestonesRepository
67
import com.mumbicodes.projectie.domain.util.ProgressStatus
78

89
class CheckProjectStatusUseCase(
910
val repository: MilestonesRepository,
1011
private val appContext: Application,
1112
) {
12-
suspend operator fun invoke(projectId: Int): String {
13+
suspend operator fun invoke(projectId: Int): DataResult<String> {
1314

1415
val milestonesInProject =
1516
repository.getAllMilestonesBasedOnProjIdAndStatus(projectId = projectId, status = null)
1617

17-
val milestonesStatusList = milestonesInProject.map {
18-
it.status
19-
}
20-
21-
val completed = milestonesStatusList.contains(appContext.getString(R.string.completed)) &&
22-
!milestonesStatusList.contains(appContext.getString(R.string.notStarted)) &&
23-
!milestonesStatusList.contains(appContext.getString(R.string.inProgress))
24-
25-
val notStarted = milestonesStatusList.contains(appContext.getString(R.string.notStarted)) &&
26-
!milestonesStatusList.contains(appContext.getString(R.string.completed)) &&
27-
!milestonesStatusList.contains(appContext.getString(R.string.inProgress))
28-
29-
val progress = when {
30-
completed -> ProgressStatus.Completed(appContext.getString(R.string.completed))
31-
notStarted -> ProgressStatus.NotStarted(appContext.getString(R.string.notStarted))
32-
else -> ProgressStatus.InProgress(appContext.getString(R.string.inProgress))
33-
}
34-
35-
return when (progress) {
36-
is ProgressStatus.Completed -> progress.status
37-
is ProgressStatus.InProgress -> progress.status
38-
is ProgressStatus.NotStarted -> progress.status
18+
return when (milestonesInProject) {
19+
is DataResult.Error -> {
20+
DataResult.Error(errorMessage = milestonesInProject.errorMessage)
21+
}
22+
23+
is DataResult.Success -> {
24+
val milestonesStatusList = milestonesInProject.data.map {
25+
it.status
26+
}
27+
28+
val completed =
29+
milestonesStatusList.contains(appContext.getString(R.string.completed)) &&
30+
!milestonesStatusList.contains(appContext.getString(R.string.notStarted)) &&
31+
!milestonesStatusList.contains(appContext.getString(R.string.inProgress))
32+
33+
val notStarted =
34+
milestonesStatusList.contains(appContext.getString(R.string.notStarted)) &&
35+
!milestonesStatusList.contains(appContext.getString(R.string.completed)) &&
36+
!milestonesStatusList.contains(appContext.getString(R.string.inProgress))
37+
38+
val progress = when {
39+
completed -> ProgressStatus.Completed(appContext.getString(R.string.completed))
40+
notStarted -> ProgressStatus.NotStarted(appContext.getString(R.string.notStarted))
41+
else -> ProgressStatus.InProgress(appContext.getString(R.string.inProgress))
42+
}
43+
44+
DataResult.Success(
45+
when (progress) {
46+
is ProgressStatus.Completed -> progress.status
47+
is ProgressStatus.InProgress -> progress.status
48+
is ProgressStatus.NotStarted -> progress.status
49+
}
50+
)
51+
}
3952
}
4053
}
4154
}

app/src/main/java/com/mumbicodes/projectie/domain/use_case/tasks/TransformTasksUseCase.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.mumbicodes.projectie.domain.use_case.tasks
22

33
import com.mumbicodes.projectie.domain.model.Task
4-
import com.mumbicodes.projectie.presentation.add_edit_milestone.TaskState
5-
import com.mumbicodes.projectie.presentation.add_edit_milestone.TaskTextFieldState
4+
import com.mumbicodes.projectie.presentation.screens.add_edit_milestone.TaskState
5+
import com.mumbicodes.projectie.presentation.screens.add_edit_milestone.TaskTextFieldState
66

77
class TransformTasksUseCase {
88
fun transformTasksToTaskStates(tasks: List<Task>): List<TaskState> {

app/src/main/java/com/mumbicodes/projectie/domain/workers/CheckMilestoneDeadlineWorker.kt

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ import androidx.hilt.work.HiltWorker
66
import androidx.work.CoroutineWorker
77
import androidx.work.WorkerParameters
88
import com.mumbicodes.projectie.R
9+
import com.mumbicodes.projectie.domain.model.DataResult
910
import com.mumbicodes.projectie.domain.relations.MilestoneWithTasks
1011
import com.mumbicodes.projectie.domain.repository.MilestonesRepository
1112
import com.mumbicodes.projectie.domain.repository.WorkersRepository
13+
import com.mumbicodes.projectie.domain.util.AllMilestonesOrder
1214
import com.mumbicodes.projectie.presentation.util.toLong
1315
import dagger.assisted.Assisted
1416
import dagger.assisted.AssistedInject
@@ -33,28 +35,33 @@ class CheckMilestoneDeadlineWorker @AssistedInject constructor(
3335
return withContext(Dispatchers.IO) {
3436
return@withContext try {
3537
Log.e("Reached 2", "It has been reached ")
36-
val allMilestones = milestonesRepository.getAllMilestones()
38+
val allMilestones = milestonesRepository.getAllMilestones(AllMilestonesOrder.MostUrgent)
3739

3840
CoroutineScope(Dispatchers.IO).launch {
39-
allMilestones.collectLatest { milestonesWithTasks ->
40-
val filteredMilestones =
41-
async { checkMilestoneDeadlineIsToday(milestonesWithTasks) }
41+
when (allMilestones) {
42+
is DataResult.Error -> Result.failure()
43+
is DataResult.Success -> {
44+
allMilestones.data.collectLatest { milestonesWithTasks ->
45+
val filteredMilestones =
46+
async { checkMilestoneDeadlineIsToday(milestonesWithTasks) }
4247

43-
filteredMilestones.await().let { milestones ->
44-
if (milestones.size > 1) {
45-
makeNotification(
46-
notificationType = NotificationType.MILESTONES,
47-
notificationId = milestones.first().milestone.milestoneId,
48-
message = "You have ${milestones.size} milestones ending Today",
49-
context = applicationContext,
50-
)
51-
} else if (milestones.size == 1) {
52-
makeNotification(
53-
NotificationType.MILESTONES,
54-
milestones.first().milestone.milestoneId,
55-
"${milestones.first().milestone.milestoneTitle} deadline is today and it's ${milestones.first().milestone.status}",
56-
applicationContext,
57-
)
48+
filteredMilestones.await().let { milestones ->
49+
if (milestones.size > 1) {
50+
makeNotification(
51+
notificationType = NotificationType.MILESTONES,
52+
notificationId = milestones.first().milestone.milestoneId,
53+
message = "You have ${milestones.size} milestones ending Today",
54+
context = applicationContext,
55+
)
56+
} else if (milestones.size == 1) {
57+
makeNotification(
58+
NotificationType.MILESTONES,
59+
milestones.first().milestone.milestoneId,
60+
"${milestones.first().milestone.milestoneTitle} deadline is today and it's ${milestones.first().milestone.status}",
61+
applicationContext,
62+
)
63+
}
64+
}
5865
}
5966
}
6067
}

app/src/main/java/com/mumbicodes/projectie/presentation/ProjectsScreen.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import androidx.compose.runtime.mutableStateOf
1010
import androidx.compose.runtime.saveable.rememberSaveable
1111
import androidx.compose.ui.Modifier
1212
import androidx.navigation.NavHostController
13-
import com.mumbicodes.projectie.presentation.allProjects.AllProjectsScreenRoute
14-
import com.mumbicodes.projectie.presentation.projectDetails.ProjectDetailsScreen
15-
import com.mumbicodes.projectie.presentation.theme.Space20dp
13+
import com.mumbicodes.projectie.presentation.designsystem.theme.Space20dp
14+
import com.mumbicodes.projectie.presentation.screens.allProjects.AllProjectsScreenRoute
15+
import com.mumbicodes.projectie.presentation.screens.projectDetails.ProjectDetailsScreen
1616
import com.mumbicodes.projectie.presentation.util.ContentType
1717
import com.mumbicodes.projectie.presentation.util.navigation.Screens
1818

app/src/main/java/com/mumbicodes/projectie/presentation/activity/MainActivity.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ import androidx.lifecycle.flowWithLifecycle
1313
import androidx.lifecycle.lifecycleScope
1414
import androidx.window.layout.FoldingFeature
1515
import androidx.window.layout.WindowInfoTracker
16-
import com.mumbicodes.projectie.presentation.splash.SplashScreenViewModel
17-
import com.mumbicodes.projectie.presentation.theme.*
18-
import com.mumbicodes.projectie.presentation.theme.ProjectTrackingTheme
16+
import com.mumbicodes.projectie.presentation.designsystem.theme.ProjectTrackingTheme
17+
import com.mumbicodes.projectie.presentation.screens.splash.SplashScreenViewModel
1918
import com.mumbicodes.projectie.presentation.util.DevicePosture
2019
import com.mumbicodes.projectie.presentation.util.isBookPosture
2120
import com.mumbicodes.projectie.presentation.util.isSeparating

0 commit comments

Comments
 (0)