diff --git a/app/src/main/java/cc/n0th1ng/tripmoney/data/TripDatabase.kt b/app/src/main/java/cc/n0th1ng/tripmoney/data/TripDatabase.kt index 1b09386..c486f39 100644 --- a/app/src/main/java/cc/n0th1ng/tripmoney/data/TripDatabase.kt +++ b/app/src/main/java/cc/n0th1ng/tripmoney/data/TripDatabase.kt @@ -57,13 +57,13 @@ object DatabaseModule { fun provideTripDatabase( @ApplicationContext context: Context ): TripDatabase { - val db: TripDatabase = Room.inMemoryDatabaseBuilder( -// val db: TripDatabase = Room.databaseBuilder( -// name = "tripmoney_db", +// val db: TripDatabase = Room.inMemoryDatabaseBuilder( + val db: TripDatabase = Room.databaseBuilder( + name = "tripmoney_db", context = context, klass = TripDatabase::class.java, ) - .allowMainThreadQueries() // TODO Remove in production! +// .allowMainThreadQueries() // TODO Remove in production! .fallbackToDestructiveMigration() // TODO Handle schema changes during dev .build() diff --git a/app/src/main/java/cc/n0th1ng/tripmoney/data/dao/ExpenseDao.kt b/app/src/main/java/cc/n0th1ng/tripmoney/data/dao/ExpenseDao.kt index 97308f9..b475462 100644 --- a/app/src/main/java/cc/n0th1ng/tripmoney/data/dao/ExpenseDao.kt +++ b/app/src/main/java/cc/n0th1ng/tripmoney/data/dao/ExpenseDao.kt @@ -7,7 +7,6 @@ import androidx.room.Query import androidx.room.RewriteQueriesToDropUnusedColumns import androidx.room.Transaction import androidx.room.Upsert -import cc.n0th1ng.tripmoney.data.entity.Category import cc.n0th1ng.tripmoney.data.entity.Expense import cc.n0th1ng.tripmoney.data.entity.ExpenseDto import kotlinx.coroutines.flow.Flow @@ -100,7 +99,7 @@ interface ExpenseDao { WHERE trip.id = :tripId """ ) - fun budgetLeft(tripId: Int): Double? + fun budgetLeft(tripId: Int): Flow @Delete suspend fun delete(expense: Expense) diff --git a/app/src/main/java/cc/n0th1ng/tripmoney/data/repository/ExpenseRepository.kt b/app/src/main/java/cc/n0th1ng/tripmoney/data/repository/ExpenseRepository.kt index 3e5aedf..bacf5ab 100644 --- a/app/src/main/java/cc/n0th1ng/tripmoney/data/repository/ExpenseRepository.kt +++ b/app/src/main/java/cc/n0th1ng/tripmoney/data/repository/ExpenseRepository.kt @@ -13,7 +13,6 @@ import cc.n0th1ng.tripmoney.data.entity.ExpenseDto import cc.n0th1ng.tripmoney.utils.Currencies import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first -import java.util.OptionalDouble import javax.inject.Inject class ExpenseRepository @Inject constructor( @@ -21,7 +20,7 @@ class ExpenseRepository @Inject constructor( private val exchangeRateRepository: ExchangeRateRepository ) { - fun getBudgetLeft(tripId: Int): Double? { + fun getBudgetLeft(tripId: Int): Flow { return expenseDao.budgetLeft(tripId) } diff --git a/app/src/main/java/cc/n0th1ng/tripmoney/screens/settings/SettingsScreen.kt b/app/src/main/java/cc/n0th1ng/tripmoney/screens/settings/SettingsScreen.kt index 0feb2ef..c3fc911 100644 --- a/app/src/main/java/cc/n0th1ng/tripmoney/screens/settings/SettingsScreen.kt +++ b/app/src/main/java/cc/n0th1ng/tripmoney/screens/settings/SettingsScreen.kt @@ -1,6 +1,5 @@ package cc.n0th1ng.tripmoney.screens.settings -import android.content.Intent import android.os.Build import androidx.annotation.RequiresApi import androidx.annotation.StringRes @@ -36,34 +35,23 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import androidx.core.content.FileProvider import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.navigation.NavHostController -import androidx.navigation.compose.rememberNavController -import cc.n0th1ng.tripmoney.R.* -import cc.n0th1ng.tripmoney.data.entity.Category +import cc.n0th1ng.tripmoney.R.string import cc.n0th1ng.tripmoney.data.entity.Trip import cc.n0th1ng.tripmoney.data.repository.AppTheme import cc.n0th1ng.tripmoney.navigation.Screens -import cc.n0th1ng.tripmoney.screens.listexpense.CategorySelectionDialog import cc.n0th1ng.tripmoney.screens.listexpense.CurrencySelectionDialog -import cc.n0th1ng.tripmoney.screens.statistics.categories import cc.n0th1ng.tripmoney.theme.TripMoneyTheme import cc.n0th1ng.tripmoney.utils.AllPreviews import cc.n0th1ng.tripmoney.utils.Currencies -import cc.n0th1ng.tripmoney.utils.Icons -import cc.n0th1ng.tripmoney.utils.saveCsv import cc.n0th1ng.tripmoney.utils.shareCsv import cc.n0th1ng.tripmoney.viewmodel.ExpenseAndCategoryViewModel import cc.n0th1ng.tripmoney.viewmodel.SettingsViewModel import cc.n0th1ng.tripmoney.viewmodel.TripViewModel import com.composables.icons.materialsymbols.outlined.R -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.io.File -import java.nio.file.Files @RequiresApi(Build.VERSION_CODES.S) @Composable @@ -168,7 +156,7 @@ fun SettingsScreen( iconResource = R.drawable.materialsymbols_ic_label_outlined ) SettingsListItem( - onClick = onCategoriesClick, + onClick = {}, stringResource(string.add_expense), supportingText = stringResource(string.add_expense_settings), iconResource = R.drawable.materialsymbols_ic_payments_outlined, diff --git a/app/src/main/java/cc/n0th1ng/tripmoney/screens/statistics/StatisticsScreen.kt b/app/src/main/java/cc/n0th1ng/tripmoney/screens/statistics/StatisticsScreen.kt index 9ecbdd2..3fa4ae3 100644 --- a/app/src/main/java/cc/n0th1ng/tripmoney/screens/statistics/StatisticsScreen.kt +++ b/app/src/main/java/cc/n0th1ng/tripmoney/screens/statistics/StatisticsScreen.kt @@ -60,11 +60,12 @@ fun StatisticsScreen() { .collectAsState(emptyList()) val summaryAmount by expenseAndCategoryViewModel.getSummaryAmount(currentTripId) .collectAsState(0.0) + val moneyLeft by expenseAndCategoryViewModel.getBudgetLeft(currentTripId).collectAsState(null) StatisticsScreen( summaryPerCategoryList, summaryAmount, Currencies.valueOf(currentTrip?.currency ?: Currencies.default().name), - expenseAndCategoryViewModel.getBudgetLeft(currentTripId) + moneyLeft ) } diff --git a/app/src/main/java/cc/n0th1ng/tripmoney/viewmodel/ExpenseAndCategoryViewModel.kt b/app/src/main/java/cc/n0th1ng/tripmoney/viewmodel/ExpenseAndCategoryViewModel.kt index 61fcf43..e1e5376 100644 --- a/app/src/main/java/cc/n0th1ng/tripmoney/viewmodel/ExpenseAndCategoryViewModel.kt +++ b/app/src/main/java/cc/n0th1ng/tripmoney/viewmodel/ExpenseAndCategoryViewModel.kt @@ -29,9 +29,7 @@ import org.apache.commons.csv.CSVFormat import org.apache.commons.csv.CSVPrinter import java.io.File import java.time.LocalDate -import java.util.OptionalDouble import javax.inject.Inject -import kotlin.collections.mapValues @HiltViewModel @@ -42,7 +40,7 @@ open class ExpenseAndCategoryViewModel @Inject constructor( private val tripRepo: TripRepository ) : ViewModel() { - fun getBudgetLeft(tripId: Int): Double? { + fun getBudgetLeft(tripId: Int): Flow { return expenseRepo.getBudgetLeft(tripId) }