Skip to content

//app/dev.atick.compose.repository.expenses/ExpensesRepositoryImpl

ExpensesRepositoryImpl

class ExpensesRepositoryImpl@Injectconstructor(geminiDataSource: GeminiDataSource, geminiRateLimiter: GeminiRateLimiter, smsDataSource: SMSDataSource, expenseDataSource: ExpenseDataSource, budgetDataSource: BudgetDataSource, taskManager: TaskManager) : ExpensesRepository

Implementation of ExpensesRepository that fetches data from the ExpenseDataSource, BudgetDataSource, SMSDataSource, and GeminiDataSource.

Parameters

androidJvm

geminiDataSource The data source for Gemini data.
geminiRateLimiter The rate limiter for Gemini API requests.
smsDataSource The data source for SMS data.
expenseDataSource The data source for expense data.
budgetDataSource The data source for budget data.
taskManager The task manager for syncing and notifications.

Constructors

ExpensesRepositoryImpl [androidJvm]
@Inject
constructor(geminiDataSource: GeminiDataSource, geminiRateLimiter: GeminiRateLimiter, smsDataSource: SMSDataSource, expenseDataSource: ExpenseDataSource, budgetDataSource: BudgetDataSource, taskManager: TaskManager)

Properties

Name Summary
isSyncing [androidJvm]
open override val isSyncing: Flow<Boolean>
Flow of Boolean that indicates whether the repository is syncing.

Functions

Name Summary
deleteExpense [androidJvm]
open suspend override fun deleteExpense(expense: UiExpense): Result<Unit>
Deletes the expense.
getAllExpenses [androidJvm]
open override fun getAllExpenses(startDate: Long, endDate: Long): Flow<List<UiExpense>>
Gets all the expenses.
getExpenseById [androidJvm]
open override fun getExpenseById(id: Long): Flow<UiExpense>
Gets the expense by ID.
requestSync [androidJvm]
@RequiresPermission(value = "android.permission.READ_SMS")
open override fun requestSync(): Result<Unit>
Requests a sync of the expenses.
setRecurringType [androidJvm]
open suspend override fun setRecurringType(merchant: String, recurringType: UiRecurringType): Result<Unit>
Sets the recurring type for the merchant.
syncExpensesFromSms [androidJvm]
@RequiresPermission(value = "android.permission.READ_SMS")
open override fun syncExpensesFromSms(): Flow<SyncProgress>
Syncs the expenses from the SMS.
updateExpense [androidJvm]
open suspend override fun updateExpense(expense: UiExpense): Result<Unit>
Updates the expense.