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
1 change: 1 addition & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ android {
}

dependencies {
implementation(projects.core.common)
implementation(projects.core.database)
implementation(projects.core.designsystem)
implementation(projects.`data`.task)
Expand Down
1 change: 1 addition & 0 deletions core/common/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
14 changes: 14 additions & 0 deletions core/common/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
plugins {
id("conf.mad.primitive.android")
id("conf.mad.primitive.android.kotlin")
id("conf.mad.primitive.android.hilt")
}

android {
namespace = "com.conf.mad.todo.common"

defaultConfig {
consumerProguardFiles("consumer-rules.pro")
}
}
Empty file added core/common/consumer-rules.pro
Empty file.
2 changes: 2 additions & 0 deletions core/common/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.conf.mad.todo.common

import javax.inject.Qualifier

@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class Dispatcher(val dispatcherType: DispatcherType)

enum class DispatcherType {
DEFAULT,
IO,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.conf.mad.todo.common.di

import com.conf.mad.todo.common.Dispatcher
import com.conf.mad.todo.common.DispatcherType
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers

@Module
@InstallIn(SingletonComponent::class)
object DispatchersModule {
@Provides
@Dispatcher(DispatcherType.IO)
fun providesIODispatcher(): CoroutineDispatcher = Dispatchers.IO

@Provides
@Dispatcher(DispatcherType.DEFAULT)
fun providesDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default
}
1 change: 1 addition & 0 deletions data/task/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ android {
}

dependencies {
implementation(projects.core.common)
implementation(projects.core.database)
implementation(projects.domain.task)
}
Original file line number Diff line number Diff line change
@@ -1,23 +1,36 @@
package com.conf.mad.todo.data.task.repository

import com.conf.mad.todo.common.Dispatcher
import com.conf.mad.todo.common.DispatcherType.DEFAULT
import com.conf.mad.todo.data.task.mapper.asDomain
import com.conf.mad.todo.data.task.mapper.toEntity
import com.conf.mad.todo.database.TaskDao
import com.conf.mad.todo.task.model.Task
import com.conf.mad.todo.task.repository.TaskRepository
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.withContext
import javax.inject.Inject

class DefaultTaskRepository @Inject constructor(
private val taskDao: TaskDao
private val taskDao: TaskDao,
@Dispatcher(DEFAULT) private val dispatcher: CoroutineDispatcher
) : TaskRepository {
override fun getTodoTasks(): Flow<List<Task>> {
return taskDao.getTodoTasks().map { it.asDomain() }
return taskDao.getTodoTasks().map {
withContext(dispatcher) {
it.asDomain()
}
}
}

override fun getCompletedTasks(): Flow<List<Task>> {
return taskDao.getCompletedTasks().map { it.asDomain() }
return taskDao.getCompletedTasks().map {
withContext(dispatcher) {
it.asDomain()
}
}
}

override suspend fun insertTask(task: Task) {
Expand Down
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ dependencyResolutionManagement {
rootProject.name = "TodoMad"
include(
":app",
":core:common",
":core:database",
":core:designsystem",
":core:ui",
Expand Down