Skip to content
Open
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
41 changes: 11 additions & 30 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import java.util.Properties

// Load signing config from keystore.properties (not committed to VCS)
val keystorePropertiesFile = rootProject.file("keystore.properties")
val keystoreProperties = Properties().apply {
if (keystorePropertiesFile.exists()) load(keystorePropertiesFile.inputStream())
Expand All @@ -11,8 +10,6 @@ plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.ksp)
alias(libs.plugins.hilt)
}

android {
Expand All @@ -25,12 +22,8 @@ android {
targetSdk = 36
versionCode = 1
versionName = "1.0.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

vectorDrawables {
useSupportLibrary = true
}
vectorDrawables { useSupportLibrary = true }
}

signingConfigs {
Expand All @@ -47,10 +40,7 @@ android {
isMinifyEnabled = true
isShrinkResources = true
signingConfig = signingConfigs.getByName("release")
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}

Expand All @@ -59,9 +49,7 @@ android {
targetCompatibility = JavaVersion.VERSION_17
}

buildFeatures {
compose = true
}
buildFeatures { compose = true }

packaging {
resources {
Expand All @@ -73,13 +61,10 @@ android {
}

kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_17)
}
compilerOptions { jvmTarget.set(JvmTarget.JVM_17) }
}

dependencies {
// Modules
implementation(project(":domain"))
implementation(project(":data"))
implementation(project(":feature:tasklist"))
Expand All @@ -88,7 +73,7 @@ dependencies {
implementation(project(":core"))
implementation(project(":ui"))

// Core
// Core Android
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
Expand All @@ -102,20 +87,16 @@ dependencies {
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.navigation.compose)

// Hilt
implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
implementation(libs.hilt.navigation.compose)

// Room
implementation(libs.room.runtime)
// Koin
implementation(libs.koin.android)
implementation(libs.koin.compose)
implementation(libs.koin.compose.viewmodel)

// DataStore
implementation(libs.androidx.datastore.preferences)
// SQLDelight Android driver
implementation(libs.sqldelight.android.driver)

// Coroutines
implementation(libs.kotlinx.coroutines.android)

// Debug
debugImplementation(libs.androidx.compose.ui.tooling)
}
43 changes: 10 additions & 33 deletions app/src/main/java/fr/benju/tasks/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
Expand All @@ -18,16 +17,14 @@ import fr.benju.tasks.feature.settings.SettingsViewModel
import fr.benju.tasks.feature.taskeditor.TaskEditorScreen
import fr.benju.tasks.feature.tasklist.TaskListScreen
import fr.benju.tasks.ui.theme.TaskManagerTheme
import dagger.hilt.android.AndroidEntryPoint
import org.koin.compose.viewmodel.koinViewModel

@AndroidEntryPoint
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()

val settingsViewModel: SettingsViewModel by viewModels()
setContent {
val settingsViewModel: SettingsViewModel = koinViewModel()
val isDarkMode by settingsViewModel.darkModeFlow.collectAsState(initial = false)
TaskManagerTheme(isDarkMode) {
TaskManagerMainApp(settingsViewModel)
Expand All @@ -39,25 +36,14 @@ class MainActivity : ComponentActivity() {
@Composable
fun TaskManagerMainApp(settingsViewModel: SettingsViewModel) {
val navController = rememberNavController()

NavHost(
navController = navController,
startDestination = "task_list"
) {
NavHost(navController = navController, startDestination = "task_list") {
composable("task_list") {
TaskListScreen(
onAddTaskClick = {
navController.navigate("task_editor")
},
onSettingsClick = {
navController.navigate("settings")
},
onTaskClick = { taskId ->
navController.navigate("task_editor?taskId=$taskId")
}
onAddTaskClick = { navController.navigate("task_editor") },
onSettingsClick = { navController.navigate("settings") },
onTaskClick = { taskId -> navController.navigate("task_editor?taskId=$taskId") }
)
}

composable(
route = "task_editor?taskId={taskId}",
arguments = listOf(
Expand All @@ -67,24 +53,15 @@ fun TaskManagerMainApp(settingsViewModel: SettingsViewModel) {
}
)
) { backStackEntry ->
val taskId = backStackEntry.arguments?.getLong("taskId")
?.takeIf { it != -1L }
val taskId = backStackEntry.arguments?.getLong("taskId")?.takeIf { it != -1L }
TaskEditorScreen(
taskId = taskId,
onTaskSaved = {
navController.popBackStack()
},
onDismiss = {
navController.popBackStack()
}
onTaskSaved = { navController.popBackStack() },
onDismiss = { navController.popBackStack() }
)
}

composable("settings") {
SettingsScreen(
viewModel = settingsViewModel,
onBack = { navController.popBackStack() }
)
SettingsScreen(viewModel = settingsViewModel, onBack = { navController.popBackStack() })
}
}
}
30 changes: 27 additions & 3 deletions app/src/main/java/fr/benju/tasks/TaskManagerApp.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,31 @@
package fr.benju.tasks

import android.app.Application
import dagger.hilt.android.HiltAndroidApp
import fr.benju.tasks.data.database.DatabaseDriverFactory
import fr.benju.tasks.data.di.dataModule
import fr.benju.tasks.data.preferences.SettingsFactory
import fr.benju.tasks.feature.settings.di.settingsModule
import fr.benju.tasks.feature.taskeditor.di.taskEditorModule
import fr.benju.tasks.feature.tasklist.di.taskListModule
import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin
import org.koin.dsl.module

@HiltAndroidApp
class TaskManagerApp : Application()
class TaskManagerApp : Application() {
override fun onCreate() {
super.onCreate()
startKoin {
androidContext(this@TaskManagerApp)
modules(
dataModule,
module {
single { DatabaseDriverFactory(androidContext()) }
single { SettingsFactory(androidContext()) }
},
taskListModule,
taskEditorModule,
settingsModule,
)
}
}
}
28 changes: 0 additions & 28 deletions app/src/main/java/fr/benju/tasks/di/AppModule.kt

This file was deleted.

20 changes: 0 additions & 20 deletions app/src/main/java/fr/benju/tasks/di/CoroutineModule.kt

This file was deleted.

35 changes: 0 additions & 35 deletions app/src/main/java/fr/benju/tasks/di/DatabaseModule.kt

This file was deleted.

28 changes: 0 additions & 28 deletions app/src/main/java/fr/benju/tasks/di/UserPreferencesModule.kt

This file was deleted.

3 changes: 3 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@ plugins {
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.compose.multiplatform) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.sqldelight) apply false
}

tasks.register("clean", Delete::class) {
Expand Down
Loading