From 31cda158fef8de676b2e11440356255b7b2c200a Mon Sep 17 00:00:00 2001 From: Muhammad Rifko Favian <13521075@std.stei.itb.ac.id> Date: Mon, 1 Apr 2024 03:43:32 +0700 Subject: [PATCH] feat: transaction repo and vm (still error) --- .idea/kotlinc.xml | 2 +- .idea/misc.xml | 1 - app/build.gradle.kts | 12 +++++++---- .../repository/TransactionRepository.kt | 20 ++++++++++++++++++ .../ui/transaction/TransactionViewModel.kt | 21 ++++++++++++++----- build.gradle.kts | 1 + gradle.properties | 1 + gradle/libs.versions.toml | 3 ++- 8 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/com/onionsquad/bondoman/repository/TransactionRepository.kt diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index fdf8d99..fe63bb6 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="KotlinJpsPluginSettings"> - <option name="version" value="1.9.0" /> + <option name="version" value="1.9.23" /> </component> </project> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 0ad17cb..8978d23 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ -<?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK"> diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 33277ad..303188d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(libs.plugins.androidApplication) alias(libs.plugins.jetbrainsKotlinAndroid) + alias(libs.plugins.jetbrainsKotlinKapt) } android { @@ -45,12 +46,15 @@ dependencies { implementation(libs.androidx.lifecycle.viewmodel.ktx) implementation(libs.androidx.navigation.fragment.ktx) implementation(libs.androidx.navigation.ui.ktx) - implementation(libs.room.runtime) - implementation(libs.room.compiler) - implementation(libs.room.ktx) - implementation(libs.room.common) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) + // Room + implementation(libs.room.runtime) + implementation(libs.room.compiler) + implementation(libs.room.ktx) + implementation(libs.room.common) + annotationProcessor(libs.room.compiler) + kapt(libs.room.compiler) } \ No newline at end of file diff --git a/app/src/main/java/com/onionsquad/bondoman/repository/TransactionRepository.kt b/app/src/main/java/com/onionsquad/bondoman/repository/TransactionRepository.kt new file mode 100644 index 0000000..6d31c4a --- /dev/null +++ b/app/src/main/java/com/onionsquad/bondoman/repository/TransactionRepository.kt @@ -0,0 +1,20 @@ +package com.onionsquad.bondoman.repository + +import com.onionsquad.bondoman.room.* +import androidx.lifecycle.LiveData + +class TransactionRepository(private val transactionDao: TransactionDao) { + val listTransactions: LiveData<List<TransactionEntity>> = transactionDao.getAllTransactions() + + suspend fun insertTransaction(transaction: TransactionEntity) { + transactionDao.insertTransaction(transaction) + } + + suspend fun updateTransaction(transaction: TransactionEntity) { + transactionDao.updateTransaction(transaction) + } + + suspend fun deleteTransaction(transaction: TransactionEntity) { + transactionDao.deleteTransaction(transaction) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModel.kt b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModel.kt index bb883ea..a4e10ab 100644 --- a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModel.kt +++ b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionViewModel.kt @@ -1,13 +1,24 @@ package com.onionsquad.bondoman.ui.transaction import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.launch +import com.onionsquad.bondoman.room.* +import com.onionsquad.bondoman.repository.TransactionRepository -class TransactionViewModel : ViewModel() { +class TransactionViewModel(private val repository : TransactionRepository) : ViewModel() { + var listTransactions: LiveData<List<TransactionEntity>> = repository.listTransactions - private val _text = MutableLiveData<String>().apply { - value = "This is dashboard Fragment" + fun insertTransaction(transaction: TransactionEntity) = viewModelScope.launch { + repository.insertTransaction(transaction) + } + + fun updateTransaction(transaction: TransactionEntity) = viewModelScope.launch { + repository.updateTransaction(transaction) + } + + fun deleteTransaction(transaction: TransactionEntity) = viewModelScope.launch { + repository.deleteTransaction(transaction) } - val text: LiveData<String> = _text } \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index a0985ef..56ccadd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,4 +2,5 @@ plugins { alias(libs.plugins.androidApplication) apply false alias(libs.plugins.jetbrainsKotlinAndroid) apply false + alias(libs.plugins.jetbrainsKotlinKapt) apply false } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 20e2a01..68c91ae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,6 +15,7 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 # Android operating system, and which are packaged with your app's APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true +android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official # Enables namespacing of each library's R class so that its R class includes only the diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 15e4421..0dfe940 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,6 +13,7 @@ lifecycleViewmodelKtx = "2.6.1" navigationFragmentKtx = "2.6.0" navigationUiKtx = "2.6.0" room = "2.6.1" +kapt = "1.9.23" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -34,5 +35,5 @@ room-common = { group = "androidx.room", name = "room-common", version.ref = "ro [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } jetbrainsKotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } -kotlinKapt = { id = "kotlin-kapt", version.ref = "kotlin" } +jetbrainsKotlinKapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kapt" } -- GitLab