diff --git a/.danger/apk.md b/.danger/apk.md deleted file mode 100644 index cb46743f5a..0000000000 --- a/.danger/apk.md +++ /dev/null @@ -1,9 +0,0 @@ -**Great news! Your PR builds ✅** - -We've managed to generate a R8-optimized -_(minify, obfuscate and shrink resources)_ APK with your changes. 👌 - -It's way faster than the `debug` build type but sometimes it may crash. So please, **test** and enjoy your ligthning-fast **[Ivy-Wallet-Demo.apk]()**. ⚡ - -_⚠️ It's important to download and test this APK artifact from the **["APK" workflow]()** or the link above because it may introduce runtime crashes in production._ - diff --git a/.danger/danger_apk.ts b/.danger/danger_apk.ts deleted file mode 100644 index 32e292c2d9..0000000000 --- a/.danger/danger_apk.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { danger, markdown, message } from "danger"; - -const runID = process.env.GITHUB_RUN_ID; -const repoFullName = danger.github.pr.base.repo.full_name; -const artifactURL = `https://github.com/${repoFullName}/actions/runs/${runID}`; - - -message(` -## APK ready ✅ - -We've managed to generate a R8-optimized _(minify, obfuscate, and shrink resources)_ APK with your changes. 👌 - -It's way faster than the \`debug\` build type but sometimes it may crash. So please, **test** and enjoy your lightning-fast **[Ivy-Wallet-Demo.apk](${artifactURL})**. ⚡ - -_**Note:** It's important to download and test this APK artifact from the **["APK" workflow](${artifactURL})** or the link above because it may introduce runtime crashes in production._` -); - -message(` -## Detekt check finished 🕵️‍♂️ - -Our code quality check completed. ✅ - -If it fails, open the **"Detekt" workflow** run on your PR, scroll down and download the attached \`detekt-report.html\`. Please, inspect it and try to fix the errors. 🔎 - -_**Pstt,** don't worry - sometimes Detekt gives false-positives. Your reviewer will guide you towards the best next steps. 👍_` -); - -markdown(` -## Congratulations! 🎉 You're almost there... - -Your PR is a fact and it'll be reviewed as soon as possible. The last step is to receive an approving review and merge it. ✅ - -**The final thing left to do is:** -- Upload a screen recording to prove that your code works. _(without it we can't merge your PR)_ - -**Code quality tips:** -- The keyword is **simplicity**. -- Can I do it in a more simple and straightforward way? -- Can I do it with less code? If so, delete what's unnecessary. -- Did I over-engineer it? - -_Thank you for your contribution! 👏_` -); diff --git a/.danger/danger_detekt.ts b/.danger/danger_detekt.ts deleted file mode 100644 index 419fed4697..0000000000 --- a/.danger/danger_detekt.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { danger, markdown, message } from "danger"; - -const runID = process.env.GITHUB_RUN_ID; -const repoFullName = danger.github.pr.base.repo.full_name; -const actionRunUrl = `https://github.com/${repoFullName}/actions/runs/${runID}`; - -message(` -## Detekt check finished 🕵️‍♂️ - -Our code quality check completed. ✅ - -If it fails, open **[the "Detekt" workflow run](${actionRunUrl})** on your PR, scroll down and download the attached \`detekt-report.html\`. Please, inspect it and try to fix the errors. 🔎 - -_**Pstt,** don't worry - sometimes Detekt gives false-positives. Your reviewer will guide you towards the best next steps. 👍_` -); - -markdown(` -## Congratulations! 🎉 You're almost there... - -Your PR is a fact and it'll be reviewed as soon as possible. The last step is to receive an approving review and merge it. ✅ - -**The final thing left to do is:** -- Upload a screen recording to prove that your code works. _(without it we can't merge your PR)_ - -**Code quality tips:** -- The keyword is **simplicity**. -- Can I do it in a more simple and straightforward way? -- Can I do it with less code? If so, delete what's unnecessary. -- Did I over-engineer it? - -_Thank you for your contribution! 👏_` -) \ No newline at end of file diff --git a/.danger/danger_pr.ts b/.danger/danger_pr.ts deleted file mode 100644 index 6ed0643b9d..0000000000 --- a/.danger/danger_pr.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { markdown } from "danger" - -markdown(` -## Congratulations! 🎉 You're almost there... - -Your PR is a fact and it'll be reviewed as soon as possible. The last step is to receive an approving review and merge it. ✅ - -**The final thing left to do is:** -- Upload a screen recording to prove that your code works. _(without it we can't merge your PR)_ - -**Code quality tips:** -- The keyword is **simplicity**. -- Can I do it in a more simple and straightforward way? -- Can I do it with less code? If so, delete what's unnecessary. -- Did I over-engineer it? - -_Thank you for your contribution! 👏_` -) \ No newline at end of file diff --git a/.danger/detekt.md b/.danger/detekt.md deleted file mode 100644 index e5e374ddfe..0000000000 --- a/.danger/detekt.md +++ /dev/null @@ -1,9 +0,0 @@ -# Detekt check finished 🕵️‍♂️ - -Our code quality check completed. ✅ - -If it fails, [click here](), scroll down -and download the attached **detekt-report.html**. Please, inspect it and try to fix the errors. 🔎 - -_**Pstt,** don't worry - sometimes Detekt gives false-positives. -Your reviewer will guide towards the best next steps. 👍_ \ No newline at end of file diff --git a/.danger/pr.md b/.danger/pr.md deleted file mode 100644 index 4baa1307c7..0000000000 --- a/.danger/pr.md +++ /dev/null @@ -1,14 +0,0 @@ -**Congratualstions! 🎉 You're almost there...** - -Your PR is a fact and it'll be reviewed as soon as possible. The last step is to receive an approving review and merge it. ✅ - -**The final thing left to is:** -- Upload a screen recoding to prove that your code works. _(without it we can't merge your PR)_ - -**Code quality tips:** -- The keyword is **simplicity**. -- Can I do it in a more simple and straightforward way? -- Can I do it with less code? If so, delete what's unnecessary. -- Did I over-engineer it? - -_Thank you for your contributuon! 👏_ \ No newline at end of file diff --git a/.github/workflows/apk.yml b/.github/workflows/apk.yml index f718f1f76b..535938bb39 100644 --- a/.github/workflows/apk.yml +++ b/.github/workflows/apk.yml @@ -54,11 +54,3 @@ jobs: -F "reply_to_message_id=16118" \ -F "caption=$CAPTION" \ https://api.telegram.org/bot${{ secrets.BOTFATHER_TELEGRAM_BOT_TOKEN }}/sendDocument - - - name: Comment APK on the PR with Danger - if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository - uses: danger/danger-js@11.2.8 - with: - args: "--dangerfile .danger/danger_apk.ts" - env: - DANGER_GITHUB_API_TOKEN: ${{ secrets.IVYWALLET_BOT_GITHUB_PAT }} diff --git a/.github/workflows/danger_pr.yml b/.github/workflows/danger_pr.yml deleted file mode 100644 index 2381cf24a1..0000000000 --- a/.github/workflows/danger_pr.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: "Danger (PR)" - -on: - pull_request: - -jobs: - danger_pr: - runs-on: ubuntu-latest - - steps: - - name: Checkout GIT - uses: actions/checkout@v4 - - - name: Comment on the PR - if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository - uses: danger/danger-js@11.2.8 - with: - args: "--dangerfile .danger/danger_pr.ts" - env: - DANGER_GITHUB_API_TOKEN: ${{ secrets.IVYWALLET_BOT_GITHUB_PAT }} diff --git a/.github/workflows/detekt.yml b/.github/workflows/detekt.yml index 285beb7358..65b8bd431a 100644 --- a/.github/workflows/detekt.yml +++ b/.github/workflows/detekt.yml @@ -50,13 +50,4 @@ jobs: with: name: detekt-report.html path: build/reports/detekt/detekt.html - #------------------------------------------------------------------ - - - name: Comment Detekt results on the PR with Danger - if: (success() || failure()) && (github.event.pull_request.head.repo.full_name == github.repository) - uses: danger/danger-js@11.2.8 - with: - args: "--dangerfile .danger/danger_detekt.ts" - env: - DANGER_GITHUB_API_TOKEN: ${{ secrets.IVYWALLET_BOT_GITHUB_PAT }} - + #------------------------------------------------------------------ \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index fa549df8b4..7d07626b2b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -153,6 +153,7 @@ dependencies { implementation(projects.screenSearch) implementation(projects.screenTest) implementation(projects.screenBalance) + implementation(projects.screenFeatures) implementation(libs.bundles.kotlin) implementation(libs.bundles.ktor) @@ -165,8 +166,6 @@ dependencies { implementation(libs.androidx.security) implementation(libs.androidx.biometrics) - implementation(libs.gson) - implementation(libs.bundles.hilt) kapt(libs.hilt.compiler) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 2f22e8a5de..775efe4702 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -9,12 +9,6 @@ -dontwarn com.google.errorprone.** -dontwarn org.slf4j.impl.** -# Json serialization (GSON fixes) --keepattributes Signature --keep class com.google.gson.reflect.TypeToken { *; } --keep class * extends com.google.gson.reflect.TypeToken --keep class com.google.gson.** { *; } - # Keep inherited services. -if interface * { @retrofit2.http.* ; } -keep,allowobfuscation interface * extends <1> @@ -26,14 +20,4 @@ # R8 full mode strips generic signatures from return types if not kept. -if interface * { @retrofit2.http.* public *** *(...); } --keep,allowoptimization,allowshrinking,allowobfuscation class <3> - -# If a class is used in some way by the application, and has fields annotated with @SerializedName -# and a no-args constructor, keep those fields and the constructor -# Based on https://issuetracker.google.com/issues/150189783#comment11 -# See also https://github.com/google/gson/pull/2420#discussion_r1241813541 for a more detailed explanation --if class * --keepclasseswithmembers,allowobfuscation,allowoptimization class <1> { - (); - @com.google.gson.annotations.SerializedName ; -} \ No newline at end of file +-keep,allowoptimization,allowshrinking,allowobfuscation class <3> \ No newline at end of file diff --git a/app/src/main/java/com/ivy/IvyNavGraph.kt b/app/src/main/java/com/ivy/IvyNavGraph.kt index 45a2a1edf4..7ad572e4ed 100644 --- a/app/src/main/java/com/ivy/IvyNavGraph.kt +++ b/app/src/main/java/com/ivy/IvyNavGraph.kt @@ -8,6 +8,7 @@ import com.ivy.balance.BalanceScreen import com.ivy.budgets.BudgetScreen import com.ivy.categories.CategoriesScreen import com.ivy.exchangerates.ExchangeRatesScreen +import com.ivy.features.FeaturesScreenImpl import com.ivy.importdata.csv.CSVScreen import com.ivy.importdata.csvimport.ImportCSVScreen import com.ivy.loans.loan.LoansScreen @@ -19,6 +20,7 @@ import com.ivy.navigation.CategoriesScreen import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.EditTransactionScreen import com.ivy.navigation.ExchangeRatesScreen +import com.ivy.navigation.FeaturesScreen import com.ivy.navigation.ImportScreen import com.ivy.navigation.ItemStatisticScreen import com.ivy.navigation.LoanDetailsScreen @@ -49,6 +51,9 @@ import com.ivy.wallet.ui.main.MainScreen @Composable fun BoxWithConstraintsScope.IvyNavGraph(screen: Screen?) { when (screen) { + null -> { + // show nothing + } is MainScreen -> MainScreen(screen = screen) is OnboardingScreen -> OnboardingScreen(screen = screen) is ExchangeRatesScreen -> ExchangeRatesScreen() @@ -68,7 +73,6 @@ fun BoxWithConstraintsScope.IvyNavGraph(screen: Screen?) { is LoanDetailsScreen -> LoanDetailsScreen(screen = screen) is SearchScreen -> SearchScreen(screen = screen) is CSVScreen -> CSVScreen(screen = screen) - null -> { - } + FeaturesScreen -> FeaturesScreenImpl() } } \ No newline at end of file diff --git a/app/src/main/java/com/ivy/wallet/IvyAppStarter.kt b/app/src/main/java/com/ivy/wallet/IvyAppStarter.kt index adc3751be3..d986edbe94 100644 --- a/app/src/main/java/com/ivy/wallet/IvyAppStarter.kt +++ b/app/src/main/java/com/ivy/wallet/IvyAppStarter.kt @@ -3,7 +3,7 @@ package com.ivy.wallet import android.content.Context import android.content.Intent import com.ivy.core.AppStarter -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject diff --git a/app/src/main/java/com/ivy/wallet/RootActivity.kt b/app/src/main/java/com/ivy/wallet/RootActivity.kt index 4226bcd219..6aabb2561b 100644 --- a/app/src/main/java/com/ivy/wallet/RootActivity.kt +++ b/app/src/main/java/com/ivy/wallet/RootActivity.kt @@ -39,7 +39,7 @@ import com.google.android.gms.common.api.ApiException import com.google.android.gms.tasks.Task import com.google.android.play.core.review.ReviewManagerFactory import com.ivy.IvyNavGraph -import com.ivy.core.Constants +import com.ivy.legacy.Constants import com.ivy.core.RootScreen import com.ivy.core.util.toEpochMilli import com.ivy.design.api.IvyUI diff --git a/app/src/main/java/com/ivy/wallet/RootViewModel.kt b/app/src/main/java/com/ivy/wallet/RootViewModel.kt index 84d272a6dd..cee3fa7a02 100644 --- a/app/src/main/java/com/ivy/wallet/RootViewModel.kt +++ b/app/src/main/java/com/ivy/wallet/RootViewModel.kt @@ -4,8 +4,8 @@ import android.content.Intent import androidx.biometric.BiometricPrompt import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.SettingsDao +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.SettingsDao import com.ivy.core.util.stringRes import com.ivy.design.l0_system.Theme import com.ivy.frp.test.TestIdlingResource diff --git a/app/src/main/java/com/ivy/wallet/di/AppModuleBindings.kt b/app/src/main/java/com/ivy/wallet/di/AppBindingsModule.kt similarity index 90% rename from app/src/main/java/com/ivy/wallet/di/AppModuleBindings.kt rename to app/src/main/java/com/ivy/wallet/di/AppBindingsModule.kt index 834b03f941..3833e5a1a7 100644 --- a/app/src/main/java/com/ivy/wallet/di/AppModuleBindings.kt +++ b/app/src/main/java/com/ivy/wallet/di/AppBindingsModule.kt @@ -9,7 +9,7 @@ import dagger.hilt.components.SingletonComponent @Module @InstallIn(SingletonComponent::class) -abstract class AppModuleBindings { +abstract class AppBindingsModule { @Binds abstract fun appStarter(appStarter: IvyAppStarter): AppStarter } \ No newline at end of file diff --git a/app/src/main/java/com/ivy/wallet/migrations/MigrationsManager.kt b/app/src/main/java/com/ivy/wallet/migrations/MigrationsManager.kt index 9caf2502a3..4c63981252 100644 --- a/app/src/main/java/com/ivy/wallet/migrations/MigrationsManager.kt +++ b/app/src/main/java/com/ivy/wallet/migrations/MigrationsManager.kt @@ -3,7 +3,7 @@ package com.ivy.wallet.migrations import android.content.Context import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.edit -import com.ivy.core.data.dataStore +import com.ivy.core.datastore.dataStore import com.ivy.wallet.migrations.impl.DisableGitHubAutoBackupMigration import dagger.Lazy import dagger.hilt.android.qualifiers.ApplicationContext diff --git a/app/src/main/java/com/ivy/wallet/migrations/impl/DisableGitHubAutoBackupMigration.kt b/app/src/main/java/com/ivy/wallet/migrations/impl/DisableGitHubAutoBackupMigration.kt index e979656327..d2bff7945c 100644 --- a/app/src/main/java/com/ivy/wallet/migrations/impl/DisableGitHubAutoBackupMigration.kt +++ b/app/src/main/java/com/ivy/wallet/migrations/impl/DisableGitHubAutoBackupMigration.kt @@ -3,8 +3,8 @@ package com.ivy.wallet.migrations.impl import android.content.Context import androidx.datastore.preferences.core.edit import androidx.work.WorkManager -import com.ivy.core.data.DatastoreKeys -import com.ivy.core.data.dataStore +import com.ivy.core.datastore.DatastoreKeys +import com.ivy.core.datastore.dataStore import com.ivy.wallet.migrations.Migration import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject diff --git a/app/src/main/java/com/ivy/wallet/ui/main/MainScreen.kt b/app/src/main/java/com/ivy/wallet/ui/main/MainScreen.kt index 9914702825..bda8fe7347 100644 --- a/app/src/main/java/com/ivy/wallet/ui/main/MainScreen.kt +++ b/app/src/main/java/com/ivy/wallet/ui/main/MainScreen.kt @@ -20,7 +20,7 @@ import com.ivy.home.HomeTab import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.EditTransactionScreen import com.ivy.navigation.MainScreen -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.ui.theme.modal.edit.AccountModal import com.ivy.wallet.ui.theme.modal.edit.AccountModalData diff --git a/app/src/main/java/com/ivy/wallet/ui/main/MainViewModel.kt b/app/src/main/java/com/ivy/wallet/ui/main/MainViewModel.kt index 6dfd977318..b80cd1dc6c 100644 --- a/app/src/main/java/com/ivy/wallet/ui/main/MainViewModel.kt +++ b/app/src/main/java/com/ivy/wallet/ui/main/MainViewModel.kt @@ -3,7 +3,7 @@ package com.ivy.wallet.ui.main import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.read.SettingsDao +import com.ivy.core.db.read.SettingsDao import com.ivy.core.event.AccountUpdatedEvent import com.ivy.core.event.EventBus import com.ivy.frp.test.TestIdlingResource diff --git a/buildSrc/src/main/kotlin/ivy.module.gradle.kts b/buildSrc/src/main/kotlin/ivy.module.gradle.kts index d32e25cccc..abaf66c282 100644 --- a/buildSrc/src/main/kotlin/ivy.module.gradle.kts +++ b/buildSrc/src/main/kotlin/ivy.module.gradle.kts @@ -1,10 +1,11 @@ plugins { id("com.android.library") id("kotlin-android") - id("kotlin-kapt") // TODO: Remove + id("kotlin-kapt") // TODO: Remove when we migrate to KSP id("org.jetbrains.kotlin.android") id("dagger.hilt.android.plugin") id("com.google.devtools.ksp") + id("org.jetbrains.kotlin.plugin.serialization") } kotlin { @@ -53,6 +54,8 @@ dependencies { // TODO: Migrate to KSP when supported kapt(catalog.library("hilt-compiler")) + implementation(catalog.library("kotlinx-serialization-json")) + testImplementation(libs.bundles.kotest) testImplementation(catalog.bundle("kotlin-test")) testImplementation(catalog.library("hilt-testing")) diff --git a/config/detekt/baseline.yml b/config/detekt/baseline.yml index cf618b2bb5..bdf9d24765 100644 --- a/config/detekt/baseline.yml +++ b/config/detekt/baseline.yml @@ -2146,7 +2146,7 @@ FunctionParameterNaming:ReorderModal.kt$TitleContent: @Composable ColumnScope.() -> Unit = { Text( modifier = Modifier.padding(start = 32.dp), text = stringResource(R.string.reorder), style = UI.typo.b1.style( UI.colors.pureInverse, FontWeight.ExtraBold ) ) } FunctionParameterNaming:SettingsScreen.kt$Content: @Composable RowScope.() -> Unit FunctionParameterNaming:WrapContentRow.kt$ItemContent: @Composable (item: T) -> Unit - ImportOrdering:AccTrnsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.core.data.db.dao.TransactionDao import java.util.* import javax.inject.Inject + ImportOrdering:AccTrnsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.core.db.dao.TransactionDao import java.util.* import javax.inject.Inject ImportOrdering:Accessors11xxvwy0y6zsdmgi5tg7sgrcq.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:Accessors12l04gyw3iri7cbpx1tj9yrz6.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:Accessors15c80wxji7qdhvcsteytc58m6.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* @@ -2380,20 +2380,20 @@ ImportOrdering:Accessorstb68seoty168jvcumfv5xk2v.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:Accessorsudq1uh318qqky95gjgywg3z1.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:Accessorsv8sku3n0evm97p61uoj1tesf.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* - ImportOrdering:Account.kt$import androidx.compose.runtime.Immutable import androidx.compose.ui.graphics.toArgb import com.ivy.design.l0_system.Green import com.ivy.core.data.db.entity.AccountEntity import java.util.UUID - ImportOrdering:AccountByIdAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Account import com.ivy.core.data.db.dao.AccountDao import java.util.* import javax.inject.Inject - ImportOrdering:AccountCreator.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.core.data.model.Account import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.data.db.dao.AccountDao import com.ivy.legacy.utils.ioThread import javax.inject.Inject + ImportOrdering:Account.kt$import androidx.compose.runtime.Immutable import androidx.compose.ui.graphics.toArgb import com.ivy.design.l0_system.Green import com.ivy.core.db.entity.AccountEntity import java.util.UUID + ImportOrdering:AccountByIdAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Account import com.ivy.core.db.dao.AccountDao import java.util.* import javax.inject.Inject + ImportOrdering:AccountCreator.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.core.data.model.Account import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.db.dao.AccountDao import com.ivy.legacy.utils.ioThread import javax.inject.Inject ImportOrdering:AccountDataAct.kt$import arrow.core.toOption import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then import com.ivy.wallet.domain.action.account.CalcAccBalanceAct import com.ivy.wallet.domain.action.account.CalcAccIncomeExpenseAct import com.ivy.wallet.domain.action.exchange.ExchangeAct import com.ivy.core.data.model.Account import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.wallet.domain.pure.exchange.ExchangeData import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject ImportOrdering:AccountEntity.kt$import androidx.annotation.Keep import androidx.compose.ui.graphics.toArgb import androidx.room.Entity import androidx.room.PrimaryKey import com.google.gson.annotations.SerializedName import com.ivy.design.l0_system.Green import com.ivy.core.data.model.Account import java.util.* ImportOrdering:AccountModal.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.core.legacy.ui.IvyColorPicker import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.core.data.model.Account import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.components.IvyCheckboxWithText import com.ivy.wallet.ui.theme.modal.ChooseIconModal import com.ivy.wallet.ui.theme.modal.CurrencyModal import com.ivy.wallet.ui.theme.modal.IvyModal import com.ivy.wallet.ui.theme.modal.ModalAddSave import com.ivy.wallet.ui.theme.modal.ModalAmountSection import com.ivy.wallet.ui.theme.modal.ModalTitle import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.selectEndTextFieldValue import com.ivy.legacy.utils.toLowerCaseLocal import com.ivy.legacy.utils.toUpperCaseLocal import java.util.UUID - ImportOrdering:AccountsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.model.Account import com.ivy.core.data.db.dao.AccountDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject + ImportOrdering:AccountsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.model.Account import com.ivy.core.db.dao.AccountDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject ImportOrdering:AccountsEvent.kt$import com.ivy.legacy.data.model.AccountData import com.ivy.core.data.model.Account ImportOrdering:AccountsTab.kt$import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.core.data.model.Account import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.utils.clickableNoIndication import com.ivy.legacy.utils.horizontalSwipeListener import com.ivy.navigation.ItemStatisticScreen import com.ivy.navigation.MainScreen import com.ivy.resources.R import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.GreenDark import com.ivy.wallet.ui.theme.GreenLight import com.ivy.wallet.ui.theme.IvyDark import com.ivy.wallet.ui.theme.components.BalanceRow import com.ivy.wallet.ui.theme.components.BalanceRowMini import com.ivy.wallet.ui.theme.components.ItemIconSDefaultIcon import com.ivy.wallet.ui.theme.components.ReorderButton import com.ivy.wallet.ui.theme.components.ReorderModalSingleType import com.ivy.wallet.ui.theme.dynamicContrast import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.toComposeColor import kotlinx.collections.immutable.persistentListOf - ImportOrdering:AccountsViewModel.kt$import androidx.lifecycle.viewModelScope import com.ivy.legacy.data.model.toCloseTimeRange import com.ivy.frp.test.TestIdlingResource import com.ivy.frp.viewmodel.FRPViewModel import com.ivy.resources.R import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.viewmodel.account.AccountDataAct import com.ivy.wallet.domain.action.wallet.CalcWalletBalanceAct import com.ivy.core.data.model.Account import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.wallet.domain.pure.data.WalletDAOs import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.legacy.utils.format import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import javax.inject.Inject + ImportOrdering:AccountsViewModel.kt$import androidx.lifecycle.viewModelScope import com.ivy.legacy.data.model.toCloseTimeRange import com.ivy.frp.test.TestIdlingResource import com.ivy.frp.viewmodel.FRPViewModel import com.ivy.resources.R import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.viewmodel.account.AccountDataAct import com.ivy.wallet.domain.action.wallet.CalcWalletBalanceAct import com.ivy.core.data.model.Account import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.wallet.domain.pure.data.WalletDAOs import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.SettingsDao import com.ivy.legacy.utils.format import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import javax.inject.Inject ImportOrdering:AddKeywordModal.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.wallet.ui.theme.components.IvyTitleTextField import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.selectEndTextFieldValue import java.util.UUID ImportOrdering:AddPrimaryAttributeButton.kt$import androidx.annotation.DrawableRes import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletComponentPreview ImportOrdering:AddRateModal.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.Orange import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.design.l1_buildingBlocks.SpacerVer import com.ivy.exchangerates.data.RateUi import com.ivy.exchangerates.RatesEvent import com.ivy.wallet.ui.theme.modal.IvyModal import com.ivy.wallet.ui.theme.modal.ModalAdd import com.ivy.wallet.ui.theme.modal.ModalTitle import com.ivy.wallet.ui.theme.modal.edit.AmountModal import java.util.UUID - ImportOrdering:AllTrnsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.core.data.model.Transaction import com.ivy.core.data.db.dao.TransactionDao import javax.inject.Inject + ImportOrdering:AllTrnsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.core.data.model.Transaction import com.ivy.core.db.dao.TransactionDao import javax.inject.Inject ImportOrdering:AndroidApisConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:AndroidJdkImageConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:AndroidTestAnnotationProcessorConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* @@ -2433,40 +2433,40 @@ ImportOrdering:AppLockedScreen.kt$import android.content.Context import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletPreview import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.legacy.utils.hasLockScreen ImportOrdering:ArchivesConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:BackBottomBar.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.ivy.resources.R import com.ivy.wallet.ui.theme.gradientCutBackgroundTop import com.ivy.legacy.utils.navigationBarInset import com.ivy.legacy.utils.toDensityDp - ImportOrdering:BackupLogic.kt$import android.content.Context import android.net.Uri import androidx.core.net.toUri import com.google.gson.* import com.google.gson.reflect.TypeToken import com.ivy.wallet.domain.data.IvyWalletCompleteData import com.ivy.wallet.domain.deprecated.logic.csv.model.ImportResult import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.BudgetDao import com.ivy.core.data.db.dao.CategoryDao import com.ivy.core.data.db.dao.LoanDao import com.ivy.core.data.db.dao.LoanRecordDao import com.ivy.core.data.db.dao.PlannedPaymentRuleDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.core.data.db.dao.TransactionDao import com.ivy.core.utils.toEpochMilli import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.readFile import com.ivy.legacy.utils.scopedIOThread import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.async import timber.log.Timber import java.io.File import java.lang.reflect.Type import java.time.Instant import java.time.LocalDateTime import java.time.ZoneOffset import java.util.* import javax.inject.Inject + ImportOrdering:BackupLogic.kt$import android.content.Context import android.net.Uri import androidx.core.net.toUri import com.google.gson.* import com.google.gson.reflect.TypeToken import com.ivy.wallet.domain.data.IvyWalletCompleteData import com.ivy.wallet.domain.deprecated.logic.csv.model.ImportResult import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.BudgetDao import com.ivy.core.db.dao.CategoryDao import com.ivy.core.db.dao.LoanDao import com.ivy.core.db.dao.LoanRecordDao import com.ivy.core.db.dao.PlannedPaymentRuleDao import com.ivy.core.db.dao.SettingsDao import com.ivy.core.db.dao.TransactionDao import com.ivy.core.utils.toEpochMilli import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.readFile import com.ivy.legacy.utils.scopedIOThread import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.async import timber.log.Timber import java.io.File import java.lang.reflect.Type import java.time.Instant import java.time.LocalDateTime import java.time.ZoneOffset import java.util.* import javax.inject.Inject ImportOrdering:BalanceViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.data.model.TimePeriod import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.wallet.CalcWalletBalanceAct import com.ivy.wallet.domain.deprecated.logic.PlannedPaymentsLogic import com.ivy.legacy.utils.dateNowUTC import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.readOnly import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import javax.inject.Inject - ImportOrdering:BaseCurrencyAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.db.dao.SettingsDao import javax.inject.Inject - ImportOrdering:Budget.kt$import androidx.compose.runtime.Immutable import com.ivy.core.utils.stringRes import com.ivy.resources.R import com.ivy.core.data.db.entity.BudgetEntity import java.util.UUID + ImportOrdering:BaseCurrencyAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.db.dao.SettingsDao import javax.inject.Inject + ImportOrdering:Budget.kt$import androidx.compose.runtime.Immutable import com.ivy.core.utils.stringRes import com.ivy.resources.R import com.ivy.core.db.entity.BudgetEntity import java.util.UUID ImportOrdering:BudgetBottomBar.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import com.ivy.resources.R import com.ivy.legacy.IvyWalletPreview import com.ivy.wallet.ui.theme.Blue import com.ivy.wallet.ui.theme.components.BackBottomBar import com.ivy.wallet.ui.theme.components.IvyButton - ImportOrdering:BudgetCreator.kt$import com.ivy.core.data.model.Budget import com.ivy.wallet.domain.deprecated.logic.model.CreateBudgetData import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.data.db.dao.BudgetDao import com.ivy.legacy.utils.ioThread import javax.inject.Inject + ImportOrdering:BudgetCreator.kt$import com.ivy.core.data.model.Budget import com.ivy.wallet.domain.deprecated.logic.model.CreateBudgetData import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.db.dao.BudgetDao import com.ivy.legacy.utils.ioThread import javax.inject.Inject ImportOrdering:BudgetModal.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.core.legacy.ui.theme.components.ListItem import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.data.model.Account import com.ivy.core.data.model.Budget import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateBudgetData import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.Purple1Dark import com.ivy.wallet.ui.theme.Red3Light import com.ivy.wallet.ui.theme.components.IvyNameTextField import com.ivy.wallet.ui.theme.modal.edit.AmountModal import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.legacy.utils.hideKeyboard import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.selectEndTextFieldValue import java.util.UUID ImportOrdering:BudgetScreen.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.budgets.model.DisplayBudget import com.ivy.core.data.model.Account import com.ivy.core.data.model.Budget import com.ivy.core.data.model.Category import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.legacy.ui.theme.components.BudgetBattery import com.ivy.legacy.utils.clickableNoIndication import com.ivy.legacy.utils.format import com.ivy.navigation.BudgetScreen import com.ivy.resources.R import com.ivy.wallet.domain.deprecated.logic.model.CreateBudgetData import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.ReorderButton import com.ivy.wallet.ui.theme.components.ReorderModalSingleType import com.ivy.wallet.ui.theme.modal.BudgetModal import com.ivy.wallet.ui.theme.modal.BudgetModalData import com.ivy.wallet.ui.theme.wallet.AmountCurrencyB1 - ImportOrdering:BudgetViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.budgets.model.DisplayBudget import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Budget import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.frp.sumOfSuspend import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.data.model.toCloseTimeRange import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.readOnly import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.budget.BudgetsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.exchange.ExchangeAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.transaction.HistoryTrnsAct import com.ivy.wallet.domain.deprecated.logic.BudgetCreator import com.ivy.wallet.domain.deprecated.logic.model.CreateBudgetData import com.ivy.wallet.domain.pure.exchange.ExchangeData import com.ivy.wallet.domain.pure.transaction.trnCurrency import com.ivy.core.data.db.dao.BudgetDao import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import javax.inject.Inject - ImportOrdering:BudgetsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then import com.ivy.core.data.model.Budget import com.ivy.core.data.db.dao.BudgetDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject + ImportOrdering:BudgetViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.budgets.model.DisplayBudget import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Budget import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.frp.sumOfSuspend import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.data.model.toCloseTimeRange import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.readOnly import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.budget.BudgetsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.exchange.ExchangeAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.transaction.HistoryTrnsAct import com.ivy.wallet.domain.deprecated.logic.BudgetCreator import com.ivy.wallet.domain.deprecated.logic.model.CreateBudgetData import com.ivy.wallet.domain.pure.exchange.ExchangeData import com.ivy.wallet.domain.pure.transaction.trnCurrency import com.ivy.core.db.dao.BudgetDao import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import javax.inject.Inject + ImportOrdering:BudgetsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then import com.ivy.core.data.model.Budget import com.ivy.core.db.dao.BudgetDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject ImportOrdering:BufferBattery.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.wallet.AmountCurrencyB2Row import com.ivy.legacy.utils.thenIf import kotlin.math.abs - ImportOrdering:CSVImporter.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.design.IVY_COLOR_PICKER_COLORS_FREE import com.ivy.design.l0_system.Green import com.ivy.design.l0_system.IvyDark import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.csv.model.CSVRow import com.ivy.wallet.domain.deprecated.logic.csv.model.ImportResult import com.ivy.wallet.domain.deprecated.logic.csv.model.RowMapping import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.CategoryDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.core.data.db.dao.TransactionDao import com.ivy.legacy.utils.convertLocalToUTC import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.toLowerCaseLocal import com.opencsv.CSVReaderBuilder import com.opencsv.validators.LineValidator import com.opencsv.validators.RowValidator import kotlinx.collections.immutable.persistentListOf import timber.log.Timber import java.io.StringReader import java.time.LocalDate import java.time.LocalDateTime import java.time.format.DateTimeFormatter import java.util.UUID import javax.inject.Inject import kotlin.math.absoluteValue - ImportOrdering:CSVImporterV2.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.design.IVY_COLOR_PICKER_COLORS_FREE import com.ivy.importdata.csv.ImportantFields import com.ivy.importdata.csv.OptionalFields import com.ivy.importdata.csv.TransferFields import com.ivy.legacy.utils.toLowerCaseLocal import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.domain.deprecated.logic.csv.model.CSVRow import com.ivy.wallet.domain.deprecated.logic.csv.model.ImportResult import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.CategoryDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.core.data.db.dao.TransactionDao import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.IvyDark import kotlinx.collections.immutable.toImmutableList import java.util.UUID import javax.inject.Inject import kotlin.math.absoluteValue import com.ivy.importdata.csv.CSVRow as CSVRowNew - ImportOrdering:CSVMapper.kt$import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Transaction import com.ivy.legacy.domain.deprecated.logic.csv.model.ImportType import com.ivy.wallet.domain.deprecated.logic.csv.model.JoinResult import com.ivy.wallet.domain.deprecated.logic.csv.model.RowMapping import com.ivy.legacy.utils.toLowerCaseLocal import javax.inject.Inject + ImportOrdering:CSVImporter.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.design.IVY_COLOR_PICKER_COLORS_FREE import com.ivy.design.l0_system.Green import com.ivy.design.l0_system.IvyDark import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.csv.model.CSVRow import com.ivy.wallet.domain.deprecated.logic.csv.model.ImportResult import com.ivy.wallet.domain.deprecated.logic.csv.model.RowMapping import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.CategoryDao import com.ivy.core.db.dao.SettingsDao import com.ivy.core.db.dao.TransactionDao import com.ivy.legacy.utils.convertLocalToUTC import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.toLowerCaseLocal import com.opencsv.CSVReaderBuilder import com.opencsv.validators.LineValidator import com.opencsv.validators.RowValidator import kotlinx.collections.immutable.persistentListOf import timber.log.Timber import java.io.StringReader import java.time.LocalDate import java.time.LocalDateTime import java.time.format.DateTimeFormatter import java.util.UUID import javax.inject.Inject import kotlin.math.absoluteValue + ImportOrdering:CSVImporterV2.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.design.IVY_COLOR_PICKER_COLORS_FREE import com.ivy.importdata.csv.ImportantFields import com.ivy.importdata.csv.OptionalFields import com.ivy.importdata.csv.TransferFields import com.ivy.legacy.utils.toLowerCaseLocal import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.domain.deprecated.logic.csv.model.CSVRow import com.ivy.wallet.domain.deprecated.logic.csv.model.ImportResult import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.CategoryDao import com.ivy.core.db.dao.SettingsDao import com.ivy.core.db.dao.TransactionDao import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.IvyDark import kotlinx.collections.immutable.toImmutableList import java.util.UUID import javax.inject.Inject import kotlin.math.absoluteValue import com.ivy.importdata.csv.CSVRow as CSVRowNew + ImportOrdering:CSVMapper.kt$import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Transaction import com.ivy.legacy.domain.deprecated.logic.csv.model.ImportType import com.ivy.wallet.domain.deprecated.logic.csv.model.JoinResult import com.ivy.wallet.domain.deprecated.logic.csv.model.RowMapping import com.ivy.legacy.utils.toLowerCaseLocal import javax.inject.Inject ImportOrdering:CSVScreen.kt$import android.net.Uri import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.ivyWalletCtx import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.colorAs import com.ivy.importdata.csvimport.flow.ImportProcessing import com.ivy.importdata.csvimport.flow.ImportResultUI import com.ivy.navigation.CSVScreen import com.ivy.onboarding.viewmodel.OnboardingViewModel import com.ivy.legacy.utils.thenIf import kotlin.math.abs ImportOrdering:CalcAccBalanceAct.kt$import arrow.core.nonEmptyListOf import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Account import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.wallet.domain.pure.transaction.AccountValueFunctions import com.ivy.wallet.domain.pure.transaction.foldTransactions import java.math.BigDecimal import javax.inject.Inject ImportOrdering:CalcAccIncomeExpenseAct.kt$import arrow.core.nonEmptyListOf import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Account import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.wallet.domain.pure.data.IncomeExpensePair import com.ivy.wallet.domain.pure.transaction.AccountValueFunctions import com.ivy.wallet.domain.pure.transaction.foldTransactions import java.math.BigDecimal import javax.inject.Inject ImportOrdering:CalcIncomeExpenseAct.kt$import arrow.core.nonEmptyListOf import arrow.core.toOption import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then import com.ivy.wallet.domain.action.account.AccTrnsAct import com.ivy.wallet.domain.action.exchange.ExchangeAct import com.ivy.core.data.model.Account import com.ivy.wallet.domain.pure.account.filterExcluded import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.wallet.domain.pure.data.IncomeExpensePair import com.ivy.wallet.domain.pure.exchange.ExchangeData import com.ivy.wallet.domain.pure.transaction.AccountValueFunctions import com.ivy.wallet.domain.pure.transaction.foldTransactions import com.ivy.wallet.domain.pure.util.orZero import timber.log.Timber import javax.inject.Inject ImportOrdering:CalcTrnsIncomeExpenseAct.kt$import arrow.core.nonEmptyListOf import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.action.exchange.ExchangeAct import com.ivy.wallet.domain.action.exchange.actInput import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.IncomeExpenseTransferPair import com.ivy.wallet.domain.pure.transaction.WalletValueFunctions import com.ivy.wallet.domain.pure.transaction.foldTransactionsSuspend import javax.inject.Inject - ImportOrdering:CatValueFunctions.kt$import arrow.core.Option import arrow.core.toOption import com.ivy.frp.SideEffect import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import java.math.BigDecimal import java.util.* - ImportOrdering:CategoriesAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then import com.ivy.core.data.model.Category import com.ivy.core.data.db.dao.CategoryDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject + ImportOrdering:CatValueFunctions.kt$import arrow.core.Option import arrow.core.toOption import com.ivy.frp.SideEffect import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import java.math.BigDecimal import java.util.* + ImportOrdering:CategoriesAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then import com.ivy.core.data.model.Category import com.ivy.core.db.dao.CategoryDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject ImportOrdering:CategoriesBottomBar.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import com.ivy.resources.R import com.ivy.legacy.IvyWalletPreview import com.ivy.wallet.ui.theme.Blue import com.ivy.wallet.ui.theme.components.BackBottomBar import com.ivy.wallet.ui.theme.components.IvyButton ImportOrdering:CategoriesScreen.kt$import androidx.annotation.DrawableRes import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.navigation.CategoriesScreen import com.ivy.navigation.ItemStatisticScreen import com.ivy.resources.R import com.ivy.wallet.domain.data.SortOrder import com.ivy.core.data.model.Category import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.GreenDark import com.ivy.wallet.ui.theme.GreenLight import com.ivy.wallet.ui.theme.IvyDark import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.BalanceRow import com.ivy.wallet.ui.theme.components.CircleButtonFilled import com.ivy.wallet.ui.theme.components.ItemIconSDefaultIcon import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.ReorderButton import com.ivy.wallet.ui.theme.components.ReorderModalSingleType import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.modal.IvyModal import com.ivy.wallet.ui.theme.modal.ModalSet import com.ivy.wallet.ui.theme.modal.ModalTitle import com.ivy.wallet.ui.theme.modal.edit.CategoryModal import com.ivy.wallet.ui.theme.modal.edit.CategoryModalData import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.wallet.ui.theme.wallet.AmountCurrencyB1 import kotlinx.collections.immutable.persistentListOf import java.util.UUID - ImportOrdering:CategoriesViewModel.kt$import androidx.lifecycle.viewModelScope import com.ivy.frp.action.thenMap import com.ivy.frp.test.TestIdlingResource import com.ivy.frp.thenInvokeAfter import com.ivy.frp.viewmodel.FRPViewModel import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.category.CategoryIncomeWithAccountFiltersAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.transaction.TrnsWithRangeAndAccFiltersAct import com.ivy.wallet.domain.data.SortOrder import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.CategoryCreator import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.dao.CategoryDao import com.ivy.wallet.ui.theme.modal.edit.CategoryModalData import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import javax.inject.Inject import kotlin.math.absoluteValue + ImportOrdering:CategoriesViewModel.kt$import androidx.lifecycle.viewModelScope import com.ivy.frp.action.thenMap import com.ivy.frp.test.TestIdlingResource import com.ivy.frp.thenInvokeAfter import com.ivy.frp.viewmodel.FRPViewModel import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.category.CategoryIncomeWithAccountFiltersAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.transaction.TrnsWithRangeAndAccFiltersAct import com.ivy.wallet.domain.data.SortOrder import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.CategoryCreator import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.dao.CategoryDao import com.ivy.wallet.ui.theme.modal.edit.CategoryModalData import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import javax.inject.Inject import kotlin.math.absoluteValue ImportOrdering:Category.kt$import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.data.model.Category import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.components.IvyBorderButton import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.getCustomIconIdS import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.toComposeColor - ImportOrdering:Category.kt$import androidx.compose.runtime.Immutable import androidx.compose.ui.graphics.toArgb import com.ivy.design.l0_system.Ivy import com.ivy.core.data.db.entity.CategoryEntity import java.util.UUID - ImportOrdering:CategoryByIdAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.model.Category import com.ivy.core.data.db.dao.CategoryDao import java.util.* import javax.inject.Inject - ImportOrdering:CategoryCreator.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.data.db.dao.CategoryDao import com.ivy.legacy.utils.ioThread import javax.inject.Inject + ImportOrdering:Category.kt$import androidx.compose.runtime.Immutable import androidx.compose.ui.graphics.toArgb import com.ivy.design.l0_system.Ivy import com.ivy.core.db.entity.CategoryEntity import java.util.UUID + ImportOrdering:CategoryByIdAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.model.Category import com.ivy.core.db.dao.CategoryDao import java.util.* import javax.inject.Inject + ImportOrdering:CategoryCreator.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.db.dao.CategoryDao import com.ivy.legacy.utils.ioThread import javax.inject.Inject ImportOrdering:CategoryData.kt$import com.ivy.wallet.domain.data.Reorderable import com.ivy.core.data.model.Category ImportOrdering:CategoryEntity.kt$import androidx.annotation.Keep import androidx.compose.ui.graphics.toArgb import androidx.room.Entity import androidx.room.PrimaryKey import com.google.gson.annotations.SerializedName import com.ivy.design.l0_system.Ivy import com.ivy.core.data.model.Category import java.util.* ImportOrdering:CategoryIncomeWithAccountFiltersAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.action.transaction.CalcTrnsIncomeExpenseAct import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.IncomeExpenseTransferPair import javax.inject.Inject ImportOrdering:CategoryModal.kt$import androidx.annotation.DrawableRes import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.core.legacy.ui.IvyColorPicker import com.ivy.legacy.IvyWalletPreview import com.ivy.resources.R import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.components.ItemIconMDefaultIcon import com.ivy.wallet.ui.theme.components.IvyNameTextField import com.ivy.wallet.ui.theme.dynamicContrast import com.ivy.wallet.ui.theme.modal.ChooseIconModal import com.ivy.wallet.ui.theme.modal.IvyModal import com.ivy.wallet.ui.theme.modal.ModalAddSave import com.ivy.wallet.ui.theme.modal.ModalTitle import com.ivy.legacy.utils.hideKeyboard import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.selectEndTextFieldValue import java.util.UUID - ImportOrdering:CategoryTrnsBetweenAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.core.data.db.dao.TransactionDao import java.util.* import javax.inject.Inject - ImportOrdering:ChangeTransactionTypeModal.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.data.db.entity.TransactionType import com.ivy.legacy.IvyWalletPreview import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.modal.IvyModal import com.ivy.wallet.ui.theme.modal.ModalSet import com.ivy.wallet.ui.theme.modal.ModalTitle import java.util.UUID + ImportOrdering:CategoryTrnsBetweenAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.core.db.dao.TransactionDao import java.util.* import javax.inject.Inject + ImportOrdering:ChangeTransactionTypeModal.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.db.entity.TransactionType import com.ivy.legacy.IvyWalletPreview import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.modal.IvyModal import com.ivy.wallet.ui.theme.modal.ModalSet import com.ivy.wallet.ui.theme.modal.ModalTitle import java.util.UUID ImportOrdering:ChartPeriod.kt$import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.legacy.utils.dateNowUTC import com.ivy.legacy.utils.endOfDayNowUTC import com.ivy.legacy.utils.endOfMonth import com.ivy.legacy.utils.format import java.time.LocalDateTime ImportOrdering:ChooseCategoryModal.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.data.model.Category import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.components.ItemIconSDefaultIcon import com.ivy.wallet.ui.theme.components.IvyBorderButton import com.ivy.wallet.ui.theme.components.IvyCircleButton import com.ivy.wallet.ui.theme.components.WrapContentRow import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.modal.IvyModal import com.ivy.wallet.ui.theme.modal.ModalSkip import com.ivy.wallet.ui.theme.modal.ModalTitle import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.legacy.utils.drawColoredShadow import com.ivy.legacy.utils.hideKeyboard import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.thenIf import java.util.UUID ImportOrdering:ChooseIconModal.kt$import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.shape.CircleShape import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l1_buildingBlocks.DividerW import com.ivy.design.l1_buildingBlocks.IvyText import com.ivy.design.l1_buildingBlocks.SpacerHor import com.ivy.design.l1_buildingBlocks.SpacerVer import com.ivy.resources.R import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.components.ItemIconS import com.ivy.wallet.ui.theme.dynamicContrast import com.ivy.legacy.utils.hideKeyboard import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.thenIf import java.util.UUID @@ -2481,7 +2481,7 @@ ImportOrdering:CurrencyPicker.kt$import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.tween import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.modal.DURATION_MODAL_ANIM import com.ivy.legacy.utils.addKeyboardListener import com.ivy.legacy.utils.densityScope import com.ivy.legacy.utils.hideKeyboard import com.ivy.legacy.utils.keyboardOnlyWindowInsets import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.toLowerCaseLocal import java.util.Locale ImportOrdering:CustomExchangeRateCard.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.Orange import com.ivy.legacy.utils.format ImportOrdering:CustomerJourney.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.testTag import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.legacy.ivyWalletCtx import com.ivy.legacy.rootScreen import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.resources.R import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.dynamicContrast import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.legacy.utils.drawColoredShadow - ImportOrdering:CustomerJourneyCardsProvider.kt$import com.ivy.core.Constants import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.utils.stringRes import com.ivy.design.l0_system.Blue import com.ivy.design.l0_system.Blue3 import com.ivy.design.l0_system.Gradient import com.ivy.design.l0_system.Green import com.ivy.design.l0_system.GreenLight import com.ivy.design.l0_system.Ivy import com.ivy.design.l0_system.Orange import com.ivy.design.l0_system.Red import com.ivy.design.l0_system.Red3 import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.data.model.MainTab import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.PieChartStatisticScreen import com.ivy.resources.R import com.ivy.core.data.db.dao.PlannedPaymentRuleDao import com.ivy.core.data.db.dao.TransactionDao import com.ivy.widget.transaction.AddTransactionWidgetCompact import javax.inject.Inject + ImportOrdering:CustomerJourneyCardsProvider.kt$import com.ivy.core.Constants import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.entity.TransactionType import com.ivy.core.utils.stringRes import com.ivy.design.l0_system.Blue import com.ivy.design.l0_system.Blue3 import com.ivy.design.l0_system.Gradient import com.ivy.design.l0_system.Green import com.ivy.design.l0_system.GreenLight import com.ivy.design.l0_system.Ivy import com.ivy.design.l0_system.Orange import com.ivy.design.l0_system.Red import com.ivy.design.l0_system.Red3 import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.data.model.MainTab import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.PieChartStatisticScreen import com.ivy.resources.R import com.ivy.core.db.dao.PlannedPaymentRuleDao import com.ivy.core.db.dao.TransactionDao import com.ivy.widget.transaction.AddTransactionWidgetCompact import javax.inject.Inject ImportOrdering:DebugAnnotationProcessorConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:DebugApiConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:DebugApiDependenciesMetadataConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* @@ -2501,25 +2501,25 @@ ImportOrdering:DisplayLoan.kt$import com.ivy.wallet.domain.data.Reorderable import com.ivy.core.data.model.Loan import com.ivy.legacy.utils.getDefaultFIATCurrency ImportOrdering:DonateModal.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.GradientOrange import com.ivy.design.l0_system.UI import com.ivy.design.l1_buildingBlocks.SpacerVer import com.ivy.resources.R import com.ivy.legacy.IvyWalletPreview import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.modal.IvyModal import com.ivy.wallet.ui.theme.modal.ModalTitle ImportOrdering:DueDate.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.legacy.utils.formatDateOnly import com.ivy.legacy.utils.timeNowUTC import java.time.LocalDateTime - ImportOrdering:DueTrnsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.core.data.db.dao.TransactionDao import javax.inject.Inject + ImportOrdering:DueTrnsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.core.db.dao.TransactionDao import javax.inject.Inject ImportOrdering:DueTrnsInfoAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.lambda import com.ivy.frp.then import com.ivy.wallet.domain.action.account.AccountByIdAct import com.ivy.wallet.domain.action.exchange.ExchangeAct import com.ivy.wallet.domain.action.exchange.actInput import com.ivy.wallet.domain.action.transaction.DueTrnsAct import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.wallet.domain.pure.data.IncomeExpensePair import com.ivy.wallet.domain.pure.exchange.ExchangeTrnArgument import com.ivy.wallet.domain.pure.exchange.exchangeInBaseCurrency import com.ivy.wallet.domain.pure.transaction.expenses import com.ivy.wallet.domain.pure.transaction.incomes import com.ivy.wallet.domain.pure.transaction.sumTrns import com.ivy.legacy.utils.dateNowUTC import java.time.LocalDate import javax.inject.Inject - ImportOrdering:EditPlannedScreen.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.navigation.EditPlannedScreen import com.ivy.resources.R import com.ivy.core.data.model.IntervalType import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.ui.edit.core.Category import com.ivy.wallet.ui.edit.core.Description import com.ivy.wallet.ui.edit.core.EditBottomSheet import com.ivy.wallet.ui.edit.core.Title import com.ivy.wallet.ui.edit.core.Toolbar import com.ivy.wallet.ui.theme.components.ChangeTransactionTypeModal import com.ivy.wallet.ui.theme.modal.DeleteModal import com.ivy.wallet.ui.theme.modal.ModalSet import com.ivy.wallet.ui.theme.modal.RecurringRuleModal import com.ivy.wallet.ui.theme.modal.RecurringRuleModalData import com.ivy.wallet.ui.theme.modal.edit.AccountModal import com.ivy.wallet.ui.theme.modal.edit.AccountModalData import com.ivy.wallet.ui.theme.modal.edit.CategoryModal import com.ivy.wallet.ui.theme.modal.edit.CategoryModalData import com.ivy.wallet.ui.theme.modal.edit.ChooseCategoryModal import com.ivy.wallet.ui.theme.modal.edit.DescriptionModal import com.ivy.legacy.utils.onScreenStart import java.time.LocalDateTime - ImportOrdering:EditPlannedViewModel.kt$import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.frp.test.TestIdlingResource import com.ivy.navigation.EditPlannedScreen import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.core.data.model.IntervalType import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.CategoryCreator import com.ivy.wallet.domain.deprecated.logic.PlannedPaymentsGenerator import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.CategoryDao import com.ivy.core.data.db.dao.PlannedPaymentRuleDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.core.data.db.dao.TransactionDao import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.ioThread import com.ivy.navigation.Navigation import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import java.time.LocalDateTime import javax.inject.Inject - ImportOrdering:EditTransactionScreen.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.layout.positionInParent import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.data.EditTransactionDisplayLoan import com.ivy.legacy.ivyWalletCtx import com.ivy.legacy.rootView import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.design.utils.hideKeyboard import com.ivy.navigation.navigation import com.ivy.legacy.ui.component.edit.TransactionDateTime import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.EditTransactionScreen import com.ivy.resources.R import com.ivy.wallet.domain.data.CustomExchangeRateState import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.ui.edit.core.Category import com.ivy.wallet.ui.edit.core.Description import com.ivy.wallet.ui.edit.core.DueDate import com.ivy.wallet.ui.edit.core.EditBottomSheet import com.ivy.wallet.ui.edit.core.Title import com.ivy.wallet.ui.edit.core.Toolbar import com.ivy.wallet.ui.theme.components.AddPrimaryAttributeButton import com.ivy.wallet.ui.theme.components.ChangeTransactionTypeModal import com.ivy.wallet.ui.theme.components.CustomExchangeRateCard import com.ivy.wallet.ui.theme.modal.DeleteModal import com.ivy.wallet.ui.theme.modal.ModalAdd import com.ivy.wallet.ui.theme.modal.ModalCheck import com.ivy.wallet.ui.theme.modal.ModalSave import com.ivy.wallet.ui.theme.modal.ProgressModal import com.ivy.wallet.ui.theme.modal.edit.AccountModal import com.ivy.wallet.ui.theme.modal.edit.AccountModalData import com.ivy.wallet.ui.theme.modal.edit.AmountModal import com.ivy.wallet.ui.theme.modal.edit.CategoryModal import com.ivy.wallet.ui.theme.modal.edit.CategoryModalData import com.ivy.wallet.ui.theme.modal.edit.ChooseCategoryModal import com.ivy.wallet.ui.theme.modal.edit.DescriptionModal import com.ivy.legacy.utils.convertUTCtoLocal import com.ivy.legacy.utils.getTrueDate import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.timeNowLocal import java.time.LocalDateTime import java.util.UUID import kotlin.math.roundToInt - ImportOrdering:EditTransactionViewModel.kt$import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.core.utils.refreshWidget import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.data.EditTransactionDisplayLoan import com.ivy.legacy.utils.computationThread import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.readOnly import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.uiThread import com.ivy.navigation.EditTransactionScreen import com.ivy.navigation.MainScreen import com.ivy.navigation.Navigation import com.ivy.wallet.domain.action.account.AccountByIdAct import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.category.CategoryByIdAct import com.ivy.wallet.domain.action.transaction.TrnByIdAct import com.ivy.wallet.domain.data.CustomExchangeRateState import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.CategoryCreator import com.ivy.wallet.domain.deprecated.logic.PlannedPaymentsLogic import com.ivy.wallet.domain.deprecated.logic.SmartTitleSuggestionsLogic import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.wallet.domain.deprecated.logic.loantrasactions.LoanTransactionsLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.core.data.db.dao.LoanDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.core.data.db.dao.TransactionDao import com.ivy.widget.balance.WalletBalanceWidgetReceiver import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import java.math.BigDecimal import java.time.LocalDateTime import java.util.UUID import javax.inject.Inject + ImportOrdering:EditPlannedScreen.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.navigation.EditPlannedScreen import com.ivy.resources.R import com.ivy.core.data.model.IntervalType import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.ui.edit.core.Category import com.ivy.wallet.ui.edit.core.Description import com.ivy.wallet.ui.edit.core.EditBottomSheet import com.ivy.wallet.ui.edit.core.Title import com.ivy.wallet.ui.edit.core.Toolbar import com.ivy.wallet.ui.theme.components.ChangeTransactionTypeModal import com.ivy.wallet.ui.theme.modal.DeleteModal import com.ivy.wallet.ui.theme.modal.ModalSet import com.ivy.wallet.ui.theme.modal.RecurringRuleModal import com.ivy.wallet.ui.theme.modal.RecurringRuleModalData import com.ivy.wallet.ui.theme.modal.edit.AccountModal import com.ivy.wallet.ui.theme.modal.edit.AccountModalData import com.ivy.wallet.ui.theme.modal.edit.CategoryModal import com.ivy.wallet.ui.theme.modal.edit.CategoryModalData import com.ivy.wallet.ui.theme.modal.edit.ChooseCategoryModal import com.ivy.wallet.ui.theme.modal.edit.DescriptionModal import com.ivy.legacy.utils.onScreenStart import java.time.LocalDateTime + ImportOrdering:EditPlannedViewModel.kt$import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.frp.test.TestIdlingResource import com.ivy.navigation.EditPlannedScreen import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.core.data.model.IntervalType import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.CategoryCreator import com.ivy.wallet.domain.deprecated.logic.PlannedPaymentsGenerator import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.CategoryDao import com.ivy.core.db.dao.PlannedPaymentRuleDao import com.ivy.core.db.dao.SettingsDao import com.ivy.core.db.dao.TransactionDao import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.ioThread import com.ivy.navigation.Navigation import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import java.time.LocalDateTime import javax.inject.Inject + ImportOrdering:EditTransactionScreen.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.layout.positionInParent import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.data.EditTransactionDisplayLoan import com.ivy.legacy.ivyWalletCtx import com.ivy.legacy.rootView import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.design.utils.hideKeyboard import com.ivy.navigation.navigation import com.ivy.legacy.ui.component.edit.TransactionDateTime import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.EditTransactionScreen import com.ivy.resources.R import com.ivy.wallet.domain.data.CustomExchangeRateState import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.ui.edit.core.Category import com.ivy.wallet.ui.edit.core.Description import com.ivy.wallet.ui.edit.core.DueDate import com.ivy.wallet.ui.edit.core.EditBottomSheet import com.ivy.wallet.ui.edit.core.Title import com.ivy.wallet.ui.edit.core.Toolbar import com.ivy.wallet.ui.theme.components.AddPrimaryAttributeButton import com.ivy.wallet.ui.theme.components.ChangeTransactionTypeModal import com.ivy.wallet.ui.theme.components.CustomExchangeRateCard import com.ivy.wallet.ui.theme.modal.DeleteModal import com.ivy.wallet.ui.theme.modal.ModalAdd import com.ivy.wallet.ui.theme.modal.ModalCheck import com.ivy.wallet.ui.theme.modal.ModalSave import com.ivy.wallet.ui.theme.modal.ProgressModal import com.ivy.wallet.ui.theme.modal.edit.AccountModal import com.ivy.wallet.ui.theme.modal.edit.AccountModalData import com.ivy.wallet.ui.theme.modal.edit.AmountModal import com.ivy.wallet.ui.theme.modal.edit.CategoryModal import com.ivy.wallet.ui.theme.modal.edit.CategoryModalData import com.ivy.wallet.ui.theme.modal.edit.ChooseCategoryModal import com.ivy.wallet.ui.theme.modal.edit.DescriptionModal import com.ivy.legacy.utils.convertUTCtoLocal import com.ivy.legacy.utils.getTrueDate import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.timeNowLocal import java.time.LocalDateTime import java.util.UUID import kotlin.math.roundToInt + ImportOrdering:EditTransactionViewModel.kt$import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.core.utils.refreshWidget import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.data.EditTransactionDisplayLoan import com.ivy.legacy.utils.computationThread import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.readOnly import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.uiThread import com.ivy.navigation.EditTransactionScreen import com.ivy.navigation.MainScreen import com.ivy.navigation.Navigation import com.ivy.wallet.domain.action.account.AccountByIdAct import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.category.CategoryByIdAct import com.ivy.wallet.domain.action.transaction.TrnByIdAct import com.ivy.wallet.domain.data.CustomExchangeRateState import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.CategoryCreator import com.ivy.wallet.domain.deprecated.logic.PlannedPaymentsLogic import com.ivy.wallet.domain.deprecated.logic.SmartTitleSuggestionsLogic import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.wallet.domain.deprecated.logic.loantrasactions.LoanTransactionsLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.core.db.dao.LoanDao import com.ivy.core.db.dao.SettingsDao import com.ivy.core.db.dao.TransactionDao import com.ivy.widget.balance.WalletBalanceWidgetReceiver import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import java.math.BigDecimal import java.time.LocalDateTime import java.util.UUID import javax.inject.Inject ImportOrdering:Exchange.kt$import arrow.core.None import arrow.core.Option import arrow.core.Some import arrow.core.computations.option import arrow.core.toOption import com.ivy.frp.Pure import com.ivy.frp.SideEffect import com.ivy.core.data.model.ExchangeRate import com.ivy.legacy.utils.isNotNullOrBlank import java.math.BigDecimal - ImportOrdering:ExchangeAct.kt$import arrow.core.Option import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.pure.exchange.ExchangeData import com.ivy.wallet.domain.pure.exchange.exchange import com.ivy.core.data.db.dao.ExchangeRateDao import java.math.BigDecimal import javax.inject.Inject - ImportOrdering:ExchangeRatesLogic.kt$import com.ivy.core.data.model.Account import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.core.data.model.Transaction import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.ExchangeRateDao import com.ivy.core.data.db.dao.SettingsDao import java.util.UUID import javax.inject.Inject + ImportOrdering:ExchangeAct.kt$import arrow.core.Option import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.pure.exchange.ExchangeData import com.ivy.wallet.domain.pure.exchange.exchange import com.ivy.core.db.dao.ExchangeRateDao import java.math.BigDecimal import javax.inject.Inject + ImportOrdering:ExchangeRatesLogic.kt$import com.ivy.core.data.model.Account import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.core.data.model.Transaction import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.ExchangeRateDao import com.ivy.core.db.dao.SettingsDao import java.util.UUID import javax.inject.Inject ImportOrdering:ExchangeRatesScreen.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.items import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.White import com.ivy.design.l0_system.style import com.ivy.design.l1_buildingBlocks.ColumnRoot import com.ivy.design.l1_buildingBlocks.DividerW import com.ivy.design.l1_buildingBlocks.SpacerHor import com.ivy.design.l1_buildingBlocks.SpacerVer import com.ivy.legacy.ui.SearchInput import com.ivy.exchangerates.component.RateItem import com.ivy.exchangerates.data.RateUi import com.ivy.exchangerates.modal.AddRateModal import com.ivy.wallet.ui.theme.modal.edit.AmountModal import com.ivy.legacy.utils.selectEndTextFieldValue import kotlinx.collections.immutable.persistentListOf import java.util.UUID - ImportOrdering:ExchangeRatesViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.wallet.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.core.data.db.dao.ExchangeRateDao import com.ivy.core.data.db.entity.ExchangeRateEntity import com.ivy.exchangerates.data.RateUi import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import javax.inject.Inject + ImportOrdering:ExchangeRatesViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.wallet.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.core.db.dao.ExchangeRateDao import com.ivy.core.db.entity.ExchangeRateEntity import com.ivy.exchangerates.data.RateUi import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import javax.inject.Inject ImportOrdering:ExchangeTrns.kt$import arrow.core.Option import arrow.core.toOption import com.ivy.frp.Pure import com.ivy.frp.SideEffect import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.account.accountCurrency import com.ivy.wallet.domain.pure.transaction.trnCurrency import java.math.BigDecimal import java.util.* - ImportOrdering:ExportCSVLogic.kt$import android.content.Context import android.net.Uri import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.CategoryDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.core.data.db.dao.TransactionDao import com.ivy.legacy.utils.format import com.ivy.legacy.utils.formatLocal import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.localDecimalSeparator import com.ivy.legacy.utils.writeToFile import org.apache.commons.text.StringEscapeUtils import java.util.UUID import javax.inject.Inject - ImportOrdering:FilterOverlay.kt$import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.layout.layout import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ivyWalletCtx import com.ivy.core.legacy.ui.theme.components.ListItem import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.GreenDark import com.ivy.wallet.ui.theme.GreenLight import com.ivy.wallet.ui.theme.IvyDark import com.ivy.wallet.ui.theme.Purple1Dark import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.Red3Light import com.ivy.wallet.ui.theme.components.CloseButton import com.ivy.wallet.ui.theme.components.GradientCutBottom import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.IvyCheckboxWithText import com.ivy.wallet.ui.theme.components.IvyDividerLine import com.ivy.wallet.ui.theme.components.IvyOutlinedButton import com.ivy.wallet.ui.theme.components.IvyOutlinedButtonFillMaxWidth import com.ivy.wallet.ui.theme.components.WrapContentRow import com.ivy.wallet.ui.theme.modal.AddKeywordModal import com.ivy.wallet.ui.theme.modal.AddModalBackHandling import com.ivy.wallet.ui.theme.modal.ChoosePeriodModal import com.ivy.wallet.ui.theme.modal.ChoosePeriodModalData import com.ivy.wallet.ui.theme.modal.edit.AmountModal import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.wallet.ui.theme.wallet.AmountCurrencyB1Row import com.ivy.legacy.utils.capitalizeLocal import com.ivy.legacy.utils.springBounce import java.util.UUID import kotlin.math.roundToInt + ImportOrdering:ExportCSVLogic.kt$import android.content.Context import android.net.Uri import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.CategoryDao import com.ivy.core.db.dao.SettingsDao import com.ivy.core.db.dao.TransactionDao import com.ivy.legacy.utils.format import com.ivy.legacy.utils.formatLocal import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.localDecimalSeparator import com.ivy.legacy.utils.writeToFile import org.apache.commons.text.StringEscapeUtils import java.util.UUID import javax.inject.Inject + ImportOrdering:FilterOverlay.kt$import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.layout.layout import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ivyWalletCtx import com.ivy.core.legacy.ui.theme.components.ListItem import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.GreenDark import com.ivy.wallet.ui.theme.GreenLight import com.ivy.wallet.ui.theme.IvyDark import com.ivy.wallet.ui.theme.Purple1Dark import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.Red3Light import com.ivy.wallet.ui.theme.components.CloseButton import com.ivy.wallet.ui.theme.components.GradientCutBottom import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.IvyCheckboxWithText import com.ivy.wallet.ui.theme.components.IvyDividerLine import com.ivy.wallet.ui.theme.components.IvyOutlinedButton import com.ivy.wallet.ui.theme.components.IvyOutlinedButtonFillMaxWidth import com.ivy.wallet.ui.theme.components.WrapContentRow import com.ivy.wallet.ui.theme.modal.AddKeywordModal import com.ivy.wallet.ui.theme.modal.AddModalBackHandling import com.ivy.wallet.ui.theme.modal.ChoosePeriodModal import com.ivy.wallet.ui.theme.modal.ChoosePeriodModalData import com.ivy.wallet.ui.theme.modal.edit.AmountModal import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.wallet.ui.theme.wallet.AmountCurrencyB1Row import com.ivy.legacy.utils.capitalizeLocal import com.ivy.legacy.utils.springBounce import java.util.UUID import kotlin.math.roundToInt ImportOrdering:FoldTransactions.kt$import arrow.core.NonEmptyList import arrow.core.nonEmptyListOf import com.ivy.frp.Pure import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.util.mapIndexedNel import com.ivy.wallet.domain.pure.util.mapIndexedNelSuspend import com.ivy.wallet.domain.pure.util.nonEmptyListOfZeros import java.math.BigDecimal ImportOrdering:GradientCut.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import com.ivy.design.l0_system.UI import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Transparent import com.ivy.legacy.utils.thenIf - ImportOrdering:HasTrnsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.db.dao.TransactionDao import javax.inject.Inject + ImportOrdering:HasTrnsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.db.dao.TransactionDao import javax.inject.Inject ImportOrdering:HistoryDateDivider.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Green import com.ivy.legacy.utils.dateNowUTC import com.ivy.legacy.utils.format import com.ivy.legacy.utils.formatLocal import java.time.LocalDate - ImportOrdering:HistoryTrnsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.core.data.db.dao.TransactionDao import javax.inject.Inject + ImportOrdering:HistoryTrnsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.core.db.dao.TransactionDao import javax.inject.Inject ImportOrdering:HistoryWithDateDivsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.TransactionHistoryItem import com.ivy.wallet.domain.pure.data.ClosedTimeRange import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject ImportOrdering:HomeEvent.kt$import com.ivy.legacy.data.model.TimePeriod import com.ivy.home.customerjourney.CustomerJourneyCardModel import com.ivy.core.data.model.Transaction ImportOrdering:HomeMoreMenu.kt$import androidx.annotation.DrawableRes import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.Canvas import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.rotate import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.layout import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import com.ivy.core.Constants import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ivyWalletCtx import com.ivy.legacy.rootScreen import com.ivy.design.l0_system.SunsetNight import com.ivy.design.l0_system.Theme import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.navigation.BudgetScreen import com.ivy.navigation.CategoriesScreen import com.ivy.navigation.DonateScreen import com.ivy.navigation.LoansScreen import com.ivy.navigation.PlannedPaymentsScreen import com.ivy.navigation.ReportScreen import com.ivy.navigation.SearchScreen import com.ivy.navigation.SettingsScreen import com.ivy.resources.R import com.ivy.wallet.ui.theme.Blue import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.components.BufferBattery import com.ivy.wallet.ui.theme.components.CircleButtonFilled import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.modal.AddModalBackHandling import com.ivy.wallet.ui.theme.wallet.AmountCurrencyB1 import com.ivy.legacy.utils.clickableNoIndication import com.ivy.legacy.utils.colorLerp import com.ivy.legacy.utils.lerp import com.ivy.legacy.utils.navigationBarInset import com.ivy.legacy.utils.openUrl import com.ivy.legacy.utils.springBounce import com.ivy.legacy.utils.statusBarInset import com.ivy.legacy.utils.thenIf import com.ivy.legacy.utils.toDensityPx import com.ivy.legacy.utils.verticalSwipeListener import java.util.UUID import kotlin.math.roundToInt @@ -2570,52 +2570,52 @@ ImportOrdering:KspTestFixturesDebugConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:KspTestFixturesReleaseConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:KspTestReleaseConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* - ImportOrdering:LTLoanMapper.kt$import com.ivy.core.data.model.LoanType import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Loan import com.ivy.core.data.model.LoanRecord import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanData import com.ivy.legacy.utils.computationThread import com.ivy.legacy.utils.scopedIOThread import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import java.util.* import javax.inject.Inject + ImportOrdering:LTLoanMapper.kt$import com.ivy.core.data.model.LoanType import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Loan import com.ivy.core.data.model.LoanRecord import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanData import com.ivy.legacy.utils.computationThread import com.ivy.legacy.utils.scopedIOThread import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import java.util.* import javax.inject.Inject ImportOrdering:LTLoanRecordMapper.kt$import com.ivy.core.data.model.Loan import com.ivy.core.data.model.LoanRecord import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData import com.ivy.legacy.utils.computationThread import java.util.* import javax.inject.Inject ImportOrdering:LintChecksConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:LintPublishConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:ListItem.kt$import androidx.annotation.DrawableRes import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.wallet.ui.theme.components.ItemIconSDefaultIcon import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.legacy.utils.thenIf - ImportOrdering:Loan.kt$import androidx.compose.runtime.Immutable import com.ivy.core.utils.stringRes import com.ivy.resources.R import com.ivy.core.data.db.entity.LoanEntity import java.util.UUID - ImportOrdering:LoanByIdAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.model.Loan import com.ivy.core.data.db.dao.LoanDao import java.util.* import javax.inject.Inject - ImportOrdering:LoanCreator.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.core.data.model.Loan import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanData import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.data.db.dao.LoanDao import com.ivy.legacy.utils.ioThread import java.util.UUID import javax.inject.Inject - ImportOrdering:LoanDetailsScreen.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.Divider import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Loan import com.ivy.core.data.model.LoanRecord import com.ivy.core.data.model.LoanType import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ui.component.ItemStatisticToolbar import com.ivy.legacy.ui.component.transaction.TypeAmountCurrency import com.ivy.legacy.utils.clickableNoIndication import com.ivy.legacy.utils.drawColoredShadow import com.ivy.legacy.utils.format import com.ivy.legacy.utils.formatNicelyWithTime import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.setStatusBarDarkTextCompat import com.ivy.legacy.utils.timeNowUTC import com.ivy.loans.loan.data.DisplayLoanRecord import com.ivy.navigation.ItemStatisticScreen import com.ivy.navigation.LoanDetailsScreen import com.ivy.resources.R import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData import com.ivy.wallet.domain.deprecated.logic.model.EditLoanRecordData import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.MediumBlack import com.ivy.wallet.ui.theme.MediumWhite import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.components.BalanceRow import com.ivy.wallet.ui.theme.components.ItemIconMDefaultIcon import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.ProgressBar import com.ivy.wallet.ui.theme.components.getCustomIconIdS import com.ivy.wallet.ui.theme.dynamicContrast import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.isDarkColor import com.ivy.wallet.ui.theme.modal.DeleteModal import com.ivy.wallet.ui.theme.modal.LoanModal import com.ivy.wallet.ui.theme.modal.LoanModalData import com.ivy.wallet.ui.theme.modal.LoanRecordModal import com.ivy.wallet.ui.theme.modal.LoanRecordModalData import com.ivy.wallet.ui.theme.modal.ProgressModal import com.ivy.wallet.ui.theme.toComposeColor import java.util.UUID - ImportOrdering:LoanDetailsViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.core.data.model.Account import com.ivy.core.data.model.Loan import com.ivy.core.data.model.LoanRecord import com.ivy.core.data.model.Transaction import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.utils.computationThread import com.ivy.legacy.utils.ioThread import com.ivy.loans.loan.data.DisplayLoanRecord import com.ivy.navigation.LoanDetailsScreen import com.ivy.navigation.Navigation import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.loan.LoanByIdAct import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.LoanCreator import com.ivy.wallet.domain.deprecated.logic.LoanRecordCreator import com.ivy.wallet.domain.deprecated.logic.loantrasactions.LoanTransactionsLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData import com.ivy.wallet.domain.deprecated.logic.model.EditLoanRecordData import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.LoanDao import com.ivy.core.data.db.dao.LoanRecordDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.core.data.db.dao.TransactionDao import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import java.util.UUID import javax.inject.Inject + ImportOrdering:Loan.kt$import androidx.compose.runtime.Immutable import com.ivy.core.utils.stringRes import com.ivy.resources.R import com.ivy.core.db.entity.LoanEntity import java.util.UUID + ImportOrdering:LoanByIdAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.model.Loan import com.ivy.core.db.dao.LoanDao import java.util.* import javax.inject.Inject + ImportOrdering:LoanCreator.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.core.data.model.Loan import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanData import com.ivy.wallet.domain.pure.util.nextOrderNum import com.ivy.core.db.dao.LoanDao import com.ivy.legacy.utils.ioThread import java.util.UUID import javax.inject.Inject + ImportOrdering:LoanDetailsScreen.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.Divider import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Loan import com.ivy.core.data.model.LoanRecord import com.ivy.core.data.model.LoanType import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ui.component.ItemStatisticToolbar import com.ivy.legacy.ui.component.transaction.TypeAmountCurrency import com.ivy.legacy.utils.clickableNoIndication import com.ivy.legacy.utils.drawColoredShadow import com.ivy.legacy.utils.format import com.ivy.legacy.utils.formatNicelyWithTime import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.setStatusBarDarkTextCompat import com.ivy.legacy.utils.timeNowUTC import com.ivy.loans.loan.data.DisplayLoanRecord import com.ivy.navigation.ItemStatisticScreen import com.ivy.navigation.LoanDetailsScreen import com.ivy.resources.R import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData import com.ivy.wallet.domain.deprecated.logic.model.EditLoanRecordData import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.MediumBlack import com.ivy.wallet.ui.theme.MediumWhite import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.components.BalanceRow import com.ivy.wallet.ui.theme.components.ItemIconMDefaultIcon import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.ProgressBar import com.ivy.wallet.ui.theme.components.getCustomIconIdS import com.ivy.wallet.ui.theme.dynamicContrast import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.isDarkColor import com.ivy.wallet.ui.theme.modal.DeleteModal import com.ivy.wallet.ui.theme.modal.LoanModal import com.ivy.wallet.ui.theme.modal.LoanModalData import com.ivy.wallet.ui.theme.modal.LoanRecordModal import com.ivy.wallet.ui.theme.modal.LoanRecordModalData import com.ivy.wallet.ui.theme.modal.ProgressModal import com.ivy.wallet.ui.theme.toComposeColor import java.util.UUID + ImportOrdering:LoanDetailsViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.core.data.model.Account import com.ivy.core.data.model.Loan import com.ivy.core.data.model.LoanRecord import com.ivy.core.data.model.Transaction import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.utils.computationThread import com.ivy.legacy.utils.ioThread import com.ivy.loans.loan.data.DisplayLoanRecord import com.ivy.navigation.LoanDetailsScreen import com.ivy.navigation.Navigation import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.loan.LoanByIdAct import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.LoanCreator import com.ivy.wallet.domain.deprecated.logic.LoanRecordCreator import com.ivy.wallet.domain.deprecated.logic.loantrasactions.LoanTransactionsLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData import com.ivy.wallet.domain.deprecated.logic.model.EditLoanRecordData import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.LoanDao import com.ivy.core.db.dao.LoanRecordDao import com.ivy.core.db.dao.SettingsDao import com.ivy.core.db.dao.TransactionDao import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import java.util.UUID import javax.inject.Inject ImportOrdering:LoanEntity.kt$import androidx.annotation.Keep import androidx.room.Entity import androidx.room.PrimaryKey import com.google.gson.annotations.SerializedName import com.ivy.core.data.model.LoanType import com.ivy.core.data.model.Loan import java.util.* ImportOrdering:LoanModal.kt$import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.core.legacy.ui.IvyColorPicker import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.frp.test.TestingContext import com.ivy.resources.R import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.core.data.model.LoanType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Loan import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanData import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.ItemIconSDefaultIcon import com.ivy.wallet.ui.theme.components.IvyCheckboxWithText import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.modal.edit.AccountModal import com.ivy.wallet.ui.theme.modal.edit.AccountModalData import com.ivy.wallet.ui.theme.modal.edit.AmountModal import com.ivy.wallet.ui.theme.modal.edit.IconNameRow import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.legacy.utils.getDefaultFIATCurrency import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.selectEndTextFieldValue import com.ivy.legacy.utils.thenIf import kotlinx.coroutines.launch import java.util.UUID - ImportOrdering:LoanRecordCreator.kt$import com.ivy.core.data.model.LoanRecord import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData import com.ivy.core.data.db.dao.LoanRecordDao import com.ivy.legacy.utils.ioThread import java.util.UUID import javax.inject.Inject + ImportOrdering:LoanRecordCreator.kt$import com.ivy.core.data.model.LoanRecord import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData import com.ivy.core.db.dao.LoanRecordDao import com.ivy.legacy.utils.ioThread import java.util.UUID import javax.inject.Inject ImportOrdering:LoanRecordModal.kt$import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ivyWalletCtx import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.frp.test.TestingContext import com.ivy.resources.R import com.ivy.core.data.model.Account import com.ivy.core.data.model.LoanRecord import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData import com.ivy.wallet.domain.deprecated.logic.model.EditLoanRecordData import com.ivy.wallet.ui.theme.components.ItemIconSDefaultIcon import com.ivy.wallet.ui.theme.components.IvyCheckboxWithText import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.IvyOutlinedButton import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.modal.edit.AccountModal import com.ivy.wallet.ui.theme.modal.edit.AccountModalData import com.ivy.wallet.ui.theme.modal.edit.AmountModal import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.legacy.utils.convertUTCtoLocal import com.ivy.legacy.utils.formatLocalTime import com.ivy.legacy.utils.formatNicely import com.ivy.legacy.utils.getDefaultFIATCurrency import com.ivy.legacy.utils.getTrueDate import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.selectEndTextFieldValue import com.ivy.legacy.utils.thenIf import com.ivy.legacy.utils.timeNowUTC import kotlinx.coroutines.launch import java.time.LocalDateTime import java.util.UUID - ImportOrdering:LoanTransactionsCore.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.legacy.IvyWalletCtx import com.ivy.core.utils.stringRes import com.ivy.design.IVY_COLOR_PICKER_COLORS_FREE import com.ivy.resources.R import com.ivy.core.data.model.LoanType import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Loan import com.ivy.core.data.model.LoanRecord import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.CategoryDao import com.ivy.core.data.db.dao.LoanDao import com.ivy.core.data.db.dao.LoanRecordDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.core.data.db.dao.TransactionDao import com.ivy.legacy.utils.computationThread import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.timeNowUTC import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import java.time.LocalDateTime import java.util.Locale import java.util.UUID import javax.inject.Inject - ImportOrdering:LoanViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.frp.test.TestIdlingResource import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.loan.LoansAct import com.ivy.core.data.model.Account import com.ivy.core.data.model.Loan import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.LoanCreator import com.ivy.wallet.domain.deprecated.logic.loantrasactions.LoanTransactionsLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanData import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.dao.LoanDao import com.ivy.core.data.db.dao.LoanRecordDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.loans.loan.data.DisplayLoan import com.ivy.wallet.ui.theme.modal.LoanModalData import com.ivy.legacy.utils.format import com.ivy.legacy.utils.getDefaultFIATCurrency import com.ivy.legacy.utils.ioThread import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import java.util.UUID import javax.inject.Inject - ImportOrdering:LoansAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then import com.ivy.core.data.model.Loan import com.ivy.core.data.db.dao.LoanDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject + ImportOrdering:LoanTransactionsCore.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.legacy.IvyWalletCtx import com.ivy.core.utils.stringRes import com.ivy.design.IVY_COLOR_PICKER_COLORS_FREE import com.ivy.resources.R import com.ivy.core.data.model.LoanType import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Loan import com.ivy.core.data.model.LoanRecord import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.CategoryDao import com.ivy.core.db.dao.LoanDao import com.ivy.core.db.dao.LoanRecordDao import com.ivy.core.db.dao.SettingsDao import com.ivy.core.db.dao.TransactionDao import com.ivy.legacy.utils.computationThread import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.timeNowUTC import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import java.time.LocalDateTime import java.util.Locale import java.util.UUID import javax.inject.Inject + ImportOrdering:LoanViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.frp.test.TestIdlingResource import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.loan.LoansAct import com.ivy.core.data.model.Account import com.ivy.core.data.model.Loan import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.LoanCreator import com.ivy.wallet.domain.deprecated.logic.loantrasactions.LoanTransactionsLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanData import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.dao.LoanDao import com.ivy.core.db.dao.LoanRecordDao import com.ivy.core.db.dao.SettingsDao import com.ivy.loans.loan.data.DisplayLoan import com.ivy.wallet.ui.theme.modal.LoanModalData import com.ivy.legacy.utils.format import com.ivy.legacy.utils.getDefaultFIATCurrency import com.ivy.legacy.utils.ioThread import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import java.util.UUID import javax.inject.Inject + ImportOrdering:LoansAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then import com.ivy.core.data.model.Loan import com.ivy.core.db.dao.LoanDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject ImportOrdering:LoansScreen.kt$import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.navigation.LoanDetailsScreen import com.ivy.navigation.LoansScreen import com.ivy.resources.R import com.ivy.core.data.model.LoanType import com.ivy.core.data.model.Loan import com.ivy.loans.loan.data.DisplayLoan import com.ivy.wallet.ui.theme.Blue import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.components.BalanceRow import com.ivy.wallet.ui.theme.components.ItemIconSDefaultIcon import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.ProgressBar import com.ivy.wallet.ui.theme.components.ReorderButton import com.ivy.wallet.ui.theme.components.ReorderModalSingleType import com.ivy.wallet.ui.theme.dynamicContrast import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.modal.LoanModal import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.legacy.utils.getDefaultFIATCurrency import com.ivy.legacy.utils.onScreenStart - ImportOrdering:LogoutLogic.kt$import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.IvyRoomDatabase import com.ivy.legacy.utils.ioThread import com.ivy.navigation.MainScreen import com.ivy.navigation.Navigation import com.ivy.navigation.OnboardingScreen import javax.inject.Inject - ImportOrdering:MainScreen.kt$import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.tooling.preview.Preview import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.accounts.AccountsTab import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.data.model.MainTab import com.ivy.legacy.ivyWalletCtx import com.ivy.navigation.navigation import com.ivy.home.HomeTab import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.EditTransactionScreen import com.ivy.navigation.MainScreen import com.ivy.core.data.db.entity.TransactionType import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.ui.theme.modal.edit.AccountModal import com.ivy.wallet.ui.theme.modal.edit.AccountModalData import com.ivy.legacy.utils.onScreenStart - ImportOrdering:MainViewModel.kt$import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.legacy.data.SharedPrefs import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.data.model.MainTab import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.ioThread import com.ivy.navigation.MainScreen import com.ivy.navigation.Navigation import com.ivy.wallet.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.core.data.db.dao.SettingsDao import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import javax.inject.Inject + ImportOrdering:LogoutLogic.kt$import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.IvyRoomDatabase import com.ivy.legacy.utils.ioThread import com.ivy.navigation.MainScreen import com.ivy.navigation.Navigation import com.ivy.navigation.OnboardingScreen import javax.inject.Inject + ImportOrdering:MainScreen.kt$import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.tooling.preview.Preview import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.accounts.AccountsTab import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.data.model.MainTab import com.ivy.legacy.ivyWalletCtx import com.ivy.navigation.navigation import com.ivy.home.HomeTab import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.EditTransactionScreen import com.ivy.navigation.MainScreen import com.ivy.core.db.entity.TransactionType import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.ui.theme.modal.edit.AccountModal import com.ivy.wallet.ui.theme.modal.edit.AccountModalData import com.ivy.legacy.utils.onScreenStart + ImportOrdering:MainViewModel.kt$import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.legacy.data.SharedPrefs import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.data.model.MainTab import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.ioThread import com.ivy.navigation.MainScreen import com.ivy.navigation.Navigation import com.ivy.wallet.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.event.AccountsUpdatedEvent import com.ivy.core.db.dao.SettingsDao import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import javax.inject.Inject ImportOrdering:MonthPickerModal.kt$import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.data.model.Month.Companion.monthsList import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.components.WrapContentRow import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.legacy.utils.dateNowUTC import com.ivy.legacy.utils.drawColoredShadow import com.ivy.legacy.utils.hideKeyboard import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.thenIf import java.time.LocalDate import java.util.UUID ImportOrdering:NameModal.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.wallet.ui.theme.components.IvyTitleTextField import com.ivy.legacy.utils.selectEndTextFieldValue import java.util.UUID ImportOrdering:OnboardingAccounts.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.core.data.model.Account import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.data.model.AccountBalance import com.ivy.legacy.utils.toLowerCaseLocal import com.ivy.onboarding.components.OnboardingProgressSlider import com.ivy.onboarding.components.OnboardingToolbar import com.ivy.onboarding.components.Suggestions import com.ivy.resources.R import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.IvyDark import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.GradientCutBottom import com.ivy.wallet.ui.theme.components.ItemIconMDefaultIcon import com.ivy.wallet.ui.theme.components.OnboardingButton import com.ivy.wallet.ui.theme.dynamicContrast import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.modal.edit.AccountModal import com.ivy.wallet.ui.theme.modal.edit.AccountModalData import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.wallet.ui.theme.wallet.AmountCurrencyB1Row ImportOrdering:OnboardingCategories.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.onboarding.components.OnboardingProgressSlider import com.ivy.onboarding.components.OnboardingToolbar import com.ivy.onboarding.components.Suggestions import com.ivy.resources.R import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.IvyDark import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.OrangeLight import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.RedLight import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.GradientCutBottom import com.ivy.wallet.ui.theme.components.ItemIconSDefaultIcon import com.ivy.wallet.ui.theme.components.OnboardingButton import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.modal.edit.CategoryModal import com.ivy.wallet.ui.theme.modal.edit.CategoryModalData import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.legacy.utils.toLowerCaseLocal ImportOrdering:OnboardingComponents.kt$import androidx.annotation.DrawableRes import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.legacy.utils.drawColoredShadow import com.ivy.legacy.utils.thenIf ImportOrdering:OnboardingPrivacyTC.kt$import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.gestures.detectHorizontalDragGestures import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.geometry.Offset import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.core.Constants import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ivyWalletCtx import com.ivy.legacy.rootScreen import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.legacy.utils.drawColoredShadow import com.ivy.legacy.utils.toDensityDp import com.ivy.legacy.utils.toDensityPx import timber.log.Timber - ImportOrdering:OnboardingRouter.kt$import androidx.lifecycle.MutableLiveData import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.model.Category import com.ivy.legacy.LogoutLogic import com.ivy.legacy.data.model.AccountBalance import com.ivy.legacy.utils.OpResult import com.ivy.legacy.utils.ioThread import com.ivy.navigation.ImportScreen import com.ivy.navigation.MainScreen import com.ivy.navigation.Navigation import com.ivy.navigation.OnboardingScreen import com.ivy.onboarding.OnboardingState import com.ivy.wallet.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.domain.deprecated.logic.PreloadDataLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.deprecated.logic.notification.TransactionReminderLogic import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.CategoryDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch + ImportOrdering:OnboardingRouter.kt$import androidx.lifecycle.MutableLiveData import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.model.Category import com.ivy.legacy.LogoutLogic import com.ivy.legacy.data.model.AccountBalance import com.ivy.legacy.utils.OpResult import com.ivy.legacy.utils.ioThread import com.ivy.navigation.ImportScreen import com.ivy.navigation.MainScreen import com.ivy.navigation.Navigation import com.ivy.navigation.OnboardingScreen import com.ivy.onboarding.OnboardingState import com.ivy.wallet.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.domain.deprecated.logic.PreloadDataLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.deprecated.logic.notification.TransactionReminderLogic import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.CategoryDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch ImportOrdering:OnboardingScreen.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.tooling.preview.Preview import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.data.model.AccountBalance import com.ivy.navigation.OnboardingScreen import com.ivy.onboarding.steps.OnboardingAccounts import com.ivy.onboarding.steps.OnboardingCategories import com.ivy.onboarding.steps.OnboardingSetCurrency import com.ivy.onboarding.steps.OnboardingSplashLogin import com.ivy.onboarding.steps.OnboardingType import com.ivy.onboarding.viewmodel.OnboardingViewModel import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.legacy.utils.OpResult import com.ivy.legacy.utils.onScreenStart ImportOrdering:OnboardingSetCurrency.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.resources.R import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.legacy.IvyWalletPreview import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.BackButton import com.ivy.wallet.ui.theme.components.CurrencyPicker import com.ivy.wallet.ui.theme.components.GradientCutBottom import com.ivy.wallet.ui.theme.components.OnboardingButton import com.ivy.legacy.utils.setStatusBarDarkTextCompat ImportOrdering:OnboardingSetName.kt$import androidx.compose.animation.core.animateDpAsState import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.IvyOutlinedTextField import com.ivy.wallet.ui.theme.components.OnboardingButton import com.ivy.legacy.utils.addKeyboardListener import com.ivy.legacy.utils.densityScope import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.keyboardOnlyWindowInsets import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.springBounceSlow ImportOrdering:OnboardingSplashLogin.kt$import androidx.annotation.DrawableRes import androidx.compose.animation.core.animateDp import androidx.compose.animation.core.animateFloat import androidx.compose.animation.core.updateTransition import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.ClickableText import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.layout import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.core.Constants import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ivyWalletCtx import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.onboarding.OnboardingState import com.ivy.resources.R import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.legacy.utils.OpResult import com.ivy.legacy.utils.clickableNoIndication import com.ivy.legacy.utils.drawColoredShadow import com.ivy.legacy.utils.lerp import com.ivy.legacy.utils.openUrl import com.ivy.legacy.utils.springBounceSlow import com.ivy.legacy.utils.thenIf import com.ivy.legacy.utils.toDensityDp import com.ivy.legacy.utils.toDensityPx import kotlin.math.roundToInt ImportOrdering:OnboardingToolbar.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.components.IvyToolbar ImportOrdering:OnboardingType.kt$import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.onboarding.components.OnboardingProgressSlider import com.ivy.resources.R import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.CloseButton import com.ivy.wallet.ui.theme.components.IvyOutlinedButtonFillMaxWidth import com.ivy.wallet.ui.theme.components.OnboardingButton - ImportOrdering:OnboardingViewModel.kt$import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Settings import com.ivy.design.l0_system.Theme import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.LogoutLogic import com.ivy.legacy.data.model.AccountBalance import com.ivy.legacy.utils.OpResult import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.sendToCrashlytics import com.ivy.navigation.Navigation import com.ivy.navigation.OnboardingScreen import com.ivy.onboarding.OnboardingState import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.CategoryCreator import com.ivy.wallet.domain.deprecated.logic.PreloadDataLogic import com.ivy.wallet.domain.deprecated.logic.WalletAccountLogic import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.deprecated.logic.notification.TransactionReminderLogic import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.CategoryDao import com.ivy.core.data.db.dao.SettingsDao import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject + ImportOrdering:OnboardingViewModel.kt$import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Settings import com.ivy.design.l0_system.Theme import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.LogoutLogic import com.ivy.legacy.data.model.AccountBalance import com.ivy.legacy.utils.OpResult import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.sendToCrashlytics import com.ivy.navigation.Navigation import com.ivy.navigation.OnboardingScreen import com.ivy.onboarding.OnboardingState import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.domain.deprecated.logic.AccountCreator import com.ivy.wallet.domain.deprecated.logic.CategoryCreator import com.ivy.wallet.domain.deprecated.logic.PreloadDataLogic import com.ivy.wallet.domain.deprecated.logic.WalletAccountLogic import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.deprecated.logic.notification.TransactionReminderLogic import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.CategoryDao import com.ivy.core.db.dao.SettingsDao import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject ImportOrdering:OverdueAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.wallet.domain.pure.data.IncomeExpensePair import com.ivy.wallet.domain.pure.transaction.isOverdue import com.ivy.legacy.utils.beginningOfIvyTime import java.time.LocalDateTime import javax.inject.Inject ImportOrdering:PeriodSelector.kt$import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.rotate import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.legacy.data.model.TimePeriod import com.ivy.legacy.ivyWalletCtx import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.wallet.ui.theme.components.IvyIcon - ImportOrdering:PieChartStatisticScreen.kt$import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Category import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.utils.drawColoredShadow import com.ivy.legacy.utils.format import com.ivy.legacy.utils.horizontalSwipeListener import com.ivy.legacy.utils.thenIf import com.ivy.navigation.EditTransactionScreen import com.ivy.navigation.ItemStatisticScreen import com.ivy.navigation.PieChartStatisticScreen import com.ivy.resources.R import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.IvyDark import com.ivy.wallet.ui.theme.IvyLight import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.RedLight import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.BalanceRow import com.ivy.wallet.ui.theme.components.BalanceRowMini import com.ivy.wallet.ui.theme.components.CircleButtonFilledGradient import com.ivy.wallet.ui.theme.components.CloseButton import com.ivy.wallet.ui.theme.components.ItemIconM import com.ivy.wallet.ui.theme.components.ItemIconMDefaultIcon import com.ivy.wallet.ui.theme.components.IvyOutlinedButton import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.gradientExpenses import com.ivy.wallet.ui.theme.modal.ChoosePeriodModal import com.ivy.wallet.ui.theme.pureBlur import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.wallet.ui.theme.wallet.AmountCurrencyB1Row import kotlinx.collections.immutable.persistentListOf - ImportOrdering:PieChartStatisticViewModel.kt$import androidx.lifecycle.viewModelScope import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.frp.viewmodel.FRPViewModel import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.data.model.TimePeriod import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.readOnly import com.ivy.navigation.PieChartStatisticScreen import com.ivy.piechart.action.PieChartAct import com.ivy.core.data.db.dao.SettingsDao import com.ivy.wallet.ui.theme.modal.ChoosePeriodModalData import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import java.util.UUID import javax.inject.Inject - ImportOrdering:PlannedPaymentCard.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.ui.component.transaction.TypeAmountCurrency import com.ivy.navigation.ItemStatisticScreen import com.ivy.resources.R import com.ivy.core.data.model.IntervalType import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.getCustomIconIdS import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.legacy.utils.formatDateOnly import com.ivy.legacy.utils.formatDateOnlyWithYear import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.uppercaseLocal import java.time.LocalDateTime + ImportOrdering:PieChartStatisticScreen.kt$import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Category import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.utils.drawColoredShadow import com.ivy.legacy.utils.format import com.ivy.legacy.utils.horizontalSwipeListener import com.ivy.legacy.utils.thenIf import com.ivy.navigation.EditTransactionScreen import com.ivy.navigation.ItemStatisticScreen import com.ivy.navigation.PieChartStatisticScreen import com.ivy.resources.R import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.IvyDark import com.ivy.wallet.ui.theme.IvyLight import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.RedLight import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.BalanceRow import com.ivy.wallet.ui.theme.components.BalanceRowMini import com.ivy.wallet.ui.theme.components.CircleButtonFilledGradient import com.ivy.wallet.ui.theme.components.CloseButton import com.ivy.wallet.ui.theme.components.ItemIconM import com.ivy.wallet.ui.theme.components.ItemIconMDefaultIcon import com.ivy.wallet.ui.theme.components.IvyOutlinedButton import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.gradientExpenses import com.ivy.wallet.ui.theme.modal.ChoosePeriodModal import com.ivy.wallet.ui.theme.pureBlur import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.wallet.ui.theme.wallet.AmountCurrencyB1Row import kotlinx.collections.immutable.persistentListOf + ImportOrdering:PieChartStatisticViewModel.kt$import androidx.lifecycle.viewModelScope import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.frp.viewmodel.FRPViewModel import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.data.model.TimePeriod import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.readOnly import com.ivy.navigation.PieChartStatisticScreen import com.ivy.piechart.action.PieChartAct import com.ivy.core.db.dao.SettingsDao import com.ivy.wallet.ui.theme.modal.ChoosePeriodModalData import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import java.util.UUID import javax.inject.Inject + ImportOrdering:PlannedPaymentCard.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.ui.component.transaction.TypeAmountCurrency import com.ivy.navigation.ItemStatisticScreen import com.ivy.resources.R import com.ivy.core.data.model.IntervalType import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.getCustomIconIdS import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.toComposeColor import com.ivy.legacy.utils.formatDateOnly import com.ivy.legacy.utils.formatDateOnlyWithYear import com.ivy.legacy.utils.isNotNullOrBlank import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.uppercaseLocal import java.time.LocalDateTime ImportOrdering:PlannedPaymentsBottomBar.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletPreview import com.ivy.resources.R import com.ivy.wallet.ui.theme.components.ActionsRow import com.ivy.wallet.ui.theme.components.CloseButton import com.ivy.wallet.ui.theme.components.IvyOutlinedButton import com.ivy.wallet.ui.theme.gradientCutBackgroundTop import com.ivy.legacy.utils.navigationBarInset import com.ivy.legacy.utils.toDensityDp - ImportOrdering:PlannedPaymentsGenerator.kt$import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.core.data.model.Transaction import com.ivy.core.data.db.dao.TransactionDao import java.time.LocalDateTime import javax.inject.Inject - ImportOrdering:PlannedPaymentsLogic.kt$import com.ivy.core.data.model.IntervalType import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.wallet.domain.deprecated.logic.currency.sumByDoublePlannedInBaseCurrency import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.PlannedPaymentRuleDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.core.data.db.dao.TransactionDao import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.timeNowUTC import javax.inject.Inject - ImportOrdering:PlannedPaymentsScreen.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.PlannedPaymentsScreen import com.ivy.resources.R import com.ivy.core.data.model.IntervalType import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.wallet.ui.theme.Orange import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.timeNowUTC - ImportOrdering:PlannedPaymentsViewModel.kt$import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.frp.test.TestIdlingResource import com.ivy.navigation.PlannedPaymentsScreen import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.wallet.domain.deprecated.logic.PlannedPaymentsLogic import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.CategoryDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.ioThread import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import javax.inject.Inject - ImportOrdering:PreloadDataLogic.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.core.utils.stringRes import com.ivy.design.l0_system.* import com.ivy.resources.R import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.CategoryDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject + ImportOrdering:PlannedPaymentsGenerator.kt$import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.core.data.model.Transaction import com.ivy.core.db.dao.TransactionDao import java.time.LocalDateTime import javax.inject.Inject + ImportOrdering:PlannedPaymentsLogic.kt$import com.ivy.core.data.model.IntervalType import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.wallet.domain.deprecated.logic.currency.sumByDoublePlannedInBaseCurrency import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.PlannedPaymentRuleDao import com.ivy.core.db.dao.SettingsDao import com.ivy.core.db.dao.TransactionDao import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.timeNowUTC import javax.inject.Inject + ImportOrdering:PlannedPaymentsScreen.kt$import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.PlannedPaymentsScreen import com.ivy.resources.R import com.ivy.core.data.model.IntervalType import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.wallet.ui.theme.Orange import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.timeNowUTC + ImportOrdering:PlannedPaymentsViewModel.kt$import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.frp.test.TestIdlingResource import com.ivy.navigation.PlannedPaymentsScreen import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.wallet.domain.deprecated.logic.PlannedPaymentsLogic import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.CategoryDao import com.ivy.core.db.dao.SettingsDao import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.ioThread import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import javax.inject.Inject + ImportOrdering:PreloadDataLogic.kt$import androidx.compose.ui.graphics.toArgb import com.ivy.core.utils.stringRes import com.ivy.design.l0_system.* import com.ivy.resources.R import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.CategoryDao import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject ImportOrdering:PrimaryAttributeColumn.kt$import androidx.annotation.DrawableRes import androidx.compose.foundation.border import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.legacy.utils.clickableNoIndication ImportOrdering:RateItem.kt$import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.design.l1_buildingBlocks.SpacerHor import com.ivy.design.l1_buildingBlocks.SpacerWeight import com.ivy.exchangerates.data.RateUi import com.ivy.wallet.ui.theme.components.DeleteButton import com.ivy.legacy.utils.format ImportOrdering:RecurringRule.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.data.model.IntervalType import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.components.AddPrimaryAttributeButton import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.legacy.utils.formatDateOnly import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.uppercaseLocal import java.time.LocalDateTime @@ -2631,23 +2631,23 @@ ImportOrdering:ReleaseRuntimeOnlyConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:ReleaseWearAppConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:ReorderModal.kt$import android.annotation.SuppressLint import android.view.View import android.view.ViewGroup import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.layout.* import androidx.compose.material3.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper.* import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.wallet.domain.data.Reorderable import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.modal.IvyModal import com.ivy.legacy.utils.numberBetween import com.ivy.legacy.utils.swap import java.util.* - ImportOrdering:ReportFilter.kt$import com.ivy.legacy.data.model.TimePeriod import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import java.util.UUID - ImportOrdering:ReportScreen.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.core.utils.stringRes import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.data.AppBaseData import com.ivy.legacy.data.DueSection import com.ivy.legacy.ui.component.IncomeExpensesCards import com.ivy.legacy.ui.component.transaction.TransactionsDividerLine import com.ivy.legacy.ui.component.transaction.transactions import com.ivy.navigation.PieChartStatisticScreen import com.ivy.navigation.ReportScreen import com.ivy.resources.R import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.domain.pure.data.IncomeExpensePair import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.GreenDark import com.ivy.wallet.ui.theme.GreenLight import com.ivy.wallet.ui.theme.IvyDark import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.Purple1Dark import com.ivy.wallet.ui.theme.Red3Light import com.ivy.wallet.ui.theme.components.BackButtonType import com.ivy.wallet.ui.theme.components.BalanceRow import com.ivy.wallet.ui.theme.components.CircleButtonFilled import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.IvyCheckboxWithText import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.IvyOutlinedButton import com.ivy.wallet.ui.theme.components.IvyToolbar import com.ivy.wallet.ui.theme.pureBlur import com.ivy.legacy.utils.clickableNoIndication import com.ivy.legacy.utils.onScreenStart import kotlinx.collections.immutable.persistentListOf + ImportOrdering:ReportFilter.kt$import com.ivy.legacy.data.model.TimePeriod import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import java.util.UUID + ImportOrdering:ReportScreen.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.legacy.IvyWalletPreview import com.ivy.core.utils.stringRes import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation import com.ivy.legacy.data.AppBaseData import com.ivy.legacy.data.DueSection import com.ivy.legacy.ui.component.IncomeExpensesCards import com.ivy.legacy.ui.component.transaction.TransactionsDividerLine import com.ivy.legacy.ui.component.transaction.transactions import com.ivy.navigation.PieChartStatisticScreen import com.ivy.navigation.ReportScreen import com.ivy.resources.R import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.wallet.domain.pure.data.IncomeExpensePair import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.GreenDark import com.ivy.wallet.ui.theme.GreenLight import com.ivy.wallet.ui.theme.IvyDark import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.Purple1Dark import com.ivy.wallet.ui.theme.Red3Light import com.ivy.wallet.ui.theme.components.BackButtonType import com.ivy.wallet.ui.theme.components.BalanceRow import com.ivy.wallet.ui.theme.components.CircleButtonFilled import com.ivy.wallet.ui.theme.components.IvyButton import com.ivy.wallet.ui.theme.components.IvyCheckboxWithText import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.IvyOutlinedButton import com.ivy.wallet.ui.theme.components.IvyToolbar import com.ivy.wallet.ui.theme.pureBlur import com.ivy.legacy.utils.clickableNoIndication import com.ivy.legacy.utils.onScreenStart import kotlinx.collections.immutable.persistentListOf ImportOrdering:ReportScreenState.kt$import com.ivy.core.data.model.TransactionHistoryItem import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import java.util.* - ImportOrdering:ReportViewModel.kt$import android.content.Context import androidx.compose.ui.graphics.toArgb import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.ivy.core.RootScreen import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.core.utils.stringRes import com.ivy.frp.filterSuspend import com.ivy.frp.viewmodel.FRPViewModel import com.ivy.frp.viewmodel.readOnly import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.data.model.TimePeriod import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.formatNicelyWithTime import com.ivy.legacy.utils.scopedIOThread import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.toLowerCaseLocal import com.ivy.legacy.utils.uiThread import com.ivy.resources.R import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.exchange.ExchangeAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.transaction.CalcTrnsIncomeExpenseAct import com.ivy.wallet.domain.action.transaction.TrnsWithDateDivsAct import com.ivy.wallet.domain.deprecated.logic.PlannedPaymentsLogic import com.ivy.wallet.domain.deprecated.logic.csv.ExportCSVLogic import com.ivy.wallet.domain.pure.data.IncomeExpenseTransferPair import com.ivy.wallet.domain.pure.exchange.ExchangeData import com.ivy.wallet.domain.pure.transaction.trnCurrency import com.ivy.wallet.domain.pure.util.orZero import com.ivy.core.data.db.dao.TransactionDao import com.ivy.wallet.ui.theme.Gray import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import java.math.BigDecimal import javax.inject.Inject + ImportOrdering:ReportViewModel.kt$import android.content.Context import androidx.compose.ui.graphics.toArgb import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.ivy.core.RootScreen import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.core.utils.stringRes import com.ivy.frp.filterSuspend import com.ivy.frp.viewmodel.FRPViewModel import com.ivy.frp.viewmodel.readOnly import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.data.model.TimePeriod import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.formatNicelyWithTime import com.ivy.legacy.utils.scopedIOThread import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.toLowerCaseLocal import com.ivy.legacy.utils.uiThread import com.ivy.resources.R import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.exchange.ExchangeAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.transaction.CalcTrnsIncomeExpenseAct import com.ivy.wallet.domain.action.transaction.TrnsWithDateDivsAct import com.ivy.wallet.domain.deprecated.logic.PlannedPaymentsLogic import com.ivy.wallet.domain.deprecated.logic.csv.ExportCSVLogic import com.ivy.wallet.domain.pure.data.IncomeExpenseTransferPair import com.ivy.wallet.domain.pure.exchange.ExchangeData import com.ivy.wallet.domain.pure.transaction.trnCurrency import com.ivy.wallet.domain.pure.util.orZero import com.ivy.core.db.dao.TransactionDao import com.ivy.wallet.ui.theme.Gray import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import java.math.BigDecimal import javax.inject.Inject ImportOrdering:RuntimeOnlyConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* - ImportOrdering:SaveTrnLocallyAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Transaction import com.ivy.core.data.db.dao.TransactionDao import javax.inject.Inject + ImportOrdering:SaveTrnLocallyAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Transaction import com.ivy.core.db.dao.TransactionDao import javax.inject.Inject ImportOrdering:SearchInput.kt$import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.Gray import com.ivy.design.l0_system.UI import com.ivy.design.l1_buildingBlocks.IvyIcon import com.ivy.resources.R import com.ivy.wallet.ui.theme.components.IvyBasicTextField import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.selectEndTextFieldValue ImportOrdering:SearchViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.frp.test.TestIdlingResource import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.transaction.AllTrnsAct import com.ivy.wallet.domain.action.transaction.TrnsWithDateDivsAct import com.ivy.core.data.model.TransactionHistoryItem import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import com.ivy.legacy.utils.getDefaultFIATCurrency import com.ivy.legacy.utils.ioThread import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import javax.inject.Inject - ImportOrdering:Settings.kt$import androidx.compose.runtime.Immutable import com.ivy.design.l0_system.Theme import com.ivy.core.data.db.entity.SettingsEntity import java.math.BigDecimal import java.util.UUID - ImportOrdering:SettingsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Settings import com.ivy.core.data.db.dao.SettingsDao import javax.inject.Inject + ImportOrdering:Settings.kt$import androidx.compose.runtime.Immutable import com.ivy.design.l0_system.Theme import com.ivy.core.db.entity.SettingsEntity import java.math.BigDecimal import java.util.UUID + ImportOrdering:SettingsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Settings import com.ivy.core.db.dao.SettingsDao import javax.inject.Inject ImportOrdering:SettingsEntity.kt$import androidx.annotation.Keep import androidx.room.Entity import androidx.room.PrimaryKey import com.google.gson.annotations.SerializedName import com.ivy.design.l0_system.Theme import com.ivy.core.data.model.Settings import java.util.* ImportOrdering:SettingsScreen.kt$import androidx.annotation.DrawableRes import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.core.Constants import com.ivy.core.Constants.URL_IVY_CONTRIBUTORS import com.ivy.design.l0_system.SunsetNight import com.ivy.design.l0_system.Theme import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.design.l1_buildingBlocks.IconScale import com.ivy.design.l1_buildingBlocks.IvyIconScaled import com.ivy.navigation.navigation import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.rootScreen import com.ivy.legacy.utils.OpResult import com.ivy.legacy.utils.clickableNoIndication import com.ivy.legacy.utils.drawColoredShadow import com.ivy.legacy.utils.onScreenStart import com.ivy.legacy.utils.thenIf import com.ivy.navigation.DonateScreen import com.ivy.navigation.ExchangeRatesScreen import com.ivy.navigation.ImportScreen import com.ivy.navigation.SettingsScreen import com.ivy.navigation.TestScreen import com.ivy.resources.R import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.ui.theme.Blue import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.Red3 import com.ivy.wallet.ui.theme.White import com.ivy.wallet.ui.theme.components.IvySwitch import com.ivy.wallet.ui.theme.components.IvyToolbar import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.modal.ChooseStartDateOfMonthModal import com.ivy.wallet.ui.theme.modal.CurrencyModal import com.ivy.wallet.ui.theme.modal.DeleteModal import com.ivy.wallet.ui.theme.modal.NameModal import com.ivy.wallet.ui.theme.modal.ProgressModal - ImportOrdering:SettingsViewModel.kt$import android.content.Context import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.legacy.IvyWalletCtx import com.ivy.core.RootScreen import com.ivy.core.utils.refreshWidget import com.ivy.design.l0_system.Theme import com.ivy.frp.monad.Res import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.LogoutLogic import com.ivy.wallet.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.action.global.StartDayOfMonthAct import com.ivy.wallet.domain.action.global.UpdateStartDayOfMonthAct import com.ivy.wallet.domain.action.settings.SettingsAct import com.ivy.wallet.domain.action.settings.UpdateSettingsAct import com.ivy.wallet.domain.deprecated.logic.csv.ExportCSVLogic import com.ivy.wallet.domain.deprecated.logic.zip.BackupLogic import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.dao.SettingsDao import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.formatNicelyWithTime import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.sendToCrashlytics import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.uiThread import com.ivy.widget.balance.WalletBalanceWidgetReceiver import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject - ImportOrdering:SmartTitleSuggestionsLogic.kt$import com.ivy.core.data.model.Transaction import com.ivy.core.data.db.dao.TransactionDao import com.ivy.legacy.utils.capitalizeWords import com.ivy.legacy.utils.isNotNullOrBlank import java.util.* import javax.inject.Inject + ImportOrdering:SettingsViewModel.kt$import android.content.Context import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.legacy.IvyWalletCtx import com.ivy.core.RootScreen import com.ivy.core.utils.refreshWidget import com.ivy.design.l0_system.Theme import com.ivy.frp.monad.Res import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.LogoutLogic import com.ivy.wallet.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.action.global.StartDayOfMonthAct import com.ivy.wallet.domain.action.global.UpdateStartDayOfMonthAct import com.ivy.wallet.domain.action.settings.SettingsAct import com.ivy.wallet.domain.action.settings.UpdateSettingsAct import com.ivy.wallet.domain.deprecated.logic.csv.ExportCSVLogic import com.ivy.wallet.domain.deprecated.logic.zip.BackupLogic import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.dao.SettingsDao import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.formatNicelyWithTime import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.sendToCrashlytics import com.ivy.legacy.utils.timeNowUTC import com.ivy.legacy.utils.uiThread import com.ivy.widget.balance.WalletBalanceWidgetReceiver import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject + ImportOrdering:SmartTitleSuggestionsLogic.kt$import com.ivy.core.data.model.Transaction import com.ivy.core.db.dao.TransactionDao import com.ivy.legacy.utils.capitalizeWords import com.ivy.legacy.utils.isNotNullOrBlank import java.util.* import javax.inject.Inject ImportOrdering:StartDayOfMonthAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.legacy.data.SharedPrefs import com.ivy.legacy.IvyWalletCtx import javax.inject.Inject ImportOrdering:Suggestions.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.data.model.Account import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.WrapContentRow import com.ivy.legacy.utils.drawColoredShadow - ImportOrdering:SyncExchangeRatesAct.kt$import androidx.annotation.Keep import com.ivy.core.data.db.entity.ExchangeRateEntity import com.ivy.frp.action.Action import com.ivy.core.data.db.dao.ExchangeRateDao import dagger.Lazy import io.ktor.client.HttpClient import io.ktor.client.call.body import io.ktor.client.request.get import kotlinx.serialization.Serializable import timber.log.Timber import javax.inject.Inject + ImportOrdering:SyncExchangeRatesAct.kt$import androidx.annotation.Keep import com.ivy.core.db.entity.ExchangeRateEntity import com.ivy.frp.action.Action import com.ivy.core.db.dao.ExchangeRateDao import dagger.Lazy import io.ktor.client.HttpClient import io.ktor.client.call.body import io.ktor.client.request.get import kotlinx.serialization.Serializable import timber.log.Timber import javax.inject.Inject ImportOrdering:TestAnnotationProcessorConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:TestApiConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:TestApiDependenciesMetadataConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* @@ -2708,27 +2708,27 @@ ImportOrdering:TestReleaseWearAppConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:TestRuntimeOnlyConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:TestWearAppConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* - ImportOrdering:Title.kt$import androidx.compose.foundation.ScrollState import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.data.db.entity.TransactionType import com.ivy.wallet.domain.deprecated.logic.SUGGESTIONS_LIMIT import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.components.IvyTitleTextField import com.ivy.legacy.utils.keyboardVisibleState import com.ivy.legacy.utils.selectEndTextFieldValue import kotlinx.coroutines.launch import java.util.UUID - ImportOrdering:TransactionDao.kt$import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.db.entity.TransactionEntity import java.time.LocalDateTime import java.util.* + ImportOrdering:Title.kt$import androidx.compose.foundation.ScrollState import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.core.db.entity.TransactionType import com.ivy.wallet.domain.deprecated.logic.SUGGESTIONS_LIMIT import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.components.IvyTitleTextField import com.ivy.legacy.utils.keyboardVisibleState import com.ivy.legacy.utils.selectEndTextFieldValue import kotlinx.coroutines.launch import java.util.UUID + ImportOrdering:TransactionDao.kt$import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import com.ivy.core.db.entity.TransactionType import com.ivy.core.db.entity.TransactionEntity import java.time.LocalDateTime import java.util.* ImportOrdering:TransactionDateTime.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.legacy.utils.formatNicelyWithTime import com.ivy.legacy.utils.timeNowUTC import java.time.LocalDateTime - ImportOrdering:TransactionReminderWorker.kt$import android.app.PendingIntent import android.content.Context import androidx.core.app.NotificationCompat import androidx.hilt.work.HiltWorker import androidx.work.CoroutineWorker import androidx.work.WorkerParameters import com.ivy.core.AppStarter import com.ivy.core.utils.stringRes import com.ivy.resources.R import com.ivy.wallet.android.notification.IvyNotificationChannel import com.ivy.wallet.android.notification.NotificationService import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.dao.TransactionDao import com.ivy.legacy.utils.atEndOfDay import com.ivy.legacy.utils.dateNowUTC import dagger.assisted.Assisted import dagger.assisted.AssistedInject import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext + ImportOrdering:TransactionReminderWorker.kt$import android.app.PendingIntent import android.content.Context import androidx.core.app.NotificationCompat import androidx.hilt.work.HiltWorker import androidx.work.CoroutineWorker import androidx.work.WorkerParameters import com.ivy.core.AppStarter import com.ivy.core.utils.stringRes import com.ivy.resources.R import com.ivy.wallet.android.notification.IvyNotificationChannel import com.ivy.wallet.android.notification.NotificationService import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.dao.TransactionDao import com.ivy.legacy.utils.atEndOfDay import com.ivy.legacy.utils.dateNowUTC import dagger.assisted.Assisted import dagger.assisted.AssistedInject import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext ImportOrdering:TransactionSectionDivider.kt$import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.Red import com.ivy.wallet.ui.theme.components.IvyDividerDot import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.legacy.utils.clickableNoIndication import com.ivy.legacy.utils.format import com.ivy.legacy.utils.springBounce - ImportOrdering:TrnByIdAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Transaction import com.ivy.core.data.db.dao.TransactionDao import java.util.UUID import javax.inject.Inject - ImportOrdering:TrnDateDividers.kt$import arrow.core.Option import arrow.core.toOption import com.ivy.frp.Pure import com.ivy.frp.SideEffect import com.ivy.frp.then import com.ivy.wallet.domain.data.TransactionHistoryDateDivider import com.ivy.core.data.model.TransactionHistoryItem import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.wallet.domain.pure.exchange.ExchangeData import com.ivy.wallet.domain.pure.exchange.ExchangeTrnArgument import com.ivy.wallet.domain.pure.exchange.exchangeInBaseCurrency import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.legacy.utils.convertUTCtoLocal import com.ivy.legacy.utils.toEpochSeconds import java.math.BigDecimal import java.util.* - ImportOrdering:TrnFunctions.kt$import arrow.core.Option import arrow.core.toOption import com.ivy.frp.Pure import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.account.accountCurrency import java.time.LocalDate - ImportOrdering:TrnsWithDateDivsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.action.exchange.ExchangeAct import com.ivy.wallet.domain.action.exchange.actInput import com.ivy.core.data.model.TransactionHistoryItem import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.transaction.transactionsWithDateDividers import com.ivy.core.data.db.dao.AccountDao import javax.inject.Inject - ImportOrdering:TrnsWithRangeAndAccFiltersAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenFilter import com.ivy.core.data.model.Transaction import com.ivy.core.data.db.dao.TransactionDao import java.util.UUID import javax.inject.Inject + ImportOrdering:TrnByIdAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Transaction import com.ivy.core.db.dao.TransactionDao import java.util.UUID import javax.inject.Inject + ImportOrdering:TrnDateDividers.kt$import arrow.core.Option import arrow.core.toOption import com.ivy.frp.Pure import com.ivy.frp.SideEffect import com.ivy.frp.then import com.ivy.wallet.domain.data.TransactionHistoryDateDivider import com.ivy.core.data.model.TransactionHistoryItem import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.wallet.domain.pure.exchange.ExchangeData import com.ivy.wallet.domain.pure.exchange.ExchangeTrnArgument import com.ivy.wallet.domain.pure.exchange.exchangeInBaseCurrency import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.SettingsDao import com.ivy.legacy.utils.convertUTCtoLocal import com.ivy.legacy.utils.toEpochSeconds import java.math.BigDecimal import java.util.* + ImportOrdering:TrnFunctions.kt$import arrow.core.Option import arrow.core.toOption import com.ivy.frp.Pure import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.account.accountCurrency import java.time.LocalDate + ImportOrdering:TrnsWithDateDivsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.action.exchange.ExchangeAct import com.ivy.wallet.domain.action.exchange.actInput import com.ivy.core.data.model.TransactionHistoryItem import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.transaction.transactionsWithDateDividers import com.ivy.core.db.dao.AccountDao import javax.inject.Inject + ImportOrdering:TrnsWithRangeAndAccFiltersAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenFilter import com.ivy.core.data.model.Transaction import com.ivy.core.db.dao.TransactionDao import java.util.UUID import javax.inject.Inject ImportOrdering:UpcomingAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.wallet.domain.pure.data.IncomeExpensePair import com.ivy.wallet.domain.pure.transaction.isUpcoming import javax.inject.Inject ImportOrdering:UpdateAccCacheAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.model.Account import com.ivy.legacy.IvyWalletCtx import javax.inject.Inject ImportOrdering:UpdateCategoriesCacheAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.model.Category import com.ivy.legacy.IvyWalletCtx import javax.inject.Inject - ImportOrdering:UpdateSettingsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.model.Settings import com.ivy.core.data.db.dao.SettingsDao import javax.inject.Inject + ImportOrdering:UpdateSettingsAct.kt$import com.ivy.frp.action.FPAction import com.ivy.core.data.model.Settings import com.ivy.core.db.dao.SettingsDao import javax.inject.Inject ImportOrdering:UpdateStartDayOfMonthAct.kt$import com.ivy.frp.action.FPAction import com.ivy.frp.monad.Res import com.ivy.frp.monad.thenIfSuccess import com.ivy.legacy.data.SharedPrefs import com.ivy.legacy.IvyWalletCtx import javax.inject.Inject ImportOrdering:Utils.kt$import androidx.compose.runtime.Composable import com.ivy.legacy.ivyWalletCtx import com.ivy.core.data.model.Account import com.ivy.core.data.model.Category import java.util.UUID - ImportOrdering:WalletAccountLogic.kt$import com.ivy.legacy.data.model.filterOverdue import com.ivy.legacy.data.model.filterUpcoming import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.core.data.db.dao.TransactionDao import com.ivy.legacy.utils.timeNowUTC import java.time.LocalDateTime import javax.inject.Inject import kotlin.math.abs import kotlin.math.absoluteValue - ImportOrdering:WalletBalanceWidget.kt$import android.appwidget.AppWidgetManager import android.content.Context import androidx.annotation.Keep import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import androidx.glance.GlanceId import androidx.glance.appwidget.GlanceAppWidget import androidx.glance.appwidget.GlanceAppWidgetManager import androidx.glance.appwidget.GlanceAppWidgetReceiver import androidx.glance.appwidget.provideContent import androidx.glance.appwidget.state.updateAppWidgetState import androidx.glance.currentState import androidx.glance.state.PreferencesGlanceStateDefinition import com.ivy.core.AppStarter import com.ivy.legacy.data.SharedPrefs import com.ivy.core.data.db.entity.TransactionType import com.ivy.legacy.data.model.toCloseTimeRange import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.settings.SettingsAct import com.ivy.wallet.domain.action.wallet.CalcIncomeExpenseAct import com.ivy.wallet.domain.action.wallet.CalcWalletBalanceAct import com.ivy.widgets.WidgetBase import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch import javax.inject.Inject - ImportOrdering:WalletCategoryLogic.kt$import com.ivy.legacy.data.model.filterOverdue import com.ivy.legacy.data.model.filterUpcoming import com.ivy.core.data.model.TransactionHistoryItem import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.wallet.domain.deprecated.logic.currency.sumInBaseCurrency import com.ivy.wallet.domain.pure.transaction.withDateDividers import com.ivy.core.data.db.dao.AccountDao import com.ivy.core.data.db.dao.SettingsDao import com.ivy.core.data.db.dao.TransactionDao import java.util.* import javax.inject.Inject + ImportOrdering:WalletAccountLogic.kt$import com.ivy.legacy.data.model.filterOverdue import com.ivy.legacy.data.model.filterUpcoming import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.core.db.dao.TransactionDao import com.ivy.legacy.utils.timeNowUTC import java.time.LocalDateTime import javax.inject.Inject import kotlin.math.abs import kotlin.math.absoluteValue + ImportOrdering:WalletBalanceWidget.kt$import android.appwidget.AppWidgetManager import android.content.Context import androidx.annotation.Keep import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import androidx.glance.GlanceId import androidx.glance.appwidget.GlanceAppWidget import androidx.glance.appwidget.GlanceAppWidgetManager import androidx.glance.appwidget.GlanceAppWidgetReceiver import androidx.glance.appwidget.provideContent import androidx.glance.appwidget.state.updateAppWidgetState import androidx.glance.currentState import androidx.glance.state.PreferencesGlanceStateDefinition import com.ivy.core.AppStarter import com.ivy.legacy.data.SharedPrefs import com.ivy.core.db.entity.TransactionType import com.ivy.legacy.data.model.toCloseTimeRange import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.settings.SettingsAct import com.ivy.wallet.domain.action.wallet.CalcIncomeExpenseAct import com.ivy.wallet.domain.action.wallet.CalcWalletBalanceAct import com.ivy.widgets.WidgetBase import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch import javax.inject.Inject + ImportOrdering:WalletCategoryLogic.kt$import com.ivy.legacy.data.model.filterOverdue import com.ivy.legacy.data.model.filterUpcoming import com.ivy.core.data.model.TransactionHistoryItem import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Category import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic import com.ivy.wallet.domain.deprecated.logic.currency.sumInBaseCurrency import com.ivy.wallet.domain.pure.transaction.withDateDividers import com.ivy.core.db.dao.AccountDao import com.ivy.core.db.dao.SettingsDao import com.ivy.core.db.dao.TransactionDao import java.util.* import javax.inject.Inject ImportOrdering:WalletCharts.kt$import com.ivy.frp.Pure import com.ivy.frp.SideEffect import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.wallet.domain.pure.data.IncomeExpensePair import com.ivy.wallet.domain.pure.data.WalletDAOs import com.ivy.legacy.utils.beginningOfIvyTime import com.ivy.legacy.utils.toEpochSeconds import java.math.BigDecimal import java.time.LocalDateTime - ImportOrdering:WalletValueFunctions.kt$import com.ivy.frp.SideEffect import com.ivy.core.data.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.exchange.ExchangeEffect import com.ivy.wallet.domain.pure.exchange.exchangeInBaseCurrency import java.math.BigDecimal + ImportOrdering:WalletValueFunctions.kt$import com.ivy.frp.SideEffect import com.ivy.core.db.entity.TransactionType import com.ivy.core.data.model.Account import com.ivy.core.data.model.Transaction import com.ivy.wallet.domain.pure.exchange.ExchangeEffect import com.ivy.wallet.domain.pure.exchange.exchangeInBaseCurrency import java.math.BigDecimal ImportOrdering:WearAppConfigurationAccessors.kt$import org.gradle.api.Action import org.gradle.api.Incubating import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.ConfigurationContainer import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.DependencyConstraint import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ModuleDependency import org.gradle.api.artifacts.PublishArtifact import org.gradle.api.artifacts.dsl.ArtifactHandler import org.gradle.api.artifacts.dsl.DependencyConstraintHandler import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderConvertible import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.accessors.runtime.* ImportOrdering:WrapContentRow.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.Layout import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.ivy.design.l0_system.UI import com.ivy.core.data.model.Category import com.ivy.legacy.IvyWalletPreview InvalidPackageDeclaration:AccTrnsAct.kt$package com.ivy.wallet.domain.action.account diff --git a/config/detekt/config.yml b/config/detekt/config.yml index 4ed5b3d9d8..72758b1602 100644 --- a/config/detekt/config.yml +++ b/config/detekt/config.yml @@ -577,7 +577,7 @@ style: - reason: 'Kotlin does not support @Inherited annotation, see https://youtrack.jetbrains.com/issue/KT-22265' value: 'java.lang.annotation.Inherited' ForbiddenComment: - active: true + active: false comments: - reason: 'Forbidden FIXME todo marker in comment, please fix the problem.' value: 'FIXME:' @@ -883,7 +883,7 @@ formatting: autoCorrect: true indentSize: 4 ImportOrdering: - active: true + active: false autoCorrect: true layout: '*,java.**,javax.**,kotlin.**,^' Indentation: diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9e0b25a97b..9b90854d7a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -107,7 +107,6 @@ androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version timber = { module = "com.jakewharton.timber:timber", version = "5.0.1" } # Legacy -gson = { module = "com.google.code.gson:gson", version = "2.10.1" } # will be removed in favor of KotlinX serialization keval = { module = "com.notkamui.libs:keval", version = "0.9.0" } opencsv-csv = { module = "com.opencsv:opencsv", version = "5.8" } opencsv-apache-commons = { module = "org.apache.commons:commons-lang3", version = "3.13.0" } diff --git a/ivy-core-ui/build.gradle.kts b/ivy-core-ui/build.gradle.kts new file mode 100644 index 0000000000..bd5f0cbbaa --- /dev/null +++ b/ivy-core-ui/build.gradle.kts @@ -0,0 +1,14 @@ +plugins { + id("ivy.feature") +} + +android { + namespace = "com.ivy.core.ui" +} + +dependencies { + implementation(projects.ivyResources) + implementation(projects.ivyDesign) + implementation(projects.ivyCore) + implementation(projects.ivyNavigation) +} \ No newline at end of file diff --git a/ivy-core/build.gradle.kts b/ivy-core/build.gradle.kts index 12b3c21023..b53f3a3027 100644 --- a/ivy-core/build.gradle.kts +++ b/ivy-core/build.gradle.kts @@ -8,10 +8,9 @@ android { } dependencies { - implementation(projects.ivyDesign) - implementation(projects.ivyResources) + implementation(projects.ivyResources) // TODO: Get rid of + implementation(projects.ivyDesign) // TODO: Get rid of implementation(libs.datastore) implementation(libs.bundles.ktor) - implementation(libs.gson) } \ No newline at end of file diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/101.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/101.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/101.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/101.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/102.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/102.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/102.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/102.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/103.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/103.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/103.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/103.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/104.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/104.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/104.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/104.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/105.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/105.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/105.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/105.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/106.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/106.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/106.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/106.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/107.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/107.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/107.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/107.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/108.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/108.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/108.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/108.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/109.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/109.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/109.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/109.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/110.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/110.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/110.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/110.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/111.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/111.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/111.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/111.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/112.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/112.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/112.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/112.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/113.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/113.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/113.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/113.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/114.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/114.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/114.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/114.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/115.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/115.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/115.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/115.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/116.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/116.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/116.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/116.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/117.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/117.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/117.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/117.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/118.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/118.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/118.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/118.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/119.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/119.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/119.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/119.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/120.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/120.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/120.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/120.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/121.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/121.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/121.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/121.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/122.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/122.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/122.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/122.json diff --git a/ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/123.json b/ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/123.json similarity index 100% rename from ivy-core/schemas/com.ivy.core.data.db.IvyRoomDatabase/123.json rename to ivy-core/schemas/com.ivy.core.db.IvyRoomDatabase/123.json diff --git a/ivy-core/src/main/java/com/ivy/core/AppStarter.kt b/ivy-core/src/main/java/com/ivy/core/AppStarter.kt index 1325445701..00334363da 100644 --- a/ivy-core/src/main/java/com/ivy/core/AppStarter.kt +++ b/ivy-core/src/main/java/com/ivy/core/AppStarter.kt @@ -1,7 +1,7 @@ package com.ivy.core import android.content.Intent -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType /** * A component used to start the **RootActivity** without knowing about it. diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/Account.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/Account.kt similarity index 90% rename from ivy-core/src/main/java/com/ivy/core/data/model/Account.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/Account.kt index 3c3019d5ed..e16d182c19 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/Account.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/Account.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.compose.runtime.Immutable import androidx.compose.ui.graphics.toArgb import com.ivy.design.l0_system.Green -import com.ivy.core.data.db.entity.AccountEntity +import com.ivy.core.db.entity.AccountEntity import java.util.UUID @Immutable diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/Budget.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/Budget.kt similarity index 95% rename from ivy-core/src/main/java/com/ivy/core/data/model/Budget.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/Budget.kt index b10288274d..7ce5d9fca2 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/Budget.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/Budget.kt @@ -1,7 +1,7 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.compose.runtime.Immutable -import com.ivy.core.data.db.entity.BudgetEntity +import com.ivy.core.db.entity.BudgetEntity import com.ivy.core.util.stringRes import com.ivy.resources.R import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/Category.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/Category.kt similarity index 88% rename from ivy-core/src/main/java/com/ivy/core/data/model/Category.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/Category.kt index 504d1643bc..04fa4c8a0f 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/Category.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/Category.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.compose.runtime.Immutable import androidx.compose.ui.graphics.toArgb import com.ivy.design.l0_system.Ivy -import com.ivy.core.data.db.entity.CategoryEntity +import com.ivy.core.db.entity.CategoryEntity import java.util.UUID @Immutable diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/ExchangeRate.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/ExchangeRate.kt similarity index 78% rename from ivy-core/src/main/java/com/ivy/core/data/model/ExchangeRate.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/ExchangeRate.kt index 2caed0f41d..b6112fe96d 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/ExchangeRate.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/ExchangeRate.kt @@ -1,7 +1,7 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.compose.runtime.Immutable -import com.ivy.core.data.db.entity.ExchangeRateEntity +import com.ivy.core.db.entity.ExchangeRateEntity @Immutable data class ExchangeRate( diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/IntervalType.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/IntervalType.kt similarity index 96% rename from ivy-core/src/main/java/com/ivy/core/data/model/IntervalType.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/IntervalType.kt index 6f3533036d..a8be517284 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/IntervalType.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/IntervalType.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.annotation.Keep import com.ivy.core.util.stringRes diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/Loan.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/Loan.kt similarity index 92% rename from ivy-core/src/main/java/com/ivy/core/data/model/Loan.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/Loan.kt index eaafdfef6c..21816a5c33 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/Loan.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/Loan.kt @@ -1,7 +1,7 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.compose.runtime.Immutable -import com.ivy.core.data.db.entity.LoanEntity +import com.ivy.core.db.entity.LoanEntity import com.ivy.core.util.stringRes import com.ivy.resources.R import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/LoanRecord.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/LoanRecord.kt similarity index 91% rename from ivy-core/src/main/java/com/ivy/core/data/model/LoanRecord.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/LoanRecord.kt index 474b669a8e..c39ae0b2b2 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/LoanRecord.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/LoanRecord.kt @@ -1,7 +1,7 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.compose.runtime.Immutable -import com.ivy.core.data.db.entity.LoanRecordEntity +import com.ivy.core.db.entity.LoanRecordEntity import java.time.LocalDateTime import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/LoanType.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/LoanType.kt similarity index 71% rename from ivy-core/src/main/java/com/ivy/core/data/model/LoanType.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/LoanType.kt index 44fe248263..ddab8c5fff 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/LoanType.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/LoanType.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.annotation.Keep diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/PlannedPaymentRule.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/PlannedPaymentRule.kt similarity index 87% rename from ivy-core/src/main/java/com/ivy/core/data/model/PlannedPaymentRule.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/PlannedPaymentRule.kt index e54e1b07f2..e924b6749f 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/PlannedPaymentRule.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/PlannedPaymentRule.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.compose.runtime.Immutable -import com.ivy.core.data.db.entity.PlannedPaymentRuleEntity -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.PlannedPaymentRuleEntity +import com.ivy.core.db.entity.TransactionType import java.time.LocalDateTime import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/Settings.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/Settings.kt similarity index 86% rename from ivy-core/src/main/java/com/ivy/core/data/model/Settings.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/Settings.kt index 4452969af4..9ad1308d12 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/Settings.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/Settings.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.compose.runtime.Immutable import com.ivy.design.l0_system.Theme -import com.ivy.core.data.db.entity.SettingsEntity +import com.ivy.core.db.entity.SettingsEntity import java.math.BigDecimal import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/Transaction.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/Transaction.kt similarity index 92% rename from ivy-core/src/main/java/com/ivy/core/data/model/Transaction.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/Transaction.kt index 73350b30ce..45db597312 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/Transaction.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/Transaction.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.compose.runtime.Immutable -import com.ivy.core.data.db.entity.TransactionEntity -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionEntity +import com.ivy.core.db.entity.TransactionType import java.math.BigDecimal import java.time.LocalDateTime import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/model/TransactionHistoryItem.kt b/ivy-core/src/main/java/com/ivy/core/datamodel/TransactionHistoryItem.kt similarity index 73% rename from ivy-core/src/main/java/com/ivy/core/data/model/TransactionHistoryItem.kt rename to ivy-core/src/main/java/com/ivy/core/datamodel/TransactionHistoryItem.kt index b486c8d68c..ae25983f6e 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/model/TransactionHistoryItem.kt +++ b/ivy-core/src/main/java/com/ivy/core/datamodel/TransactionHistoryItem.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.model +package com.ivy.core.datamodel import androidx.compose.runtime.Immutable diff --git a/ivy-core/src/main/java/com/ivy/core/datastore/Datastore.kt b/ivy-core/src/main/java/com/ivy/core/datastore/Datastore.kt new file mode 100644 index 0000000000..0d00697489 --- /dev/null +++ b/ivy-core/src/main/java/com/ivy/core/datastore/Datastore.kt @@ -0,0 +1,10 @@ +package com.ivy.core.datastore + +import android.content.Context +import androidx.datastore.core.DataStore +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.preferencesDataStore + +val Context.dataStore: DataStore by preferencesDataStore( + name = "ivy_wallet_datastore_v1" +) diff --git a/ivy-core/src/main/java/com/ivy/core/data/IvyWalletDatastore.kt b/ivy-core/src/main/java/com/ivy/core/datastore/DatastoreKeys.kt similarity index 58% rename from ivy-core/src/main/java/com/ivy/core/data/IvyWalletDatastore.kt rename to ivy-core/src/main/java/com/ivy/core/datastore/DatastoreKeys.kt index 989d258c59..80cc185399 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/IvyWalletDatastore.kt +++ b/ivy-core/src/main/java/com/ivy/core/datastore/DatastoreKeys.kt @@ -1,15 +1,7 @@ -package com.ivy.core.data +package com.ivy.core.datastore -import android.content.Context -import androidx.datastore.core.DataStore -import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.longPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey -import androidx.datastore.preferences.preferencesDataStore - -val Context.dataStore: DataStore by preferencesDataStore( - name = "ivy_wallet_datastore_v1" -) object DatastoreKeys { val GITHUB_OWNER = stringPreferencesKey("github_backup_owner") @@ -17,4 +9,4 @@ object DatastoreKeys { val GITHUB_PAT = stringPreferencesKey("github_backup_pat") val GITHUB_LAST_BACKUP_EPOCH_SEC = longPreferencesKey("github_backup_last_backup_time_epoch_sec") -} +} \ No newline at end of file diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/IvyRoomDatabase.kt b/ivy-core/src/main/java/com/ivy/core/db/IvyRoomDatabase.kt similarity index 58% rename from ivy-core/src/main/java/com/ivy/core/data/db/IvyRoomDatabase.kt rename to ivy-core/src/main/java/com/ivy/core/db/IvyRoomDatabase.kt index a88f9f35f4..d5469d2d4e 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/IvyRoomDatabase.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/IvyRoomDatabase.kt @@ -1,54 +1,54 @@ -package com.ivy.core.data.db +package com.ivy.core.db import android.content.Context import androidx.room.* import androidx.room.migration.AutoMigrationSpec -import com.ivy.core.data.db.entity.AccountEntity -import com.ivy.core.data.db.entity.BudgetEntity -import com.ivy.core.data.db.entity.CategoryEntity -import com.ivy.core.data.db.entity.ExchangeRateEntity -import com.ivy.core.data.db.entity.LoanEntity -import com.ivy.core.data.db.entity.LoanRecordEntity -import com.ivy.core.data.db.entity.PlannedPaymentRuleEntity -import com.ivy.core.data.db.entity.SettingsEntity -import com.ivy.core.data.db.entity.TransactionEntity -import com.ivy.core.data.db.entity.UserEntity -import com.ivy.core.data.db.migration.Migration105to106_TrnRecurringRules -import com.ivy.core.data.db.migration.Migration106to107_Wishlist -import com.ivy.core.data.db.migration.Migration107to108_Sync -import com.ivy.core.data.db.migration.Migration108to109_Users -import com.ivy.core.data.db.migration.Migration109to110_PlannedPayments -import com.ivy.core.data.db.migration.Migration110to111_PlannedPaymentRule -import com.ivy.core.data.db.migration.Migration111to112_User_testUser -import com.ivy.core.data.db.migration.Migration112to113_ExchangeRates -import com.ivy.core.data.db.migration.Migration113to114_Multi_Currency -import com.ivy.core.data.db.migration.Migration114to115_Category_Account_Icons -import com.ivy.core.data.db.migration.Migration115to116_Account_Include_In_Balance -import com.ivy.core.data.db.migration.Migration116to117_SalteEdgeIntgration -import com.ivy.core.data.db.migration.Migration117to118_Budgets -import com.ivy.core.data.db.migration.Migration118to119_Loans -import com.ivy.core.data.db.migration.Migration119to120_LoanTransactions -import com.ivy.core.data.db.migration.Migration120to121_DropWishlistItem -import com.ivy.core.data.db.migration.Migration122to123_ExchangeRates -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.BudgetDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.read.ExchangeRatesDao -import com.ivy.core.data.db.read.LoanDao -import com.ivy.core.data.db.read.LoanRecordDao -import com.ivy.core.data.db.read.PlannedPaymentRuleDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.db.read.UserDao -import com.ivy.core.data.db.write.dao.WriteAccountDao -import com.ivy.core.data.db.write.dao.WriteBudgetDao -import com.ivy.core.data.db.write.dao.WriteCategoryDao -import com.ivy.core.data.db.write.dao.WriteExchangeRatesDao -import com.ivy.core.data.db.write.dao.WriteLoanDao -import com.ivy.core.data.db.write.dao.WriteLoanRecordDao -import com.ivy.core.data.db.write.dao.WritePlannedPaymentRuleDao -import com.ivy.core.data.db.write.dao.WriteSettingsDao -import com.ivy.core.data.db.write.dao.WriteTransactionDao +import com.ivy.core.db.entity.AccountEntity +import com.ivy.core.db.entity.BudgetEntity +import com.ivy.core.db.entity.CategoryEntity +import com.ivy.core.db.entity.ExchangeRateEntity +import com.ivy.core.db.entity.LoanEntity +import com.ivy.core.db.entity.LoanRecordEntity +import com.ivy.core.db.entity.PlannedPaymentRuleEntity +import com.ivy.core.db.entity.SettingsEntity +import com.ivy.core.db.entity.TransactionEntity +import com.ivy.core.db.entity.UserEntity +import com.ivy.core.db.migration.Migration105to106_TrnRecurringRules +import com.ivy.core.db.migration.Migration106to107_Wishlist +import com.ivy.core.db.migration.Migration107to108_Sync +import com.ivy.core.db.migration.Migration108to109_Users +import com.ivy.core.db.migration.Migration109to110_PlannedPayments +import com.ivy.core.db.migration.Migration110to111_PlannedPaymentRule +import com.ivy.core.db.migration.Migration111to112_User_testUser +import com.ivy.core.db.migration.Migration112to113_ExchangeRates +import com.ivy.core.db.migration.Migration113to114_Multi_Currency +import com.ivy.core.db.migration.Migration114to115_Category_Account_Icons +import com.ivy.core.db.migration.Migration115to116_Account_Include_In_Balance +import com.ivy.core.db.migration.Migration116to117_SalteEdgeIntgration +import com.ivy.core.db.migration.Migration117to118_Budgets +import com.ivy.core.db.migration.Migration118to119_Loans +import com.ivy.core.db.migration.Migration119to120_LoanTransactions +import com.ivy.core.db.migration.Migration120to121_DropWishlistItem +import com.ivy.core.db.migration.Migration122to123_ExchangeRates +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.BudgetDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.read.ExchangeRatesDao +import com.ivy.core.db.read.LoanDao +import com.ivy.core.db.read.LoanRecordDao +import com.ivy.core.db.read.PlannedPaymentRuleDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.db.read.UserDao +import com.ivy.core.db.write.dao.WriteAccountDao +import com.ivy.core.db.write.dao.WriteBudgetDao +import com.ivy.core.db.write.dao.WriteCategoryDao +import com.ivy.core.db.write.dao.WriteExchangeRatesDao +import com.ivy.core.db.write.dao.WriteLoanDao +import com.ivy.core.db.write.dao.WriteLoanRecordDao +import com.ivy.core.db.write.dao.WritePlannedPaymentRuleDao +import com.ivy.core.db.write.dao.WriteSettingsDao +import com.ivy.core.db.write.dao.WriteTransactionDao @Database( entities = [ diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/RoomTypeConverters.kt b/ivy-core/src/main/java/com/ivy/core/db/RoomTypeConverters.kt similarity index 89% rename from ivy-core/src/main/java/com/ivy/core/data/db/RoomTypeConverters.kt rename to ivy-core/src/main/java/com/ivy/core/db/RoomTypeConverters.kt index 88b5b048ce..17a9e889ba 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/RoomTypeConverters.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/RoomTypeConverters.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db +package com.ivy.core.db import androidx.room.TypeConverter -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.IntervalType -import com.ivy.core.data.model.LoanType +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.IntervalType +import com.ivy.core.datamodel.LoanType import com.ivy.core.util.epochMilliToDateTime import com.ivy.core.util.toEpochMilli import com.ivy.design.l0_system.Theme diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/AccountEntity.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/AccountEntity.kt similarity index 63% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/AccountEntity.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/AccountEntity.kt index bc97ffc129..8c1919e48b 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/AccountEntity.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/AccountEntity.kt @@ -1,37 +1,41 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.compose.ui.graphics.toArgb import androidx.room.Entity import androidx.room.PrimaryKey -import com.google.gson.annotations.SerializedName +import com.ivy.core.datamodel.Account +import com.ivy.core.kotlinxserilzation.KSerializerUUID import com.ivy.design.l0_system.Green -import com.ivy.core.data.model.Account +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable import java.util.* @Keep +@Serializable @Entity(tableName = "accounts") data class AccountEntity( - @SerializedName("name") + @SerialName("name") val name: String, - @SerializedName("currency") + @SerialName("currency") val currency: String? = null, - @SerializedName("color") + @SerialName("color") val color: Int = Green.toArgb(), - @SerializedName("icon") + @SerialName("icon") val icon: String? = null, - @SerializedName("orderNum") + @SerialName("orderNum") val orderNum: Double = 0.0, - @SerializedName("includeInBalance") + @SerialName("includeInBalance") val includeInBalance: Boolean = true, - @SerializedName("isSynced") + @SerialName("isSynced") val isSynced: Boolean = false, - @SerializedName("isDeleted") + @SerialName("isDeleted") val isDeleted: Boolean = false, @PrimaryKey - @SerializedName("id") + @SerialName("id") + @Serializable(with = KSerializerUUID::class) val id: UUID = UUID.randomUUID() ) { fun toDomain(): Account = Account( diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/BudgetEntity.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/BudgetEntity.kt similarity index 77% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/BudgetEntity.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/BudgetEntity.kt index db4b7fef52..7ba80dc8a8 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/BudgetEntity.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/BudgetEntity.kt @@ -1,34 +1,38 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.room.Entity import androidx.room.PrimaryKey -import com.google.gson.annotations.SerializedName -import com.ivy.core.data.model.Budget +import com.ivy.core.datamodel.Budget +import com.ivy.core.kotlinxserilzation.KSerializerUUID +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable import java.util.* @Keep +@Serializable @Entity(tableName = "budgets") data class BudgetEntity( - @SerializedName("name") + @SerialName("name") val name: String, - @SerializedName("amount") + @SerialName("amount") val amount: Double, - @SerializedName("categoryIdsSerialized") + @SerialName("categoryIdsSerialized") val categoryIdsSerialized: String?, - @SerializedName("accountIdsSerialized") + @SerialName("accountIdsSerialized") val accountIdsSerialized: String?, - @SerializedName("isSynced") + @SerialName("isSynced") val isSynced: Boolean = false, - @SerializedName("isDeleted") + @SerialName("isDeleted") val isDeleted: Boolean = false, - @SerializedName("orderId") + @SerialName("orderId") val orderId: Double, @PrimaryKey - @SerializedName("id") + @SerialName("id") + @Serializable(with = KSerializerUUID::class) val id: UUID = UUID.randomUUID() ) { fun toDomain(): Budget = Budget( diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/CategoryEntity.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/CategoryEntity.kt similarity index 61% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/CategoryEntity.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/CategoryEntity.kt index 450c1776da..9383424388 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/CategoryEntity.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/CategoryEntity.kt @@ -1,33 +1,37 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.compose.ui.graphics.toArgb import androidx.room.Entity import androidx.room.PrimaryKey -import com.google.gson.annotations.SerializedName +import com.ivy.core.datamodel.Category +import com.ivy.core.kotlinxserilzation.KSerializerUUID import com.ivy.design.l0_system.Ivy -import com.ivy.core.data.model.Category +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable import java.util.* @Keep +@Serializable @Entity(tableName = "categories") data class CategoryEntity( - @SerializedName("name") + @SerialName("name") val name: String, - @SerializedName("color") + @SerialName("color") val color: Int = Ivy.toArgb(), - @SerializedName("icon") + @SerialName("icon") val icon: String? = null, - @SerializedName("orderNum") + @SerialName("orderNum") val orderNum: Double = 0.0, - @SerializedName("isSynced") + @SerialName("isSynced") val isSynced: Boolean = false, - @SerializedName("isDeleted") + @SerialName("isDeleted") val isDeleted: Boolean = false, @PrimaryKey - @SerializedName("id") + @SerialName("id") + @Serializable(with = KSerializerUUID::class) val id: UUID = UUID.randomUUID() ) { fun toDomain(): Category = Category( diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/ExchangeRateEntity.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/ExchangeRateEntity.kt similarity index 60% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/ExchangeRateEntity.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/ExchangeRateEntity.kt index 0231ee77b2..eaa4c4d100 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/ExchangeRateEntity.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/ExchangeRateEntity.kt @@ -1,20 +1,22 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.room.Entity -import com.google.gson.annotations.SerializedName -import com.ivy.core.data.model.ExchangeRate +import com.ivy.core.datamodel.ExchangeRate +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable @Keep +@Serializable @Entity(tableName = "exchange_rates", primaryKeys = ["baseCurrency", "currency"]) data class ExchangeRateEntity( - @SerializedName("baseCurrency") + @SerialName("baseCurrency") val baseCurrency: String, - @SerializedName("currency") + @SerialName("currency") val currency: String, - @SerializedName("rate") + @SerialName("rate") val rate: Double, - @SerializedName("manualOverride") + @SerialName("manualOverride") val manualOverride: Boolean = false, ) { fun toDomain(): ExchangeRate = ExchangeRate( diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/LoanEntity.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/LoanEntity.kt similarity index 59% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/LoanEntity.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/LoanEntity.kt index 0bfa63eb2e..05387ff588 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/LoanEntity.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/LoanEntity.kt @@ -1,38 +1,43 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.room.Entity import androidx.room.PrimaryKey -import com.google.gson.annotations.SerializedName -import com.ivy.core.data.model.LoanType -import com.ivy.core.data.model.Loan +import com.ivy.core.datamodel.Loan +import com.ivy.core.datamodel.LoanType +import com.ivy.core.kotlinxserilzation.KSerializerUUID +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable import java.util.* @Keep +@Serializable @Entity(tableName = "loans") data class LoanEntity( - @SerializedName("name") + @SerialName("name") val name: String, - @SerializedName("amount") + @SerialName("amount") val amount: Double, - @SerializedName("type") + @SerialName("type") val type: LoanType, - @SerializedName("color") + @SerialName("color") val color: Int = 0, - @SerializedName("icon") + @SerialName("icon") val icon: String? = null, - @SerializedName("orderNum") + @SerialName("orderNum") val orderNum: Double = 0.0, - @SerializedName("accountId") + @SerialName("accountId") + @Serializable(with = KSerializerUUID::class) val accountId: UUID? = null, - @SerializedName("isSynced") + @SerialName("isSynced") val isSynced: Boolean = false, - @SerializedName("isDeleted") + @SerialName("isDeleted") val isDeleted: Boolean = false, @PrimaryKey - @SerializedName("id") + @SerialName("id") + @Serializable(with = KSerializerUUID::class) val id: UUID = UUID.randomUUID() ) { fun toDomain(): Loan = Loan( diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/LoanRecordEntity.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/LoanRecordEntity.kt similarity index 56% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/LoanRecordEntity.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/LoanRecordEntity.kt index 85ef8b8974..1f69bfc57e 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/LoanRecordEntity.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/LoanRecordEntity.kt @@ -1,39 +1,47 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.room.Entity import androidx.room.PrimaryKey -import com.google.gson.annotations.SerializedName -import com.ivy.core.data.model.LoanRecord +import com.ivy.core.datamodel.LoanRecord +import com.ivy.core.kotlinxserilzation.KSerializerLocalDateTime +import com.ivy.core.kotlinxserilzation.KSerializerUUID +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable import java.time.LocalDateTime import java.util.* @Keep +@Serializable @Entity(tableName = "loan_records") data class LoanRecordEntity( - @SerializedName("loanId") + @SerialName("loanId") + @Serializable(with = KSerializerUUID::class) val loanId: UUID, - @SerializedName("amount") + @SerialName("amount") val amount: Double, - @SerializedName("note") + @SerialName("note") val note: String? = null, - @SerializedName("dateTime") + @SerialName("dateTime") + @Serializable(with = KSerializerLocalDateTime::class) val dateTime: LocalDateTime, - @SerializedName("interest") + @SerialName("interest") val interest: Boolean = false, - @SerializedName("accountId") + @SerialName("accountId") + @Serializable(with = KSerializerUUID::class) val accountId: UUID? = null, // This is used store the converted amount for currencies which are different from the loan account currency - @SerializedName("convertedAmount") + @SerialName("convertedAmount") val convertedAmount: Double? = null, - @SerializedName("isSynced") + @SerialName("isSynced") val isSynced: Boolean = false, - @SerializedName("isDeleted") + @SerialName("isDeleted") val isDeleted: Boolean = false, @PrimaryKey - @SerializedName("id") + @SerialName("id") + @Serializable(with = KSerializerUUID::class) val id: UUID = UUID.randomUUID() ) { fun toDomain(): LoanRecord = LoanRecord( diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/PlannedPaymentRuleEntity.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/PlannedPaymentRuleEntity.kt similarity index 55% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/PlannedPaymentRuleEntity.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/PlannedPaymentRuleEntity.kt index cff6a9a83a..b4989f91ea 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/PlannedPaymentRuleEntity.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/PlannedPaymentRuleEntity.kt @@ -1,47 +1,53 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.room.Entity import androidx.room.PrimaryKey -import com.google.gson.annotations.SerializedName -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.IntervalType -import com.ivy.core.data.model.PlannedPaymentRule +import com.ivy.core.datamodel.IntervalType +import com.ivy.core.datamodel.PlannedPaymentRule +import com.ivy.core.kotlinxserilzation.KSerializerLocalDateTime +import com.ivy.core.kotlinxserilzation.KSerializerUUID +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable import java.time.LocalDateTime import java.util.* @Keep +@Serializable @Entity(tableName = "planned_payment_rules") data class PlannedPaymentRuleEntity( - @SerializedName("startDate") + @SerialName("startDate") + @Serializable(with = KSerializerLocalDateTime::class) val startDate: LocalDateTime?, - @SerializedName("intervalN") + @SerialName("intervalN") val intervalN: Int?, - @SerializedName("intervalType") + @SerialName("intervalType") val intervalType: IntervalType?, - @SerializedName("oneTime") + @SerialName("oneTime") val oneTime: Boolean, - - @SerializedName("type") + @SerialName("type") val type: TransactionType, - @SerializedName("accountId") + @SerialName("accountId") + @Serializable(with = KSerializerUUID::class) val accountId: UUID, - @SerializedName("amount") + @SerialName("amount") val amount: Double = 0.0, - @SerializedName("categoryId") + @SerialName("categoryId") + @Serializable(with = KSerializerUUID::class) val categoryId: UUID? = null, - @SerializedName("title") + @SerialName("title") val title: String? = null, - @SerializedName("description") + @SerialName("description") val description: String? = null, - @SerializedName("isSynced") + @SerialName("isSynced") val isSynced: Boolean = false, - @SerializedName("isDeleted") + @SerialName("isDeleted") val isDeleted: Boolean = false, @PrimaryKey - @SerializedName("id") + @SerialName("id") + @Serializable(with = KSerializerUUID::class) val id: UUID = UUID.randomUUID() ) { fun toDomain(): PlannedPaymentRule = PlannedPaymentRule( diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/SettingsEntity.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/SettingsEntity.kt similarity index 58% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/SettingsEntity.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/SettingsEntity.kt index 42990c41ce..60620fcc7a 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/SettingsEntity.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/SettingsEntity.kt @@ -1,32 +1,36 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.room.Entity import androidx.room.PrimaryKey -import com.google.gson.annotations.SerializedName +import com.ivy.core.datamodel.Settings +import com.ivy.core.kotlinxserilzation.KSerializerUUID import com.ivy.design.l0_system.Theme -import com.ivy.core.data.model.Settings +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable import java.util.* @Keep +@Serializable @Entity(tableName = "settings") data class SettingsEntity( - @SerializedName("theme") + @SerialName("theme") val theme: Theme, - @SerializedName("currency") + @SerialName("currency") val currency: String, - @SerializedName("bufferAmount") + @SerialName("bufferAmount") val bufferAmount: Double, - @SerializedName("name") + @SerialName("name") val name: String, - @SerializedName("isSynced") + @SerialName("isSynced") val isSynced: Boolean = false, - @SerializedName("isDeleted") + @SerialName("isDeleted") val isDeleted: Boolean = false, @PrimaryKey - @SerializedName("id") + @SerialName("id") + @Serializable(with = KSerializerUUID::class) val id: UUID = UUID.randomUUID() ) { fun toDomain(): Settings = Settings( diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/TransactionEntity.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/TransactionEntity.kt similarity index 60% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/TransactionEntity.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/TransactionEntity.kt index f92ef894c1..51beb61f9e 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/TransactionEntity.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/TransactionEntity.kt @@ -1,58 +1,66 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.room.Entity import androidx.room.PrimaryKey -import com.google.gson.annotations.SerializedName -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Transaction +import com.ivy.core.kotlinxserilzation.KSerializerLocalDateTime +import com.ivy.core.kotlinxserilzation.KSerializerUUID +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable import java.time.LocalDateTime import java.util.* @Keep +@Serializable @Entity(tableName = "transactions") data class TransactionEntity( - @SerializedName("accountId") + @SerialName("accountId") + @Serializable(with = KSerializerUUID::class) val accountId: UUID, - @SerializedName("type") + @SerialName("type") val type: TransactionType, - @SerializedName("amount") + @SerialName("amount") val amount: Double, - @SerializedName("toAccountId") + @SerialName("toAccountId") + @Serializable(with = KSerializerUUID::class) val toAccountId: UUID? = null, - @SerializedName("toAmount") + @SerialName("toAmount") val toAmount: Double? = null, - @SerializedName("title") + @SerialName("title") val title: String? = null, - @SerializedName("description") + @SerialName("description") val description: String? = null, - @SerializedName("dateTime") + @SerialName("dateTime") + @Serializable(with = KSerializerLocalDateTime::class) val dateTime: LocalDateTime? = null, - @SerializedName("categoryId") + @SerialName("categoryId") + @Serializable(with = KSerializerUUID::class) val categoryId: UUID? = null, - @SerializedName("dueDate") + @SerialName("dueDate") + @Serializable(with = KSerializerLocalDateTime::class) val dueDate: LocalDateTime? = null, - - @SerializedName("recurringRuleId") + @SerialName("recurringRuleId") + @Serializable(with = KSerializerUUID::class) val recurringRuleId: UUID? = null, - - @SerializedName("attachmentUrl") + @SerialName("attachmentUrl") val attachmentUrl: String? = null, - // This refers to the loan id that is linked with a transaction - @SerializedName("loanId") + @SerialName("loanId") + @Serializable(with = KSerializerUUID::class) val loanId: UUID? = null, - // This refers to the loan record id that is linked with a transaction - @SerializedName("loanRecordId") + @SerialName("loanRecordId") + @Serializable(with = KSerializerUUID::class) val loanRecordId: UUID? = null, - - @SerializedName("isSynced") + @SerialName("isSynced") val isSynced: Boolean = false, - @SerializedName("isDeleted") + @SerialName("isDeleted") val isDeleted: Boolean = false, @PrimaryKey - @SerializedName("id") + @SerialName("id") + @Serializable(with = KSerializerUUID::class) val id: UUID = UUID.randomUUID() ) { fun toDomain(): Transaction = Transaction( diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/TransactionType.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/TransactionType.kt similarity index 63% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/TransactionType.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/TransactionType.kt index edec7cfafc..9f40f09e99 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/TransactionType.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/TransactionType.kt @@ -1,10 +1,12 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.compose.runtime.Immutable +import kotlinx.serialization.Serializable @Immutable @Keep +@Serializable enum class TransactionType { INCOME, EXPENSE, TRANSFER } diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/entity/UserEntity.kt b/ivy-core/src/main/java/com/ivy/core/db/entity/UserEntity.kt similarity index 62% rename from ivy-core/src/main/java/com/ivy/core/data/db/entity/UserEntity.kt rename to ivy-core/src/main/java/com/ivy/core/db/entity/UserEntity.kt index 971c86098e..1f5b8681ae 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/entity/UserEntity.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/entity/UserEntity.kt @@ -1,41 +1,45 @@ -package com.ivy.core.data.db.entity +package com.ivy.core.db.entity import androidx.annotation.Keep import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -import com.google.gson.annotations.SerializedName +import com.ivy.core.kotlinxserilzation.KSerializerUUID +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable import java.util.* // TODO: Drop this database table @Keep +@Serializable @Entity(tableName = "users") data class UserEntity( - @SerializedName("email") + @SerialName("email") @ColumnInfo(name = "email") val email: String, - @SerializedName("authProviderType") + @SerialName("authProviderType") @ColumnInfo(name = "authProviderType") val authProviderType: String, - @SerializedName("firstName") + @SerialName("firstName") @ColumnInfo(name = "firstName") var firstName: String, - @SerializedName("lastName") + @SerialName("lastName") @ColumnInfo(name = "lastName") val lastName: String?, - @SerializedName("profilePicture") + @SerialName("profilePicture") @ColumnInfo(name = "profilePicture") val profilePicture: String?, - @SerializedName("color") + @SerialName("color") @ColumnInfo(name = "color") val color: Int, - @SerializedName("testUser") + @SerialName("testUser") @ColumnInfo(name = "testUser") val testUser: Boolean = false, @PrimaryKey - @SerializedName("id") + @SerialName("id") @ColumnInfo(name = "id") + @Serializable(with = KSerializerUUID::class) var id: UUID ) diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration105to106_TrnRecurringRules.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration105to106_TrnRecurringRules.kt similarity index 94% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration105to106_TrnRecurringRules.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration105to106_TrnRecurringRules.kt index a82193d66b..551e86b967 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration105to106_TrnRecurringRules.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration105to106_TrnRecurringRules.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration106to107_Wishlist.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration106to107_Wishlist.kt similarity index 93% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration106to107_Wishlist.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration106to107_Wishlist.kt index 5628e99d58..83ce701125 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration106to107_Wishlist.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration106to107_Wishlist.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration107to108_Sync.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration107to108_Sync.kt similarity index 94% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration107to108_Sync.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration107to108_Sync.kt index dd9fee771c..db2fdeec7b 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration107to108_Sync.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration107to108_Sync.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration108to109_Users.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration108to109_Users.kt similarity index 92% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration108to109_Users.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration108to109_Users.kt index 44f43673fa..2c921ec1f2 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration108to109_Users.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration108to109_Users.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration109to110_PlannedPayments.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration109to110_PlannedPayments.kt similarity index 96% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration109to110_PlannedPayments.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration109to110_PlannedPayments.kt index 07c3799145..166b5040ec 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration109to110_PlannedPayments.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration109to110_PlannedPayments.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration110to111_PlannedPaymentRule.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration110to111_PlannedPaymentRule.kt similarity index 94% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration110to111_PlannedPaymentRule.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration110to111_PlannedPaymentRule.kt index 34b2ac2980..5a57e41b78 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration110to111_PlannedPaymentRule.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration110to111_PlannedPaymentRule.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration111to112_User_testUser.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration111to112_User_testUser.kt similarity index 88% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration111to112_User_testUser.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration111to112_User_testUser.kt index daf842d178..d4a7785313 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration111to112_User_testUser.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration111to112_User_testUser.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration112to113_ExchangeRates.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration112to113_ExchangeRates.kt similarity index 91% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration112to113_ExchangeRates.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration112to113_ExchangeRates.kt index 2c64596e92..5d55465b61 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration112to113_ExchangeRates.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration112to113_ExchangeRates.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration113to114_Multi_Currency.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration113to114_Multi_Currency.kt similarity index 90% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration113to114_Multi_Currency.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration113to114_Multi_Currency.kt index dbd14cceab..b0c17fbfac 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration113to114_Multi_Currency.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration113to114_Multi_Currency.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration114to115_Category_Account_Icons.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration114to115_Category_Account_Icons.kt similarity index 90% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration114to115_Category_Account_Icons.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration114to115_Category_Account_Icons.kt index 5e60ea7ef2..e370eeb128 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration114to115_Category_Account_Icons.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration114to115_Category_Account_Icons.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration115to116_Account_Include_In_Balance.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration115to116_Account_Include_In_Balance.kt similarity index 89% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration115to116_Account_Include_In_Balance.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration115to116_Account_Include_In_Balance.kt index 4101f12bb0..3e9bf22457 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration115to116_Account_Include_In_Balance.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration115to116_Account_Include_In_Balance.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration116to117_SalteEdgeIntgration.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration116to117_SalteEdgeIntgration.kt similarity index 93% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration116to117_SalteEdgeIntgration.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration116to117_SalteEdgeIntgration.kt index 9c8613741a..d1a801d01e 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration116to117_SalteEdgeIntgration.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration116to117_SalteEdgeIntgration.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration117to118_Budgets.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration117to118_Budgets.kt similarity index 93% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration117to118_Budgets.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration117to118_Budgets.kt index c9d636fbf7..f89b3f426a 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration117to118_Budgets.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration117to118_Budgets.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration118to119_Loans.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration118to119_Loans.kt similarity index 96% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration118to119_Loans.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration118to119_Loans.kt index 14e17233db..6767eed084 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration118to119_Loans.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration118to119_Loans.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration119to120_LoanTransactions.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration119to120_LoanTransactions.kt similarity index 94% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration119to120_LoanTransactions.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration119to120_LoanTransactions.kt index 10c62f7c81..7ceaf2efcb 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration119to120_LoanTransactions.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration119to120_LoanTransactions.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration120to121_DropWishlistItem.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration120to121_DropWishlistItem.kt similarity index 87% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration120to121_DropWishlistItem.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration120to121_DropWishlistItem.kt index df0f05f49a..2e8fe52a4e 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration120to121_DropWishlistItem.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration120to121_DropWishlistItem.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration122to123_ExchangeRates.kt b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration122to123_ExchangeRates.kt similarity index 89% rename from ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration122to123_ExchangeRates.kt rename to ivy-core/src/main/java/com/ivy/core/db/migration/Migration122to123_ExchangeRates.kt index 499cadf068..fb2fc8574e 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/migration/Migration122to123_ExchangeRates.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/migration/Migration122to123_ExchangeRates.kt @@ -1,4 +1,4 @@ -package com.ivy.core.data.db.migration +package com.ivy.core.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/read/AccountDao.kt b/ivy-core/src/main/java/com/ivy/core/db/read/AccountDao.kt similarity index 89% rename from ivy-core/src/main/java/com/ivy/core/data/db/read/AccountDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/read/AccountDao.kt index f247708488..e844b86761 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/read/AccountDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/read/AccountDao.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.read +package com.ivy.core.db.read import androidx.room.Dao import androidx.room.Query -import com.ivy.core.data.db.entity.AccountEntity +import com.ivy.core.db.entity.AccountEntity import java.util.* @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/read/BudgetDao.kt b/ivy-core/src/main/java/com/ivy/core/db/read/BudgetDao.kt similarity index 88% rename from ivy-core/src/main/java/com/ivy/core/data/db/read/BudgetDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/read/BudgetDao.kt index 27f76af15d..0d54fcc882 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/read/BudgetDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/read/BudgetDao.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.read +package com.ivy.core.db.read import androidx.room.Dao import androidx.room.Query -import com.ivy.core.data.db.entity.BudgetEntity +import com.ivy.core.db.entity.BudgetEntity import java.util.* @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/read/CategoryDao.kt b/ivy-core/src/main/java/com/ivy/core/db/read/CategoryDao.kt similarity index 88% rename from ivy-core/src/main/java/com/ivy/core/data/db/read/CategoryDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/read/CategoryDao.kt index a3f900f661..6be57d42a6 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/read/CategoryDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/read/CategoryDao.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.read +package com.ivy.core.db.read import androidx.room.Dao import androidx.room.Query -import com.ivy.core.data.db.entity.CategoryEntity +import com.ivy.core.db.entity.CategoryEntity import java.util.* @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/read/ExchangeRatesDao.kt b/ivy-core/src/main/java/com/ivy/core/db/read/ExchangeRatesDao.kt similarity index 83% rename from ivy-core/src/main/java/com/ivy/core/data/db/read/ExchangeRatesDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/read/ExchangeRatesDao.kt index 3d593bee88..77f7243aa9 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/read/ExchangeRatesDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/read/ExchangeRatesDao.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.read +package com.ivy.core.db.read import androidx.room.Dao import androidx.room.Query -import com.ivy.core.data.db.entity.ExchangeRateEntity +import com.ivy.core.db.entity.ExchangeRateEntity import kotlinx.coroutines.flow.Flow @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/read/LoanDao.kt b/ivy-core/src/main/java/com/ivy/core/db/read/LoanDao.kt similarity index 88% rename from ivy-core/src/main/java/com/ivy/core/data/db/read/LoanDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/read/LoanDao.kt index 509171567d..82b55fbe61 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/read/LoanDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/read/LoanDao.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.read +package com.ivy.core.db.read import androidx.room.Dao import androidx.room.Query -import com.ivy.core.data.db.entity.LoanEntity +import com.ivy.core.db.entity.LoanEntity import java.util.* @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/read/LoanRecordDao.kt b/ivy-core/src/main/java/com/ivy/core/db/read/LoanRecordDao.kt similarity index 89% rename from ivy-core/src/main/java/com/ivy/core/data/db/read/LoanRecordDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/read/LoanRecordDao.kt index 4db235d840..50de4868cf 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/read/LoanRecordDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/read/LoanRecordDao.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.read +package com.ivy.core.db.read import androidx.room.Dao import androidx.room.Query -import com.ivy.core.data.db.entity.LoanRecordEntity +import com.ivy.core.db.entity.LoanRecordEntity import java.util.* @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/read/PlannedPaymentRuleDao.kt b/ivy-core/src/main/java/com/ivy/core/db/read/PlannedPaymentRuleDao.kt similarity index 91% rename from ivy-core/src/main/java/com/ivy/core/data/db/read/PlannedPaymentRuleDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/read/PlannedPaymentRuleDao.kt index 63b4f558cb..803b2aaaf0 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/read/PlannedPaymentRuleDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/read/PlannedPaymentRuleDao.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.read +package com.ivy.core.db.read import androidx.room.Dao import androidx.room.Query -import com.ivy.core.data.db.entity.PlannedPaymentRuleEntity +import com.ivy.core.db.entity.PlannedPaymentRuleEntity import java.util.* @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/read/SettingsDao.kt b/ivy-core/src/main/java/com/ivy/core/db/read/SettingsDao.kt similarity index 82% rename from ivy-core/src/main/java/com/ivy/core/data/db/read/SettingsDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/read/SettingsDao.kt index f5d14e44d1..91c9b38654 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/read/SettingsDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/read/SettingsDao.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.read +package com.ivy.core.db.read import androidx.room.Dao import androidx.room.Query -import com.ivy.core.data.db.entity.SettingsEntity +import com.ivy.core.db.entity.SettingsEntity import java.util.* @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/read/TransactionDao.kt b/ivy-core/src/main/java/com/ivy/core/db/read/TransactionDao.kt similarity index 98% rename from ivy-core/src/main/java/com/ivy/core/data/db/read/TransactionDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/read/TransactionDao.kt index aaa6c1921e..a1191ea71a 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/read/TransactionDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/read/TransactionDao.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db.read +package com.ivy.core.db.read import androidx.room.Dao import androidx.room.Query -import com.ivy.core.data.db.entity.TransactionEntity -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionEntity +import com.ivy.core.db.entity.TransactionType import java.time.LocalDateTime import java.util.* diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/read/UserDao.kt b/ivy-core/src/main/java/com/ivy/core/db/read/UserDao.kt similarity index 85% rename from ivy-core/src/main/java/com/ivy/core/data/db/read/UserDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/read/UserDao.kt index c03aa7526b..739b20e0fc 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/read/UserDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/read/UserDao.kt @@ -1,10 +1,10 @@ -package com.ivy.core.data.db.read +package com.ivy.core.db.read import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import com.ivy.core.data.db.entity.UserEntity +import com.ivy.core.db.entity.UserEntity import java.util.* @Deprecated("No longer needed, must be removed.") diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/AccountWriter.kt b/ivy-core/src/main/java/com/ivy/core/db/write/AccountWriter.kt similarity index 84% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/AccountWriter.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/AccountWriter.kt index 4f81290181..641b198878 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/AccountWriter.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/AccountWriter.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.write +package com.ivy.core.db.write import arrow.core.Either -import com.ivy.core.data.db.entity.AccountEntity -import com.ivy.core.data.db.write.dao.WriteAccountDao +import com.ivy.core.db.entity.AccountEntity +import com.ivy.core.db.write.dao.WriteAccountDao import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/BudgetWriter.kt b/ivy-core/src/main/java/com/ivy/core/db/write/BudgetWriter.kt similarity index 84% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/BudgetWriter.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/BudgetWriter.kt index a0a362522a..e4164bc40a 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/BudgetWriter.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/BudgetWriter.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.write +package com.ivy.core.db.write import arrow.core.Either -import com.ivy.core.data.db.entity.BudgetEntity -import com.ivy.core.data.db.write.dao.WriteBudgetDao +import com.ivy.core.db.entity.BudgetEntity +import com.ivy.core.db.write.dao.WriteBudgetDao import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/CategoryWriter.kt b/ivy-core/src/main/java/com/ivy/core/db/write/CategoryWriter.kt similarity index 84% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/CategoryWriter.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/CategoryWriter.kt index 1d98d3ff81..cd75789dec 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/CategoryWriter.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/CategoryWriter.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.write +package com.ivy.core.db.write import arrow.core.Either -import com.ivy.core.data.db.entity.CategoryEntity -import com.ivy.core.data.db.write.dao.WriteCategoryDao +import com.ivy.core.db.entity.CategoryEntity +import com.ivy.core.db.write.dao.WriteCategoryDao import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/ExchangeRatesWriter.kt b/ivy-core/src/main/java/com/ivy/core/db/write/ExchangeRatesWriter.kt similarity index 85% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/ExchangeRatesWriter.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/ExchangeRatesWriter.kt index 60c1511570..d80c661100 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/ExchangeRatesWriter.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/ExchangeRatesWriter.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.write +package com.ivy.core.db.write import arrow.core.Either -import com.ivy.core.data.db.entity.ExchangeRateEntity -import com.ivy.core.data.db.write.dao.WriteExchangeRatesDao +import com.ivy.core.db.entity.ExchangeRateEntity +import com.ivy.core.db.write.dao.WriteExchangeRatesDao import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import javax.inject.Inject diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/LoanRecordWriter.kt b/ivy-core/src/main/java/com/ivy/core/db/write/LoanRecordWriter.kt similarity index 84% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/LoanRecordWriter.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/LoanRecordWriter.kt index a7e8635b44..2d0fbcbca4 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/LoanRecordWriter.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/LoanRecordWriter.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.write +package com.ivy.core.db.write import arrow.core.Either -import com.ivy.core.data.db.entity.LoanRecordEntity -import com.ivy.core.data.db.write.dao.WriteLoanRecordDao +import com.ivy.core.db.entity.LoanRecordEntity +import com.ivy.core.db.write.dao.WriteLoanRecordDao import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/LoanWriter.kt b/ivy-core/src/main/java/com/ivy/core/db/write/LoanWriter.kt similarity index 84% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/LoanWriter.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/LoanWriter.kt index 16e7a9bee2..7fe2f5af99 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/LoanWriter.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/LoanWriter.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.write +package com.ivy.core.db.write import arrow.core.Either -import com.ivy.core.data.db.entity.LoanEntity -import com.ivy.core.data.db.write.dao.WriteLoanDao +import com.ivy.core.db.entity.LoanEntity +import com.ivy.core.db.write.dao.WriteLoanDao import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/PlannedPaymentRuleWriter.kt b/ivy-core/src/main/java/com/ivy/core/db/write/PlannedPaymentRuleWriter.kt similarity index 85% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/PlannedPaymentRuleWriter.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/PlannedPaymentRuleWriter.kt index b01303be14..0063de3975 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/PlannedPaymentRuleWriter.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/PlannedPaymentRuleWriter.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.write +package com.ivy.core.db.write import arrow.core.Either -import com.ivy.core.data.db.entity.PlannedPaymentRuleEntity -import com.ivy.core.data.db.write.dao.WritePlannedPaymentRuleDao +import com.ivy.core.db.entity.PlannedPaymentRuleEntity +import com.ivy.core.db.write.dao.WritePlannedPaymentRuleDao import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/SettingsWriter.kt b/ivy-core/src/main/java/com/ivy/core/db/write/SettingsWriter.kt similarity index 83% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/SettingsWriter.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/SettingsWriter.kt index ea248e6275..9d217f0f80 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/SettingsWriter.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/SettingsWriter.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.write +package com.ivy.core.db.write import arrow.core.Either -import com.ivy.core.data.db.entity.SettingsEntity -import com.ivy.core.data.db.write.dao.WriteSettingsDao +import com.ivy.core.db.entity.SettingsEntity +import com.ivy.core.db.write.dao.WriteSettingsDao import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import javax.inject.Inject diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/TransactionWriter.kt b/ivy-core/src/main/java/com/ivy/core/db/write/TransactionWriter.kt similarity index 88% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/TransactionWriter.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/TransactionWriter.kt index 862573bedf..40a2657cb5 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/TransactionWriter.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/TransactionWriter.kt @@ -1,8 +1,8 @@ -package com.ivy.core.data.db.write +package com.ivy.core.db.write import arrow.core.Either -import com.ivy.core.data.db.entity.TransactionEntity -import com.ivy.core.data.db.write.dao.WriteTransactionDao +import com.ivy.core.db.entity.TransactionEntity +import com.ivy.core.db.write.dao.WriteTransactionDao import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.util.UUID diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteAccountDao.kt b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteAccountDao.kt similarity index 85% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteAccountDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteAccountDao.kt index 84ed7da809..74596aa42e 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteAccountDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteAccountDao.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db.write.dao +package com.ivy.core.db.write.dao import androidx.room.Dao import androidx.room.Query import androidx.room.Upsert -import com.ivy.core.data.db.entity.AccountEntity +import com.ivy.core.db.entity.AccountEntity import java.util.UUID @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteBudgetDao.kt b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteBudgetDao.kt similarity index 85% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteBudgetDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteBudgetDao.kt index c41cca7d92..b7cc976be3 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteBudgetDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteBudgetDao.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db.write.dao +package com.ivy.core.db.write.dao import androidx.room.Dao import androidx.room.Query import androidx.room.Upsert -import com.ivy.core.data.db.entity.BudgetEntity +import com.ivy.core.db.entity.BudgetEntity import java.util.UUID @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteCategoryDao.kt b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteCategoryDao.kt similarity index 85% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteCategoryDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteCategoryDao.kt index faf2697f77..8a531ba76e 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteCategoryDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteCategoryDao.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db.write.dao +package com.ivy.core.db.write.dao import androidx.room.Dao import androidx.room.Query import androidx.room.Upsert -import com.ivy.core.data.db.entity.CategoryEntity +import com.ivy.core.db.entity.CategoryEntity import java.util.UUID @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteExchangeRatesDao.kt b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteExchangeRatesDao.kt similarity index 85% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteExchangeRatesDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteExchangeRatesDao.kt index 9057e265b2..184b8b1fd7 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteExchangeRatesDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteExchangeRatesDao.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db.write.dao +package com.ivy.core.db.write.dao import androidx.room.Dao import androidx.room.Query import androidx.room.Upsert -import com.ivy.core.data.db.entity.ExchangeRateEntity +import com.ivy.core.db.entity.ExchangeRateEntity @Dao interface WriteExchangeRatesDao { diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteLoanDao.kt b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteLoanDao.kt similarity index 85% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteLoanDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteLoanDao.kt index 2064ba9195..f9648bb753 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteLoanDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteLoanDao.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db.write.dao +package com.ivy.core.db.write.dao import androidx.room.Dao import androidx.room.Query import androidx.room.Upsert -import com.ivy.core.data.db.entity.LoanEntity +import com.ivy.core.db.entity.LoanEntity import java.util.UUID @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteLoanRecordDao.kt b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteLoanRecordDao.kt similarity index 85% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteLoanRecordDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteLoanRecordDao.kt index e982e8bf75..6c492f1def 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteLoanRecordDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteLoanRecordDao.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db.write.dao +package com.ivy.core.db.write.dao import androidx.room.Dao import androidx.room.Query import androidx.room.Upsert -import com.ivy.core.data.db.entity.LoanRecordEntity +import com.ivy.core.db.entity.LoanRecordEntity import java.util.UUID @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WritePlannedPaymentRuleDao.kt b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WritePlannedPaymentRuleDao.kt similarity index 88% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WritePlannedPaymentRuleDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/dao/WritePlannedPaymentRuleDao.kt index d2ae36ba82..be29ba199a 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WritePlannedPaymentRuleDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WritePlannedPaymentRuleDao.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db.write.dao +package com.ivy.core.db.write.dao import androidx.room.Dao import androidx.room.Query import androidx.room.Upsert -import com.ivy.core.data.db.entity.PlannedPaymentRuleEntity +import com.ivy.core.db.entity.PlannedPaymentRuleEntity import java.util.UUID @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteSettingsDao.kt b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteSettingsDao.kt similarity index 82% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteSettingsDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteSettingsDao.kt index a44d9a194d..9f569edc3a 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteSettingsDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteSettingsDao.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db.write.dao +package com.ivy.core.db.write.dao import androidx.room.Dao import androidx.room.Query import androidx.room.Upsert -import com.ivy.core.data.db.entity.SettingsEntity +import com.ivy.core.db.entity.SettingsEntity import java.util.UUID @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteTransactionDao.kt b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteTransactionDao.kt similarity index 92% rename from ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteTransactionDao.kt rename to ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteTransactionDao.kt index 2882e5581a..bec1351f11 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/db/write/dao/WriteTransactionDao.kt +++ b/ivy-core/src/main/java/com/ivy/core/db/write/dao/WriteTransactionDao.kt @@ -1,9 +1,9 @@ -package com.ivy.core.data.db.write.dao +package com.ivy.core.db.write.dao import androidx.room.Dao import androidx.room.Query import androidx.room.Upsert -import com.ivy.core.data.db.entity.TransactionEntity +import com.ivy.core.db.entity.TransactionEntity import java.util.UUID @Dao diff --git a/ivy-core/src/main/java/com/ivy/core/di/IvyCoreBindingsModule.kt b/ivy-core/src/main/java/com/ivy/core/di/IvyCoreBindingsModule.kt new file mode 100644 index 0000000000..cd8a2d6764 --- /dev/null +++ b/ivy-core/src/main/java/com/ivy/core/di/IvyCoreBindingsModule.kt @@ -0,0 +1,15 @@ +package com.ivy.core.di + +import com.ivy.core.features.Features +import com.ivy.core.features.IvyFeatures +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + +@Module +@InstallIn(SingletonComponent::class) +abstract class IvyCoreBindingsModule { + @Binds + abstract fun bindFeatures(features: IvyFeatures): Features +} \ No newline at end of file diff --git a/ivy-core/src/main/java/com/ivy/core/di/KotlinxSerializationModule.kt b/ivy-core/src/main/java/com/ivy/core/di/KotlinxSerializationModule.kt new file mode 100644 index 0000000000..951ea0a295 --- /dev/null +++ b/ivy-core/src/main/java/com/ivy/core/di/KotlinxSerializationModule.kt @@ -0,0 +1,19 @@ +package com.ivy.core.di + +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import kotlinx.serialization.json.Json + +@Module +@InstallIn(SingletonComponent::class) +object KotlinxSerializationModule { + @Provides + fun provideJson(): Json { + return Json { + ignoreUnknownKeys = true + isLenient = true + } + } +} \ No newline at end of file diff --git a/ivy-core/src/main/java/com/ivy/core/di/KtorClientModule.kt b/ivy-core/src/main/java/com/ivy/core/di/KtorClientModule.kt index ba5814d608..8e0da0c156 100644 --- a/ivy-core/src/main/java/com/ivy/core/di/KtorClientModule.kt +++ b/ivy-core/src/main/java/com/ivy/core/di/KtorClientModule.kt @@ -19,15 +19,12 @@ import javax.inject.Singleton object KtorClientModule { @Provides @Singleton - fun provideKtorClient(): HttpClient { + fun provideKtorClient( + json: Json + ): HttpClient { return HttpClient { install(ContentNegotiation) { - json( - json = Json { - ignoreUnknownKeys = true - isLenient = true - } - ) + json(json) } install(Logging) { diff --git a/ivy-core/src/main/java/com/ivy/core/di/RoomDbModule.kt b/ivy-core/src/main/java/com/ivy/core/di/RoomDbModule.kt index 4572e45951..a692d1c400 100644 --- a/ivy-core/src/main/java/com/ivy/core/di/RoomDbModule.kt +++ b/ivy-core/src/main/java/com/ivy/core/di/RoomDbModule.kt @@ -1,26 +1,26 @@ package com.ivy.core.di import android.content.Context -import com.ivy.core.data.db.IvyRoomDatabase -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.BudgetDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.read.ExchangeRatesDao -import com.ivy.core.data.db.read.LoanDao -import com.ivy.core.data.db.read.LoanRecordDao -import com.ivy.core.data.db.read.PlannedPaymentRuleDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.db.read.UserDao -import com.ivy.core.data.db.write.dao.WriteAccountDao -import com.ivy.core.data.db.write.dao.WriteBudgetDao -import com.ivy.core.data.db.write.dao.WriteCategoryDao -import com.ivy.core.data.db.write.dao.WriteExchangeRatesDao -import com.ivy.core.data.db.write.dao.WriteLoanDao -import com.ivy.core.data.db.write.dao.WriteLoanRecordDao -import com.ivy.core.data.db.write.dao.WritePlannedPaymentRuleDao -import com.ivy.core.data.db.write.dao.WriteSettingsDao -import com.ivy.core.data.db.write.dao.WriteTransactionDao +import com.ivy.core.db.IvyRoomDatabase +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.BudgetDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.read.ExchangeRatesDao +import com.ivy.core.db.read.LoanDao +import com.ivy.core.db.read.LoanRecordDao +import com.ivy.core.db.read.PlannedPaymentRuleDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.db.read.UserDao +import com.ivy.core.db.write.dao.WriteAccountDao +import com.ivy.core.db.write.dao.WriteBudgetDao +import com.ivy.core.db.write.dao.WriteCategoryDao +import com.ivy.core.db.write.dao.WriteExchangeRatesDao +import com.ivy.core.db.write.dao.WriteLoanDao +import com.ivy.core.db.write.dao.WriteLoanRecordDao +import com.ivy.core.db.write.dao.WritePlannedPaymentRuleDao +import com.ivy.core.db.write.dao.WriteSettingsDao +import com.ivy.core.db.write.dao.WriteTransactionDao import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/ivy-core/src/main/java/com/ivy/core/features/BoolFeature.kt b/ivy-core/src/main/java/com/ivy/core/features/BoolFeature.kt new file mode 100644 index 0000000000..e4a7efb679 --- /dev/null +++ b/ivy-core/src/main/java/com/ivy/core/features/BoolFeature.kt @@ -0,0 +1,44 @@ +package com.ivy.core.features + +import android.content.Context +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalContext +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.core.booleanPreferencesKey +import androidx.datastore.preferences.core.edit +import com.ivy.core.datastore.dataStore +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + +@Immutable +class BoolFeature( + val key: String, + val name: String? = null, + val description: String? = null, +) { + fun enabled(appContext: Context): Flow { + return appContext.dataStore.data.map { + it[featureKey] + } + } + + @Composable + fun asState(defaultValue: Boolean = false): Boolean { + val context = LocalContext.current + val featureFlag = remember { enabled(context) } + .collectAsState(defaultValue).value + return featureFlag ?: defaultValue + } + + suspend fun set(appContext: Context, enabled: Boolean) { + appContext.dataStore.edit { + it[featureKey] = enabled + } + } + + private val featureKey: Preferences.Key + get() = booleanPreferencesKey("feature_$key") +} \ No newline at end of file diff --git a/ivy-core/src/main/java/com/ivy/core/features/Features.kt b/ivy-core/src/main/java/com/ivy/core/features/Features.kt new file mode 100644 index 0000000000..d674898573 --- /dev/null +++ b/ivy-core/src/main/java/com/ivy/core/features/Features.kt @@ -0,0 +1,8 @@ +package com.ivy.core.features + +interface Features { + val homeV2: BoolFeature + val compactTransactions: BoolFeature + + val allFeatures: List +} \ No newline at end of file diff --git a/ivy-core/src/main/java/com/ivy/core/features/IvyFeatures.kt b/ivy-core/src/main/java/com/ivy/core/features/IvyFeatures.kt new file mode 100644 index 0000000000..3a3096722e --- /dev/null +++ b/ivy-core/src/main/java/com/ivy/core/features/IvyFeatures.kt @@ -0,0 +1,25 @@ +package com.ivy.core.features + +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class IvyFeatures @Inject constructor() : Features { + override val homeV2 = BoolFeature( + key = "home_v2", + name = "Home screen v2", + description = "Activate the new Home screen." + ) + override val compactTransactions = BoolFeature( + key = "compact_transaction", + name = "Compact transactions", + description = "Smaller transactions cards" + + " so you can fit more on your screen." + ) + + override val allFeatures: List + get() = listOf( + homeV2, + compactTransactions, + ) +} \ No newline at end of file diff --git a/ivy-core/src/main/java/com/ivy/core/kotlinxserilzation/KSerializerLocalDateTime.kt b/ivy-core/src/main/java/com/ivy/core/kotlinxserilzation/KSerializerLocalDateTime.kt new file mode 100644 index 0000000000..95045f7ca6 --- /dev/null +++ b/ivy-core/src/main/java/com/ivy/core/kotlinxserilzation/KSerializerLocalDateTime.kt @@ -0,0 +1,28 @@ +package com.ivy.core.kotlinxserilzation + +import androidx.annotation.Keep +import com.ivy.core.util.epochMilliToDateTime +import com.ivy.core.util.toEpochMilli +import kotlinx.serialization.KSerializer +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import java.time.LocalDateTime + +// TODO: Migrate to Instant +@Keep +object KSerializerLocalDateTime : KSerializer { + override val descriptor = PrimitiveSerialDescriptor( + "LocalDateTime", + PrimitiveKind.LONG + ) + + override fun deserialize(decoder: Decoder): LocalDateTime { + return decoder.decodeLong().epochMilliToDateTime() + } + + override fun serialize(encoder: Encoder, value: LocalDateTime) { + encoder.encodeLong(value.toEpochMilli()) + } +} diff --git a/ivy-core/src/main/java/com/ivy/core/data/network/kotlinxserilzation/UUIDSerializer.kt b/ivy-core/src/main/java/com/ivy/core/kotlinxserilzation/KSerializerUUID.kt similarity index 82% rename from ivy-core/src/main/java/com/ivy/core/data/network/kotlinxserilzation/UUIDSerializer.kt rename to ivy-core/src/main/java/com/ivy/core/kotlinxserilzation/KSerializerUUID.kt index 2c40214c9d..5ec4a36e87 100644 --- a/ivy-core/src/main/java/com/ivy/core/data/network/kotlinxserilzation/UUIDSerializer.kt +++ b/ivy-core/src/main/java/com/ivy/core/kotlinxserilzation/KSerializerUUID.kt @@ -1,5 +1,6 @@ -package com.ivy.core.data.network.kotlinxserilzation +package com.ivy.core.kotlinxserilzation +import androidx.annotation.Keep import kotlinx.serialization.KSerializer import kotlinx.serialization.descriptors.PrimitiveKind import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor @@ -7,7 +8,8 @@ import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder import java.util.UUID -object UUIDSerializer : KSerializer { +@Keep +object KSerializerUUID : KSerializer { override val descriptor = PrimitiveSerialDescriptor("UUID", PrimitiveKind.STRING) override fun deserialize(decoder: Decoder): UUID { diff --git a/ivy-navigation/src/main/java/com/ivy/navigation/Screens.kt b/ivy-navigation/src/main/java/com/ivy/navigation/Screens.kt index 84d68d2dd3..b59e06d901 100644 --- a/ivy-navigation/src/main/java/com/ivy/navigation/Screens.kt +++ b/ivy-navigation/src/main/java/com/ivy/navigation/Screens.kt @@ -1,7 +1,7 @@ package com.ivy.navigation -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Transaction import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import java.util.UUID @@ -80,4 +80,6 @@ data class LoanDetailsScreen( data object TestScreen : Screen -data object ExchangeRatesScreen : Screen \ No newline at end of file +data object ExchangeRatesScreen : Screen + +data object FeaturesScreen : Screen \ No newline at end of file diff --git a/screen-accounts/src/main/java/com/ivy/accounts/AccountsEvent.kt b/screen-accounts/src/main/java/com/ivy/accounts/AccountsEvent.kt index 82446e3949..3af619b388 100644 --- a/screen-accounts/src/main/java/com/ivy/accounts/AccountsEvent.kt +++ b/screen-accounts/src/main/java/com/ivy/accounts/AccountsEvent.kt @@ -1,7 +1,6 @@ package com.ivy.accounts -import com.ivy.legacy.data.model.AccountData -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account sealed class AccountsEvent { data class OnReorder(val reorderedList: List) : AccountsEvent() diff --git a/screen-accounts/src/main/java/com/ivy/accounts/AccountsTab.kt b/screen-accounts/src/main/java/com/ivy/accounts/AccountsTab.kt index b1d0df2af6..b4ce2c6ef3 100644 --- a/screen-accounts/src/main/java/com/ivy/accounts/AccountsTab.kt +++ b/screen-accounts/src/main/java/com/ivy/accounts/AccountsTab.kt @@ -32,7 +32,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation diff --git a/screen-accounts/src/main/java/com/ivy/accounts/AccountsViewModel.kt b/screen-accounts/src/main/java/com/ivy/accounts/AccountsViewModel.kt index 83f4cb4102..3afc885cb5 100644 --- a/screen-accounts/src/main/java/com/ivy/accounts/AccountsViewModel.kt +++ b/screen-accounts/src/main/java/com/ivy/accounts/AccountsViewModel.kt @@ -1,8 +1,8 @@ package com.ivy.accounts import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.write.AccountWriter -import com.ivy.core.data.model.Account +import com.ivy.core.db.write.AccountWriter +import com.ivy.core.datamodel.Account import com.ivy.core.event.AccountUpdatedEvent import com.ivy.core.event.EventBus import com.ivy.frp.test.TestIdlingResource diff --git a/screen-budgets/src/main/java/com/ivy/budgets/BudgetScreen.kt b/screen-budgets/src/main/java/com/ivy/budgets/BudgetScreen.kt index db96ecdc49..4bf6e6fd1c 100644 --- a/screen-budgets/src/main/java/com/ivy/budgets/BudgetScreen.kt +++ b/screen-budgets/src/main/java/com/ivy/budgets/BudgetScreen.kt @@ -29,9 +29,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.ivy.budgets.model.DisplayBudget -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Budget -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Budget +import com.ivy.core.datamodel.Category import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation diff --git a/screen-budgets/src/main/java/com/ivy/budgets/BudgetViewModel.kt b/screen-budgets/src/main/java/com/ivy/budgets/BudgetViewModel.kt index aa97da202d..367e5dd4e7 100644 --- a/screen-budgets/src/main/java/com/ivy/budgets/BudgetViewModel.kt +++ b/screen-budgets/src/main/java/com/ivy/budgets/BudgetViewModel.kt @@ -3,12 +3,12 @@ package com.ivy.budgets import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.budgets.model.DisplayBudget -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.write.BudgetWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Budget -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.write.BudgetWriter +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Budget +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction import com.ivy.frp.sumOfSuspend import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.data.SharedPrefs diff --git a/screen-budgets/src/main/java/com/ivy/budgets/model/DisplayBudget.kt b/screen-budgets/src/main/java/com/ivy/budgets/model/DisplayBudget.kt index deafc37334..fd75e9c1af 100644 --- a/screen-budgets/src/main/java/com/ivy/budgets/model/DisplayBudget.kt +++ b/screen-budgets/src/main/java/com/ivy/budgets/model/DisplayBudget.kt @@ -1,7 +1,7 @@ package com.ivy.budgets.model import com.ivy.wallet.domain.data.Reorderable -import com.ivy.core.data.model.Budget +import com.ivy.core.datamodel.Budget data class DisplayBudget( val budget: Budget, diff --git a/screen-categories/src/main/java/com/ivy/categories/CategoriesScreen.kt b/screen-categories/src/main/java/com/ivy/categories/CategoriesScreen.kt index 01c8e0d447..f9eebca2d4 100644 --- a/screen-categories/src/main/java/com/ivy/categories/CategoriesScreen.kt +++ b/screen-categories/src/main/java/com/ivy/categories/CategoriesScreen.kt @@ -47,7 +47,7 @@ import com.ivy.navigation.CategoriesScreen import com.ivy.navigation.ItemStatisticScreen import com.ivy.resources.R import com.ivy.wallet.domain.data.SortOrder -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Category import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.Green diff --git a/screen-categories/src/main/java/com/ivy/categories/CategoriesViewModel.kt b/screen-categories/src/main/java/com/ivy/categories/CategoriesViewModel.kt index 9041a5d5ed..f179936470 100644 --- a/screen-categories/src/main/java/com/ivy/categories/CategoriesViewModel.kt +++ b/screen-categories/src/main/java/com/ivy/categories/CategoriesViewModel.kt @@ -1,9 +1,9 @@ package com.ivy.categories import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.write.CategoryWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.write.CategoryWriter +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.thenMap import com.ivy.frp.test.TestIdlingResource import com.ivy.frp.thenInvokeAfter diff --git a/screen-categories/src/main/java/com/ivy/categories/CategoryData.kt b/screen-categories/src/main/java/com/ivy/categories/CategoryData.kt index 1e0b25c268..37d2b4df0a 100644 --- a/screen-categories/src/main/java/com/ivy/categories/CategoryData.kt +++ b/screen-categories/src/main/java/com/ivy/categories/CategoryData.kt @@ -1,7 +1,7 @@ package com.ivy.categories import com.ivy.wallet.domain.data.Reorderable -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Category data class CategoryData( val category: Category, diff --git a/screen-exchange-rates/src/main/java/com/ivy/exchangerates/ExchangeRatesViewModel.kt b/screen-exchange-rates/src/main/java/com/ivy/exchangerates/ExchangeRatesViewModel.kt index 48c14cc748..4c2e0643bd 100644 --- a/screen-exchange-rates/src/main/java/com/ivy/exchangerates/ExchangeRatesViewModel.kt +++ b/screen-exchange-rates/src/main/java/com/ivy/exchangerates/ExchangeRatesViewModel.kt @@ -2,9 +2,9 @@ package com.ivy.exchangerates import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.entity.ExchangeRateEntity -import com.ivy.core.data.db.read.ExchangeRatesDao -import com.ivy.core.data.db.write.ExchangeRatesWriter +import com.ivy.core.db.entity.ExchangeRateEntity +import com.ivy.core.db.read.ExchangeRatesDao +import com.ivy.core.db.write.ExchangeRatesWriter import com.ivy.exchangerates.data.RateUi import com.ivy.legacy.domain.action.exchange.SyncExchangeRatesAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct diff --git a/screen-features/build.gradle.kts b/screen-features/build.gradle.kts new file mode 100644 index 0000000000..b63fc774a2 --- /dev/null +++ b/screen-features/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + id("ivy.feature") +} + +android { + namespace = "com.ivy.features" +} + +dependencies { + implementation(projects.ivyCore) + implementation(projects.ivyResources) + implementation(projects.ivyDesign) + implementation(projects.ivyNavigation) + implementation(projects.ivyCoreUi) +} \ No newline at end of file diff --git a/screen-features/src/main/java/com/ivy/features/FeaturesScreen.kt b/screen-features/src/main/java/com/ivy/features/FeaturesScreen.kt new file mode 100644 index 0000000000..ebfd49de09 --- /dev/null +++ b/screen-features/src/main/java/com/ivy/features/FeaturesScreen.kt @@ -0,0 +1,8 @@ +package com.ivy.features + +import androidx.compose.runtime.Composable + +@Composable +fun FeaturesScreenImpl() { + // TODO: Not implemented +} \ No newline at end of file diff --git a/screen-home/src/main/java/com/ivy/home/HomeEvent.kt b/screen-home/src/main/java/com/ivy/home/HomeEvent.kt index 4361b9c598..9eb3cb2df2 100644 --- a/screen-home/src/main/java/com/ivy/home/HomeEvent.kt +++ b/screen-home/src/main/java/com/ivy/home/HomeEvent.kt @@ -2,7 +2,7 @@ package com.ivy.home import com.ivy.legacy.data.model.TimePeriod import com.ivy.home.customerjourney.CustomerJourneyCardModel -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Transaction sealed class HomeEvent { data object Start : HomeEvent() diff --git a/screen-home/src/main/java/com/ivy/home/HomeHeader.kt b/screen-home/src/main/java/com/ivy/home/HomeHeader.kt index 55d0d9213c..ab1e10421e 100644 --- a/screen-home/src/main/java/com/ivy/home/HomeHeader.kt +++ b/screen-home/src/main/java/com/ivy/home/HomeHeader.kt @@ -29,7 +29,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.legacy.data.model.TimePeriod diff --git a/screen-home/src/main/java/com/ivy/home/HomeMoreMenu.kt b/screen-home/src/main/java/com/ivy/home/HomeMoreMenu.kt index 630a92d814..eb0bd91b39 100644 --- a/screen-home/src/main/java/com/ivy/home/HomeMoreMenu.kt +++ b/screen-home/src/main/java/com/ivy/home/HomeMoreMenu.kt @@ -46,7 +46,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex -import com.ivy.core.Constants +import com.ivy.legacy.Constants import com.ivy.design.l0_system.Theme import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style diff --git a/screen-home/src/main/java/com/ivy/home/HomeState.kt b/screen-home/src/main/java/com/ivy/home/HomeState.kt index 0c7e43df7b..99960bff5e 100644 --- a/screen-home/src/main/java/com/ivy/home/HomeState.kt +++ b/screen-home/src/main/java/com/ivy/home/HomeState.kt @@ -1,7 +1,7 @@ package com.ivy.home import androidx.compose.runtime.Immutable -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.design.l0_system.Theme import com.ivy.home.customerjourney.CustomerJourneyCardModel import com.ivy.legacy.IvyWalletCtx diff --git a/screen-home/src/main/java/com/ivy/home/HomeTab.kt b/screen-home/src/main/java/com/ivy/home/HomeTab.kt index f3554f3a78..6d9bf6f8e6 100644 --- a/screen-home/src/main/java/com/ivy/home/HomeTab.kt +++ b/screen-home/src/main/java/com/ivy/home/HomeTab.kt @@ -28,8 +28,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import com.ivy.core.data.model.Transaction -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.datamodel.Transaction +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.core.util.stringRes import com.ivy.frp.asParamTo2 import com.ivy.frp.forward diff --git a/screen-home/src/main/java/com/ivy/home/HomeViewModel.kt b/screen-home/src/main/java/com/ivy/home/HomeViewModel.kt index 768c15d71d..53b0212f4c 100644 --- a/screen-home/src/main/java/com/ivy/home/HomeViewModel.kt +++ b/screen-home/src/main/java/com/ivy/home/HomeViewModel.kt @@ -1,8 +1,8 @@ package com.ivy.home -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Settings -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Settings +import com.ivy.core.datamodel.Transaction import com.ivy.design.l0_system.Theme import com.ivy.frp.fixUnit import com.ivy.frp.then diff --git a/screen-home/src/main/java/com/ivy/home/customerjourney/CustomerJourneyCardsProvider.kt b/screen-home/src/main/java/com/ivy/home/customerjourney/CustomerJourneyCardsProvider.kt index 7280ecc6e1..062ad24f68 100644 --- a/screen-home/src/main/java/com/ivy/home/customerjourney/CustomerJourneyCardsProvider.kt +++ b/screen-home/src/main/java/com/ivy/home/customerjourney/CustomerJourneyCardsProvider.kt @@ -1,9 +1,9 @@ package com.ivy.home.customerjourney -import com.ivy.core.Constants -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.PlannedPaymentRuleDao -import com.ivy.core.data.db.read.TransactionDao +import com.ivy.legacy.Constants +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.PlannedPaymentRuleDao +import com.ivy.core.db.read.TransactionDao import com.ivy.core.util.stringRes import com.ivy.design.l0_system.Blue import com.ivy.design.l0_system.Blue3 diff --git a/screen-import-data/src/main/java/com/ivy/importdata/csv/domain/CSVImporterV2.kt b/screen-import-data/src/main/java/com/ivy/importdata/csv/domain/CSVImporterV2.kt index d95effb051..527ee4fb10 100644 --- a/screen-import-data/src/main/java/com/ivy/importdata/csv/domain/CSVImporterV2.kt +++ b/screen-import-data/src/main/java/com/ivy/importdata/csv/domain/CSVImporterV2.kt @@ -1,16 +1,16 @@ package com.ivy.importdata.csv.domain import androidx.compose.ui.graphics.toArgb -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.write.AccountWriter -import com.ivy.core.data.db.write.CategoryWriter -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.write.AccountWriter +import com.ivy.core.db.write.CategoryWriter +import com.ivy.core.db.write.TransactionWriter import com.ivy.design.IVY_COLOR_PICKER_COLORS_FREE import com.ivy.importdata.csv.ImportantFields import com.ivy.importdata.csv.OptionalFields diff --git a/screen-import-data/src/main/java/com/ivy/importdata/csv/domain/ParseFields.kt b/screen-import-data/src/main/java/com/ivy/importdata/csv/domain/ParseFields.kt index d074eb3dba..b4e684247f 100644 --- a/screen-import-data/src/main/java/com/ivy/importdata/csv/domain/ParseFields.kt +++ b/screen-import-data/src/main/java/com/ivy/importdata/csv/domain/ParseFields.kt @@ -1,6 +1,6 @@ package com.ivy.importdata.csv.domain -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType import com.ivy.importdata.csv.CSVRow import com.ivy.importdata.csv.ColumnMapping import com.ivy.importdata.csv.DateMetadata diff --git a/screen-loans/src/main/java/com/ivy/loans/loan/LoanViewModel.kt b/screen-loans/src/main/java/com/ivy/loans/loan/LoanViewModel.kt index 84d43e2e7c..a74afe895c 100644 --- a/screen-loans/src/main/java/com/ivy/loans/loan/LoanViewModel.kt +++ b/screen-loans/src/main/java/com/ivy/loans/loan/LoanViewModel.kt @@ -2,11 +2,11 @@ package com.ivy.loans.loan import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.read.LoanRecordDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.write.LoanWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Loan +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Loan +import com.ivy.core.db.read.LoanRecordDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.write.LoanWriter import com.ivy.core.event.AccountUpdatedEvent import com.ivy.core.event.EventBus import com.ivy.frp.test.TestIdlingResource diff --git a/screen-loans/src/main/java/com/ivy/loans/loan/LoansScreen.kt b/screen-loans/src/main/java/com/ivy/loans/loan/LoansScreen.kt index 78fcdfa1bf..bcf125be12 100644 --- a/screen-loans/src/main/java/com/ivy/loans/loan/LoansScreen.kt +++ b/screen-loans/src/main/java/com/ivy/loans/loan/LoansScreen.kt @@ -33,16 +33,18 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel -import com.ivy.legacy.IvyWalletPreview +import com.ivy.core.datamodel.Loan +import com.ivy.core.datamodel.LoanType import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style -import com.ivy.navigation.navigation +import com.ivy.legacy.IvyWalletPreview +import com.ivy.legacy.utils.getDefaultFIATCurrency +import com.ivy.legacy.utils.onScreenStart +import com.ivy.loans.loan.data.DisplayLoan import com.ivy.navigation.LoanDetailsScreen import com.ivy.navigation.LoansScreen +import com.ivy.navigation.navigation import com.ivy.resources.R -import com.ivy.core.data.model.LoanType -import com.ivy.core.data.model.Loan -import com.ivy.loans.loan.data.DisplayLoan import com.ivy.wallet.ui.theme.Blue import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Orange @@ -57,8 +59,6 @@ import com.ivy.wallet.ui.theme.dynamicContrast import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.modal.LoanModal import com.ivy.wallet.ui.theme.toComposeColor -import com.ivy.legacy.utils.getDefaultFIATCurrency -import com.ivy.legacy.utils.onScreenStart @Composable fun BoxWithConstraintsScope.LoansScreen(screen: LoansScreen) { diff --git a/screen-loans/src/main/java/com/ivy/loans/loan/data/DisplayLoan.kt b/screen-loans/src/main/java/com/ivy/loans/loan/data/DisplayLoan.kt index 9fd8054c00..a3907d5a57 100644 --- a/screen-loans/src/main/java/com/ivy/loans/loan/data/DisplayLoan.kt +++ b/screen-loans/src/main/java/com/ivy/loans/loan/data/DisplayLoan.kt @@ -1,8 +1,8 @@ package com.ivy.loans.loan.data -import com.ivy.wallet.domain.data.Reorderable -import com.ivy.core.data.model.Loan +import com.ivy.core.datamodel.Loan import com.ivy.legacy.utils.getDefaultFIATCurrency +import com.ivy.wallet.domain.data.Reorderable data class DisplayLoan( val loan: Loan, diff --git a/screen-loans/src/main/java/com/ivy/loans/loan/data/DisplayLoanRecord.kt b/screen-loans/src/main/java/com/ivy/loans/loan/data/DisplayLoanRecord.kt index 29e20a76a0..0662a14829 100644 --- a/screen-loans/src/main/java/com/ivy/loans/loan/data/DisplayLoanRecord.kt +++ b/screen-loans/src/main/java/com/ivy/loans/loan/data/DisplayLoanRecord.kt @@ -1,7 +1,7 @@ package com.ivy.loans.loan.data -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.LoanRecord +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.LoanRecord data class DisplayLoanRecord( val loanRecord: LoanRecord, diff --git a/screen-loans/src/main/java/com/ivy/loans/loandetails/LoanDetailsScreen.kt b/screen-loans/src/main/java/com/ivy/loans/loandetails/LoanDetailsScreen.kt index d017bdd9c0..829f3b9e1d 100644 --- a/screen-loans/src/main/java/com/ivy/loans/loandetails/LoanDetailsScreen.kt +++ b/screen-loans/src/main/java/com/ivy/loans/loandetails/LoanDetailsScreen.kt @@ -37,14 +37,13 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Loan -import com.ivy.core.data.model.LoanRecord -import com.ivy.core.data.model.LoanType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Loan +import com.ivy.core.datamodel.LoanRecord +import com.ivy.core.datamodel.LoanType +import com.ivy.core.db.entity.TransactionType import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style -import com.ivy.navigation.navigation import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ui.component.ItemStatisticToolbar import com.ivy.legacy.ui.component.transaction.TypeAmountCurrency @@ -59,6 +58,7 @@ import com.ivy.legacy.utils.timeNowUTC import com.ivy.loans.loan.data.DisplayLoanRecord import com.ivy.navigation.ItemStatisticScreen import com.ivy.navigation.LoanDetailsScreen +import com.ivy.navigation.navigation import com.ivy.resources.R import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData diff --git a/screen-loans/src/main/java/com/ivy/loans/loandetails/LoanDetailsViewModel.kt b/screen-loans/src/main/java/com/ivy/loans/loandetails/LoanDetailsViewModel.kt index d710a9015a..7746634209 100644 --- a/screen-loans/src/main/java/com/ivy/loans/loandetails/LoanDetailsViewModel.kt +++ b/screen-loans/src/main/java/com/ivy/loans/loandetails/LoanDetailsViewModel.kt @@ -2,15 +2,15 @@ package com.ivy.loans.loandetails import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.LoanDao -import com.ivy.core.data.db.read.LoanRecordDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Loan -import com.ivy.core.data.model.LoanRecord -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Loan +import com.ivy.core.datamodel.LoanRecord +import com.ivy.core.datamodel.Transaction +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.LoanDao +import com.ivy.core.db.read.LoanRecordDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.read.TransactionDao import com.ivy.core.event.AccountUpdatedEvent import com.ivy.core.event.EventBus import com.ivy.frp.test.TestIdlingResource diff --git a/screen-onboarding/src/main/java/com/ivy/onboarding/OnboardingScreen.kt b/screen-onboarding/src/main/java/com/ivy/onboarding/OnboardingScreen.kt index 312583eae0..3ab00e5e9f 100644 --- a/screen-onboarding/src/main/java/com/ivy/onboarding/OnboardingScreen.kt +++ b/screen-onboarding/src/main/java/com/ivy/onboarding/OnboardingScreen.kt @@ -18,8 +18,8 @@ import com.ivy.onboarding.steps.OnboardingSplashLogin import com.ivy.onboarding.steps.OnboardingType import com.ivy.onboarding.viewmodel.OnboardingViewModel import com.ivy.wallet.domain.data.IvyCurrency -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.legacy.utils.OpResult diff --git a/screen-onboarding/src/main/java/com/ivy/onboarding/components/Suggestions.kt b/screen-onboarding/src/main/java/com/ivy/onboarding/components/Suggestions.kt index 5dc801571b..62b70649ff 100644 --- a/screen-onboarding/src/main/java/com/ivy/onboarding/components/Suggestions.kt +++ b/screen-onboarding/src/main/java/com/ivy/onboarding/components/Suggestions.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.legacy.IvyWalletComponentPreview diff --git a/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingAccounts.kt b/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingAccounts.kt index c107b2ab45..78fdfc8c21 100644 --- a/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingAccounts.kt +++ b/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingAccounts.kt @@ -33,7 +33,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation diff --git a/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingCategories.kt b/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingCategories.kt index 9e17d2ce3b..97c830d326 100644 --- a/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingCategories.kt +++ b/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingCategories.kt @@ -41,7 +41,7 @@ import com.ivy.onboarding.components.OnboardingProgressSlider import com.ivy.onboarding.components.OnboardingToolbar import com.ivy.onboarding.components.Suggestions import com.ivy.resources.R -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.Green diff --git a/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingSplashLogin.kt b/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingSplashLogin.kt index 4cc8a77199..af0a3b767d 100644 --- a/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingSplashLogin.kt +++ b/screen-onboarding/src/main/java/com/ivy/onboarding/steps/OnboardingSplashLogin.kt @@ -43,7 +43,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.ivy.core.Constants +import com.ivy.legacy.Constants import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ivyWalletCtx diff --git a/screen-onboarding/src/main/java/com/ivy/onboarding/steps/archived/OnboardingPrivacyTC.kt b/screen-onboarding/src/main/java/com/ivy/onboarding/steps/archived/OnboardingPrivacyTC.kt index 2497d22796..98437e1127 100644 --- a/screen-onboarding/src/main/java/com/ivy/onboarding/steps/archived/OnboardingPrivacyTC.kt +++ b/screen-onboarding/src/main/java/com/ivy/onboarding/steps/archived/OnboardingPrivacyTC.kt @@ -37,7 +37,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.ivy.core.Constants +import com.ivy.legacy.Constants import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ivyWalletCtx import com.ivy.legacy.rootScreen diff --git a/screen-onboarding/src/main/java/com/ivy/onboarding/viewmodel/OnboardingRouter.kt b/screen-onboarding/src/main/java/com/ivy/onboarding/viewmodel/OnboardingRouter.kt index 93e20bbef2..5933508099 100644 --- a/screen-onboarding/src/main/java/com/ivy/onboarding/viewmodel/OnboardingRouter.kt +++ b/screen-onboarding/src/main/java/com/ivy/onboarding/viewmodel/OnboardingRouter.kt @@ -1,9 +1,9 @@ package com.ivy.onboarding.viewmodel import androidx.lifecycle.MutableLiveData -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.model.Category +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.datamodel.Category import com.ivy.legacy.LogoutLogic import com.ivy.legacy.data.SharedPrefs import com.ivy.legacy.data.model.AccountBalance diff --git a/screen-onboarding/src/main/java/com/ivy/onboarding/viewmodel/OnboardingViewModel.kt b/screen-onboarding/src/main/java/com/ivy/onboarding/viewmodel/OnboardingViewModel.kt index 7e61215477..1e5f6383ba 100644 --- a/screen-onboarding/src/main/java/com/ivy/onboarding/viewmodel/OnboardingViewModel.kt +++ b/screen-onboarding/src/main/java/com/ivy/onboarding/viewmodel/OnboardingViewModel.kt @@ -3,13 +3,13 @@ package com.ivy.onboarding.viewmodel import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.write.SettingsWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Settings +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.write.SettingsWriter +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Settings import com.ivy.design.l0_system.Theme import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.IvyWalletCtx diff --git a/screen-piechart/src/main/java/com/ivy/piechart/CategoryAmount.kt b/screen-piechart/src/main/java/com/ivy/piechart/CategoryAmount.kt index 447649a445..47ad531638 100644 --- a/screen-piechart/src/main/java/com/ivy/piechart/CategoryAmount.kt +++ b/screen-piechart/src/main/java/com/ivy/piechart/CategoryAmount.kt @@ -1,7 +1,7 @@ package com.ivy.piechart -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction data class CategoryAmount( val category: Category?, diff --git a/screen-piechart/src/main/java/com/ivy/piechart/PieChart.kt b/screen-piechart/src/main/java/com/ivy/piechart/PieChart.kt index 53437e1831..438c25bbf2 100644 --- a/screen-piechart/src/main/java/com/ivy/piechart/PieChart.kt +++ b/screen-piechart/src/main/java/com/ivy/piechart/PieChart.kt @@ -19,8 +19,8 @@ import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Category +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Category import com.ivy.core.util.toEpochMilli import com.ivy.design.l0_system.UI import com.ivy.legacy.utils.drawColoredShadow diff --git a/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticBottomBar.kt b/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticBottomBar.kt index 54fa25dc2f..9c29b4844c 100644 --- a/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticBottomBar.kt +++ b/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticBottomBar.kt @@ -12,7 +12,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.legacy.utils.navigationBarInset diff --git a/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticScreen.kt b/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticScreen.kt index e827a305b9..e32b933086 100644 --- a/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticScreen.kt +++ b/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticScreen.kt @@ -39,8 +39,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Category +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Category import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.navigation.navigation diff --git a/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticViewModel.kt b/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticViewModel.kt index 3e2abce1d8..45ef2d0a79 100644 --- a/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticViewModel.kt +++ b/screen-piechart/src/main/java/com/ivy/piechart/PieChartStatisticViewModel.kt @@ -1,10 +1,10 @@ package com.ivy.piechart import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction import com.ivy.frp.viewmodel.FRPViewModel import com.ivy.legacy.IvyWalletCtx import com.ivy.legacy.data.SharedPrefs diff --git a/screen-piechart/src/main/java/com/ivy/piechart/SelectedCategory.kt b/screen-piechart/src/main/java/com/ivy/piechart/SelectedCategory.kt index 40adf9bcad..68aaf35f9d 100644 --- a/screen-piechart/src/main/java/com/ivy/piechart/SelectedCategory.kt +++ b/screen-piechart/src/main/java/com/ivy/piechart/SelectedCategory.kt @@ -1,6 +1,6 @@ package com.ivy.piechart -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Category data class SelectedCategory( val category: Category? // null - Unspecified diff --git a/screen-piechart/src/main/java/com/ivy/piechart/action/PieChartAct.kt b/screen-piechart/src/main/java/com/ivy/piechart/action/PieChartAct.kt index 2fa30661fe..a6559458b9 100644 --- a/screen-piechart/src/main/java/com/ivy/piechart/action/PieChartAct.kt +++ b/screen-piechart/src/main/java/com/ivy/piechart/action/PieChartAct.kt @@ -1,10 +1,10 @@ package com.ivy.piechart.action import androidx.compose.ui.graphics.toArgb -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction import com.ivy.core.util.stringRes import com.ivy.design.l0_system.RedLight import com.ivy.frp.Pure diff --git a/screen-planned-payments/src/main/java/com/ivy/planned/edit/EditPlannedScreen.kt b/screen-planned-payments/src/main/java/com/ivy/planned/edit/EditPlannedScreen.kt index f366c3c973..66806bc2da 100644 --- a/screen-planned-payments/src/main/java/com/ivy/planned/edit/EditPlannedScreen.kt +++ b/screen-planned-payments/src/main/java/com/ivy/planned/edit/EditPlannedScreen.kt @@ -24,13 +24,14 @@ import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.IntervalType +import com.ivy.core.db.entity.TransactionType import com.ivy.legacy.IvyWalletPreview +import com.ivy.legacy.utils.onScreenStart import com.ivy.navigation.EditPlannedScreen import com.ivy.resources.R -import com.ivy.core.data.model.IntervalType -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.ui.edit.core.Category @@ -49,7 +50,6 @@ import com.ivy.wallet.ui.theme.modal.edit.CategoryModal import com.ivy.wallet.ui.theme.modal.edit.CategoryModalData import com.ivy.wallet.ui.theme.modal.edit.ChooseCategoryModal import com.ivy.wallet.ui.theme.modal.edit.DescriptionModal -import com.ivy.legacy.utils.onScreenStart import java.time.LocalDateTime @ExperimentalFoundationApi diff --git a/screen-planned-payments/src/main/java/com/ivy/planned/edit/EditPlannedViewModel.kt b/screen-planned-payments/src/main/java/com/ivy/planned/edit/EditPlannedViewModel.kt index 8d61f5c1de..a74b111e0c 100644 --- a/screen-planned-payments/src/main/java/com/ivy/planned/edit/EditPlannedViewModel.kt +++ b/screen-planned-payments/src/main/java/com/ivy/planned/edit/EditPlannedViewModel.kt @@ -3,17 +3,17 @@ package com.ivy.planned.edit import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.read.PlannedPaymentRuleDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.write.PlannedPaymentRuleWriter -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.IntervalType -import com.ivy.core.data.model.PlannedPaymentRule +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.IntervalType +import com.ivy.core.datamodel.PlannedPaymentRule +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.read.PlannedPaymentRuleDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.write.PlannedPaymentRuleWriter +import com.ivy.core.db.write.TransactionWriter import com.ivy.core.event.AccountUpdatedEvent import com.ivy.core.event.EventBus import com.ivy.frp.test.TestIdlingResource diff --git a/screen-planned-payments/src/main/java/com/ivy/planned/edit/RecurringRule.kt b/screen-planned-payments/src/main/java/com/ivy/planned/edit/RecurringRule.kt index 1921bccf60..af6d618011 100644 --- a/screen-planned-payments/src/main/java/com/ivy/planned/edit/RecurringRule.kt +++ b/screen-planned-payments/src/main/java/com/ivy/planned/edit/RecurringRule.kt @@ -18,17 +18,17 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.ivy.legacy.IvyWalletComponentPreview +import com.ivy.core.datamodel.IntervalType import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style +import com.ivy.legacy.IvyWalletComponentPreview +import com.ivy.legacy.utils.formatDateOnly +import com.ivy.legacy.utils.timeNowUTC +import com.ivy.legacy.utils.uppercaseLocal import com.ivy.resources.R -import com.ivy.core.data.model.IntervalType import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.components.AddPrimaryAttributeButton import com.ivy.wallet.ui.theme.components.IvyIcon -import com.ivy.legacy.utils.formatDateOnly -import com.ivy.legacy.utils.timeNowUTC -import com.ivy.legacy.utils.uppercaseLocal import java.time.LocalDateTime @Composable diff --git a/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentCard.kt b/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentCard.kt index d2ecd7ff33..19cd7f063d 100644 --- a/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentCard.kt +++ b/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentCard.kt @@ -24,18 +24,23 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.ivy.legacy.IvyWalletPreview +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.IntervalType +import com.ivy.core.datamodel.PlannedPaymentRule +import com.ivy.core.db.entity.TransactionType import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style -import com.ivy.navigation.navigation +import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.ui.component.transaction.TypeAmountCurrency +import com.ivy.legacy.utils.formatDateOnly +import com.ivy.legacy.utils.formatDateOnlyWithYear +import com.ivy.legacy.utils.isNotNullOrBlank +import com.ivy.legacy.utils.timeNowUTC +import com.ivy.legacy.utils.uppercaseLocal import com.ivy.navigation.ItemStatisticScreen +import com.ivy.navigation.navigation import com.ivy.resources.R -import com.ivy.core.data.model.IntervalType -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Orange import com.ivy.wallet.ui.theme.components.IvyButton @@ -43,11 +48,6 @@ import com.ivy.wallet.ui.theme.components.IvyIcon import com.ivy.wallet.ui.theme.components.getCustomIconIdS import com.ivy.wallet.ui.theme.findContrastTextColor import com.ivy.wallet.ui.theme.toComposeColor -import com.ivy.legacy.utils.formatDateOnly -import com.ivy.legacy.utils.formatDateOnlyWithYear -import com.ivy.legacy.utils.isNotNullOrBlank -import com.ivy.legacy.utils.timeNowUTC -import com.ivy.legacy.utils.uppercaseLocal import java.time.LocalDateTime @Composable diff --git a/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsLazyColumn.kt b/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsLazyColumn.kt index 7d270d84ac..8fbc1b4051 100644 --- a/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsLazyColumn.kt +++ b/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsLazyColumn.kt @@ -25,9 +25,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.PlannedPaymentRule +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.PlannedPaymentRule import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.legacy.ui.component.transaction.SectionDivider diff --git a/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsScreen.kt b/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsScreen.kt index 9e10d46fc8..2a11f3affb 100644 --- a/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsScreen.kt +++ b/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsScreen.kt @@ -15,21 +15,21 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import com.ivy.legacy.IvyWalletPreview +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.IntervalType +import com.ivy.core.datamodel.PlannedPaymentRule +import com.ivy.core.db.entity.TransactionType import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style -import com.ivy.navigation.navigation +import com.ivy.legacy.IvyWalletPreview +import com.ivy.legacy.utils.onScreenStart +import com.ivy.legacy.utils.timeNowUTC import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.PlannedPaymentsScreen +import com.ivy.navigation.navigation import com.ivy.resources.R -import com.ivy.core.data.model.IntervalType -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.PlannedPaymentRule import com.ivy.wallet.ui.theme.Orange -import com.ivy.legacy.utils.onScreenStart -import com.ivy.legacy.utils.timeNowUTC @Composable fun BoxWithConstraintsScope.PlannedPaymentsScreen(screen: PlannedPaymentsScreen) { diff --git a/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsViewModel.kt b/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsViewModel.kt index 5f55c9f57a..5bf3bcb961 100644 --- a/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsViewModel.kt +++ b/screen-planned-payments/src/main/java/com/ivy/planned/list/PlannedPaymentsViewModel.kt @@ -3,12 +3,12 @@ package com.ivy.planned.list import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.PlannedPaymentRule +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.PlannedPaymentRule +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.read.SettingsDao import com.ivy.frp.test.TestIdlingResource import com.ivy.legacy.utils.asLiveData import com.ivy.legacy.utils.ioThread diff --git a/screen-reports/src/main/java/com/ivy/reports/FilterOverlay.kt b/screen-reports/src/main/java/com/ivy/reports/FilterOverlay.kt index 920f55be8b..f9dccadf75 100644 --- a/screen-reports/src/main/java/com/ivy/reports/FilterOverlay.kt +++ b/screen-reports/src/main/java/com/ivy/reports/FilterOverlay.kt @@ -40,9 +40,9 @@ import com.ivy.core.legacy.ui.theme.components.ListItem import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category import com.ivy.wallet.ui.theme.GradientGreen import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.GreenDark diff --git a/screen-reports/src/main/java/com/ivy/reports/ReportFilter.kt b/screen-reports/src/main/java/com/ivy/reports/ReportFilter.kt index 308c8ed063..3fefa30c56 100644 --- a/screen-reports/src/main/java/com/ivy/reports/ReportFilter.kt +++ b/screen-reports/src/main/java/com/ivy/reports/ReportFilter.kt @@ -1,9 +1,9 @@ package com.ivy.reports import com.ivy.legacy.data.model.TimePeriod -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category import java.util.UUID data class ReportFilter( diff --git a/screen-reports/src/main/java/com/ivy/reports/ReportScreen.kt b/screen-reports/src/main/java/com/ivy/reports/ReportScreen.kt index 2b2114ee02..568d0690ec 100644 --- a/screen-reports/src/main/java/com/ivy/reports/ReportScreen.kt +++ b/screen-reports/src/main/java/com/ivy/reports/ReportScreen.kt @@ -28,9 +28,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.lifecycle.viewmodel.compose.viewModel -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category import com.ivy.core.util.stringRes import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style diff --git a/screen-reports/src/main/java/com/ivy/reports/ReportScreenEvent.kt b/screen-reports/src/main/java/com/ivy/reports/ReportScreenEvent.kt index a58de6db16..6b8e4a196b 100644 --- a/screen-reports/src/main/java/com/ivy/reports/ReportScreenEvent.kt +++ b/screen-reports/src/main/java/com/ivy/reports/ReportScreenEvent.kt @@ -1,7 +1,7 @@ package com.ivy.reports import android.content.Context -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Transaction sealed class ReportScreenEvent { data class OnFilter(val filter: ReportFilter?) : ReportScreenEvent() diff --git a/screen-reports/src/main/java/com/ivy/reports/ReportScreenState.kt b/screen-reports/src/main/java/com/ivy/reports/ReportScreenState.kt index 479db32b49..01a2358293 100644 --- a/screen-reports/src/main/java/com/ivy/reports/ReportScreenState.kt +++ b/screen-reports/src/main/java/com/ivy/reports/ReportScreenState.kt @@ -1,9 +1,9 @@ package com.ivy.reports -import com.ivy.core.data.model.TransactionHistoryItem -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.TransactionHistoryItem +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import java.util.* diff --git a/screen-reports/src/main/java/com/ivy/reports/ReportViewModel.kt b/screen-reports/src/main/java/com/ivy/reports/ReportViewModel.kt index b4b20edaa4..4726ec3630 100644 --- a/screen-reports/src/main/java/com/ivy/reports/ReportViewModel.kt +++ b/screen-reports/src/main/java/com/ivy/reports/ReportViewModel.kt @@ -5,11 +5,11 @@ import androidx.compose.ui.graphics.toArgb import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.ivy.core.RootScreen -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction import com.ivy.core.util.stringRes import com.ivy.frp.filterSuspend import com.ivy.frp.viewmodel.FRPViewModel diff --git a/screen-search/src/main/java/com/ivy/search/SearchScreen.kt b/screen-search/src/main/java/com/ivy/search/SearchScreen.kt index 09d886bb2d..293204e959 100644 --- a/screen-search/src/main/java/com/ivy/search/SearchScreen.kt +++ b/screen-search/src/main/java/com/ivy/search/SearchScreen.kt @@ -21,9 +21,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.core.util.stringRes import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.data.AppBaseData diff --git a/screen-search/src/main/java/com/ivy/search/SearchViewModel.kt b/screen-search/src/main/java/com/ivy/search/SearchViewModel.kt index c073cd2d5b..62fde6e4d0 100644 --- a/screen-search/src/main/java/com/ivy/search/SearchViewModel.kt +++ b/screen-search/src/main/java/com/ivy/search/SearchViewModel.kt @@ -2,17 +2,17 @@ package com.ivy.search import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.frp.test.TestIdlingResource +import com.ivy.legacy.utils.getDefaultFIATCurrency +import com.ivy.legacy.utils.ioThread import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.category.CategoriesAct import com.ivy.wallet.domain.action.settings.BaseCurrencyAct import com.ivy.wallet.domain.action.transaction.AllTrnsAct import com.ivy.wallet.domain.action.transaction.TrnsWithDateDivsAct -import com.ivy.core.data.model.TransactionHistoryItem -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.legacy.utils.getDefaultFIATCurrency -import com.ivy.legacy.utils.ioThread import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf diff --git a/screen-settings/src/main/java/com/ivy/settings/SettingsScreen.kt b/screen-settings/src/main/java/com/ivy/settings/SettingsScreen.kt index 4b38288e9c..936a7c668b 100644 --- a/screen-settings/src/main/java/com/ivy/settings/SettingsScreen.kt +++ b/screen-settings/src/main/java/com/ivy/settings/SettingsScreen.kt @@ -41,8 +41,8 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel -import com.ivy.core.Constants -import com.ivy.core.Constants.URL_IVY_CONTRIBUTORS +import com.ivy.legacy.Constants +import com.ivy.legacy.Constants.URL_IVY_CONTRIBUTORS import com.ivy.design.l0_system.Theme import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style diff --git a/screen-settings/src/main/java/com/ivy/settings/SettingsViewModel.kt b/screen-settings/src/main/java/com/ivy/settings/SettingsViewModel.kt index 564c08ee00..aa906f0422 100644 --- a/screen-settings/src/main/java/com/ivy/settings/SettingsViewModel.kt +++ b/screen-settings/src/main/java/com/ivy/settings/SettingsViewModel.kt @@ -5,8 +5,8 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.ivy.core.RootScreen -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.write.SettingsWriter +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.write.SettingsWriter import com.ivy.core.util.refreshWidget import com.ivy.design.l0_system.Theme import com.ivy.frp.monad.Res diff --git a/screen-transaction/src/main/java/com/ivy/transaction/EditTransactionScreen.kt b/screen-transaction/src/main/java/com/ivy/transaction/EditTransactionScreen.kt index 640be696e7..70e4dafb29 100644 --- a/screen-transaction/src/main/java/com/ivy/transaction/EditTransactionScreen.kt +++ b/screen-transaction/src/main/java/com/ivy/transaction/EditTransactionScreen.kt @@ -30,22 +30,26 @@ import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.db.entity.TransactionType +import com.ivy.design.l0_system.UI +import com.ivy.design.l0_system.style +import com.ivy.design.utils.hideKeyboard import com.ivy.legacy.IvyWalletPreview import com.ivy.legacy.data.EditTransactionDisplayLoan import com.ivy.legacy.ivyWalletCtx import com.ivy.legacy.rootView -import com.ivy.design.l0_system.UI -import com.ivy.design.l0_system.style -import com.ivy.design.utils.hideKeyboard -import com.ivy.navigation.navigation import com.ivy.legacy.ui.component.edit.TransactionDateTime +import com.ivy.legacy.utils.convertUTCtoLocal +import com.ivy.legacy.utils.getTrueDate +import com.ivy.legacy.utils.onScreenStart +import com.ivy.legacy.utils.timeNowLocal import com.ivy.navigation.EditPlannedScreen import com.ivy.navigation.EditTransactionScreen +import com.ivy.navigation.navigation import com.ivy.resources.R import com.ivy.wallet.domain.data.CustomExchangeRateState -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.ui.edit.core.Category @@ -69,10 +73,6 @@ import com.ivy.wallet.ui.theme.modal.edit.CategoryModal import com.ivy.wallet.ui.theme.modal.edit.CategoryModalData import com.ivy.wallet.ui.theme.modal.edit.ChooseCategoryModal import com.ivy.wallet.ui.theme.modal.edit.DescriptionModal -import com.ivy.legacy.utils.convertUTCtoLocal -import com.ivy.legacy.utils.getTrueDate -import com.ivy.legacy.utils.onScreenStart -import com.ivy.legacy.utils.timeNowLocal import java.time.LocalDateTime import java.util.UUID import kotlin.math.roundToInt diff --git a/screen-transaction/src/main/java/com/ivy/transaction/EditTransactionViewModel.kt b/screen-transaction/src/main/java/com/ivy/transaction/EditTransactionViewModel.kt index 20ce68177e..cee58b9527 100644 --- a/screen-transaction/src/main/java/com/ivy/transaction/EditTransactionViewModel.kt +++ b/screen-transaction/src/main/java/com/ivy/transaction/EditTransactionViewModel.kt @@ -3,13 +3,13 @@ package com.ivy.transaction import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.LoanDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.LoanDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.write.TransactionWriter import com.ivy.core.event.AccountUpdatedEvent import com.ivy.core.event.EventBus import com.ivy.core.util.refreshWidget diff --git a/screen-transactions/src/main/java/com/ivy/transactions/ItemStatisticScreen.kt b/screen-transactions/src/main/java/com/ivy/transactions/ItemStatisticScreen.kt index 71ac39b683..b6476385f8 100644 --- a/screen-transactions/src/main/java/com/ivy/transactions/ItemStatisticScreen.kt +++ b/screen-transactions/src/main/java/com/ivy/transactions/ItemStatisticScreen.kt @@ -34,12 +34,12 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import com.ivy.core.Constants -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.legacy.Constants +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.core.util.stringRes import com.ivy.design.l0_system.Theme import com.ivy.design.l0_system.UI diff --git a/screen-transactions/src/main/java/com/ivy/transactions/ItemStatisticViewModel.kt b/screen-transactions/src/main/java/com/ivy/transactions/ItemStatisticViewModel.kt index 934c1abcfa..bafedfc874 100644 --- a/screen-transactions/src/main/java/com/ivy/transactions/ItemStatisticViewModel.kt +++ b/screen-transactions/src/main/java/com/ivy/transactions/ItemStatisticViewModel.kt @@ -4,17 +4,17 @@ import androidx.compose.ui.graphics.toArgb import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import arrow.core.toOption -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.write.AccountWriter -import com.ivy.core.data.db.write.CategoryWriter -import com.ivy.core.data.db.write.PlannedPaymentRuleWriter -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.write.AccountWriter +import com.ivy.core.db.write.CategoryWriter +import com.ivy.core.db.write.PlannedPaymentRuleWriter +import com.ivy.core.db.write.TransactionWriter +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.core.util.stringRes import com.ivy.frp.test.TestIdlingResource import com.ivy.frp.then diff --git a/settings.gradle.kts b/settings.gradle.kts index 2a6b1f228f..e6947b5553 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -37,3 +37,5 @@ include(":screen-exchange-rates") include(":screen-search") include(":screen-test") include(":screen-balance") +include(":ivy-core-ui") +include(":screen-features") diff --git a/temp-legacy-code/build.gradle.kts b/temp-legacy-code/build.gradle.kts index 9071371782..01febe1083 100644 --- a/temp-legacy-code/build.gradle.kts +++ b/temp-legacy-code/build.gradle.kts @@ -21,5 +21,4 @@ dependencies { implementation(libs.datastore) implementation(libs.keval) implementation(libs.androidx.recyclerview) - implementation(libs.gson) } \ No newline at end of file diff --git a/ivy-core/src/main/java/com/ivy/core/Constants.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/Constants.kt similarity index 97% rename from ivy-core/src/main/java/com/ivy/core/Constants.kt rename to temp-legacy-code/src/main/java/com/ivy/legacy/Constants.kt index ceefe197df..6292971013 100644 --- a/ivy-core/src/main/java/com/ivy/core/Constants.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/Constants.kt @@ -1,4 +1,4 @@ -package com.ivy.core +package com.ivy.legacy object Constants { const val URL_TC = diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/IvyWalletCtx.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/IvyWalletCtx.kt index 2fa10640e4..d6fe7659da 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/IvyWalletCtx.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/IvyWalletCtx.kt @@ -6,8 +6,8 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import com.ivy.legacy.data.SharedPrefs -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category import com.ivy.design.IvyContext import java.time.LocalDate import java.time.LocalTime diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/LogoutLogic.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/LogoutLogic.kt index e6620fb437..be0ba25784 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/LogoutLogic.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/LogoutLogic.kt @@ -1,7 +1,7 @@ package com.ivy.legacy import com.ivy.legacy.data.SharedPrefs -import com.ivy.core.data.db.IvyRoomDatabase +import com.ivy.core.db.IvyRoomDatabase import com.ivy.legacy.utils.ioThread import com.ivy.navigation.MainScreen import com.ivy.navigation.Navigation diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/data/AppBaseData.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/data/AppBaseData.kt index 8cd34d9adf..dff0a533ed 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/data/AppBaseData.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/data/AppBaseData.kt @@ -1,8 +1,8 @@ package com.ivy.legacy.data import androidx.compose.runtime.Immutable -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category import kotlinx.collections.immutable.ImmutableList @Immutable diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/data/DueSection.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/data/DueSection.kt index 27cc65aca0..c2018fd5f7 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/data/DueSection.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/data/DueSection.kt @@ -1,7 +1,7 @@ package com.ivy.legacy.data import androidx.compose.runtime.Immutable -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Transaction import com.ivy.wallet.domain.pure.data.IncomeExpensePair import kotlinx.collections.immutable.ImmutableList diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/data/SharedPrefs.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/data/SharedPrefs.kt index dccb7faaf0..a68eb7b60e 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/data/SharedPrefs.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/data/SharedPrefs.kt @@ -1,7 +1,6 @@ package com.ivy.legacy.data import android.content.Context -import com.google.gson.Gson import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject @@ -37,7 +36,6 @@ class SharedPrefs @Inject constructor( } private val preferences = appContext.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE) - private val gson = Gson() fun has(key: String): Boolean { return preferences.contains(key) @@ -82,12 +80,6 @@ class SharedPrefs @Inject constructor( editor.apply() } - fun put(key: String, value: T?) { - val editor = preferences.edit() - editor.putString(key, gson.toJson(value)) - editor.apply() - } - fun getLong(key: String, defValue: Long): Long { return preferences.getLong(key, defValue) } @@ -113,11 +105,6 @@ class SharedPrefs @Inject constructor( return preferences.getString(key, defValue) } - operator fun get(key: String, aClass: Class): T? { - val jsonString = preferences.getString(key, null) - return gson.fromJson(jsonString, aClass) - } - fun remove(key: String) { preferences.edit().remove(key).apply() } diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/AccountBalance.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/AccountBalance.kt index d9aa50a3e1..708ed0457e 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/AccountBalance.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/AccountBalance.kt @@ -1,7 +1,7 @@ package com.ivy.legacy.data.model import androidx.compose.runtime.Immutable -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account @Immutable data class AccountBalance( diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/AccountData.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/AccountData.kt index 245302d413..5b3920f926 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/AccountData.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/AccountData.kt @@ -1,7 +1,7 @@ package com.ivy.legacy.data.model import androidx.compose.runtime.Immutable -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import com.ivy.wallet.domain.data.Reorderable @Immutable diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/FromToTimeRange.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/FromToTimeRange.kt index 46fab9c353..ec8ecda8cc 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/FromToTimeRange.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/FromToTimeRange.kt @@ -1,7 +1,7 @@ package com.ivy.legacy.data.model import androidx.compose.runtime.Immutable -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Transaction import com.ivy.legacy.utils.beginningOfIvyTime import com.ivy.legacy.utils.dateNowUTC import com.ivy.legacy.utils.formatDateOnly diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/LastNTimeRange.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/LastNTimeRange.kt index ba49a2ff47..376a8f942b 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/LastNTimeRange.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/data/model/LastNTimeRange.kt @@ -1,7 +1,7 @@ package com.ivy.legacy.data.model import androidx.compose.runtime.Immutable -import com.ivy.core.data.model.IntervalType +import com.ivy.core.datamodel.IntervalType import com.ivy.legacy.utils.timeNowUTC import java.time.LocalDateTime diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccTrnsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccTrnsAct.kt index 4ab4a85420..fd62b14f5d 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccTrnsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccTrnsAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.account -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.wallet.domain.pure.data.ClosedTimeRange diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccountByIdAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccountByIdAct.kt index bb9ccd856c..311bb6b445 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccountByIdAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccountByIdAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.account -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.model.Account +import com.ivy.core.db.read.AccountDao +import com.ivy.core.datamodel.Account import com.ivy.frp.action.FPAction import com.ivy.frp.then import java.util.UUID diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccountsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccountsAct.kt index 814bf57673..544bc274e8 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccountsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/AccountsAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.account -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.model.Account +import com.ivy.core.db.read.AccountDao +import com.ivy.core.datamodel.Account import com.ivy.frp.action.FPAction import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/CalcAccBalanceAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/CalcAccBalanceAct.kt index 63e66f77f1..7c6a786ca4 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/CalcAccBalanceAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/CalcAccBalanceAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.account import arrow.core.nonEmptyListOf -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.pure.data.ClosedTimeRange diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/CalcAccIncomeExpenseAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/CalcAccIncomeExpenseAct.kt index fe0ed752ae..9f831eba71 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/CalcAccIncomeExpenseAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/account/CalcAccIncomeExpenseAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.account import arrow.core.nonEmptyListOf -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.pure.data.ClosedTimeRange diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/budget/BudgetsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/budget/BudgetsAct.kt index cfbd0ffc51..634193125b 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/budget/BudgetsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/budget/BudgetsAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.budget -import com.ivy.core.data.db.read.BudgetDao -import com.ivy.core.data.model.Budget +import com.ivy.core.db.read.BudgetDao +import com.ivy.core.datamodel.Budget import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoriesAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoriesAct.kt index fe8720a054..c52b7a896f 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoriesAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoriesAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.category -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.model.Category +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.datamodel.Category import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryByIdAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryByIdAct.kt index 25b795fe5a..36cedb0299 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryByIdAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryByIdAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.category -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.model.Category +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.datamodel.Category import com.ivy.frp.action.FPAction import java.util.UUID import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryIncomeWithAccountFiltersAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryIncomeWithAccountFiltersAct.kt index 562bc15667..580ef8a873 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryIncomeWithAccountFiltersAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryIncomeWithAccountFiltersAct.kt @@ -1,8 +1,8 @@ package com.ivy.wallet.domain.action.category -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.action.transaction.CalcTrnsIncomeExpenseAct diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryTrnsBetweenAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryTrnsBetweenAct.kt index 67d6ccb98d..60e5a3bafa 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryTrnsBetweenAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/category/CategoryTrnsBetweenAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.category -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.wallet.domain.pure.data.ClosedTimeRange diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/exchange/ExchangeAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/exchange/ExchangeAct.kt index 1d243fcee9..9739cea55b 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/exchange/ExchangeAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/exchange/ExchangeAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.exchange import arrow.core.Option -import com.ivy.core.data.db.read.ExchangeRatesDao +import com.ivy.core.db.read.ExchangeRatesDao import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.pure.exchange.ExchangeData diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/exchange/SyncExchangeRatesAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/exchange/SyncExchangeRatesAct.kt index f4e4ae27d3..228dad25b8 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/exchange/SyncExchangeRatesAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/exchange/SyncExchangeRatesAct.kt @@ -1,9 +1,9 @@ package com.ivy.legacy.domain.action.exchange import androidx.annotation.Keep -import com.ivy.core.data.db.entity.ExchangeRateEntity -import com.ivy.core.data.db.read.ExchangeRatesDao -import com.ivy.core.data.db.write.ExchangeRatesWriter +import com.ivy.core.db.entity.ExchangeRateEntity +import com.ivy.core.db.read.ExchangeRatesDao +import com.ivy.core.db.write.ExchangeRatesWriter import com.ivy.frp.action.Action import dagger.Lazy import io.ktor.client.HttpClient diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/loan/LoanByIdAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/loan/LoanByIdAct.kt index 16000a2f64..cd8c318a56 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/loan/LoanByIdAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/loan/LoanByIdAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.loan -import com.ivy.core.data.db.read.LoanDao -import com.ivy.core.data.model.Loan +import com.ivy.core.db.read.LoanDao +import com.ivy.core.datamodel.Loan import com.ivy.frp.action.FPAction import java.util.UUID import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/loan/LoansAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/loan/LoansAct.kt index be8f399052..84e5323e6b 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/loan/LoansAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/loan/LoansAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.loan -import com.ivy.core.data.db.read.LoanDao -import com.ivy.core.data.model.Loan +import com.ivy.core.db.read.LoanDao +import com.ivy.core.datamodel.Loan import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/BaseCurrencyAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/BaseCurrencyAct.kt index 645e568594..90363b60a6 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/BaseCurrencyAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/BaseCurrencyAct.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.action.settings -import com.ivy.core.data.db.read.SettingsDao +import com.ivy.core.db.read.SettingsDao import com.ivy.frp.action.FPAction import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/SettingsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/SettingsAct.kt index 1f2b415add..2a3beff774 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/SettingsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/SettingsAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.settings -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.model.Settings +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.datamodel.Settings import com.ivy.frp.action.FPAction import com.ivy.frp.then import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/UpdateSettingsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/UpdateSettingsAct.kt index bf2c15ac53..f6eb5f7811 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/UpdateSettingsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/settings/UpdateSettingsAct.kt @@ -1,7 +1,7 @@ package com.ivy.legacy.domain.action.settings -import com.ivy.core.data.db.write.SettingsWriter -import com.ivy.core.data.model.Settings +import com.ivy.core.db.write.SettingsWriter +import com.ivy.core.datamodel.Settings import com.ivy.frp.action.FPAction import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/AllTrnsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/AllTrnsAct.kt index 0f9a63017d..1869cb269c 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/AllTrnsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/AllTrnsAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.transaction -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/CalcTrnsIncomeExpenseAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/CalcTrnsIncomeExpenseAct.kt index e1fd30434d..047dce3677 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/CalcTrnsIncomeExpenseAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/CalcTrnsIncomeExpenseAct.kt @@ -1,8 +1,8 @@ package com.ivy.wallet.domain.action.transaction import arrow.core.nonEmptyListOf -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.action.exchange.ExchangeAct diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/DueTrnsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/DueTrnsAct.kt index f263306b9f..12839edb97 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/DueTrnsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/DueTrnsAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.transaction -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.wallet.domain.pure.data.ClosedTimeRange diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/HistoryTrnsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/HistoryTrnsAct.kt index b34f4b2cca..fc1d928464 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/HistoryTrnsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/HistoryTrnsAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.transaction -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.wallet.domain.pure.data.ClosedTimeRange diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/HistoryWithDateDivsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/HistoryWithDateDivsAct.kt index 1e1c70f919..c5423f001c 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/HistoryWithDateDivsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/HistoryWithDateDivsAct.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.action.transaction -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.pure.data.ClosedTimeRange diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnByIdAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnByIdAct.kt index de9d5d3952..fbbc424da9 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnByIdAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnByIdAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.transaction -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.then import java.util.UUID diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnsWithDateDivsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnsWithDateDivsAct.kt index 174aa70529..9ae3f2f884 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnsWithDateDivsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnsWithDateDivsAct.kt @@ -1,8 +1,8 @@ package com.ivy.wallet.domain.action.transaction -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.model.Transaction -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.db.read.AccountDao +import com.ivy.core.datamodel.Transaction +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.action.exchange.ExchangeAct diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnsWithRangeAndAccFiltersAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnsWithRangeAndAccFiltersAct.kt index fe569fd14b..5937f326e4 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnsWithRangeAndAccFiltersAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/transaction/TrnsWithRangeAndAccFiltersAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.transaction -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenFilter import java.util.UUID diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/account/AccountDataAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/account/AccountDataAct.kt index 1be226ca91..78d136852d 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/account/AccountDataAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/account/AccountDataAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.viewmodel.account import arrow.core.toOption -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import com.ivy.frp.action.FPAction import com.ivy.frp.action.thenMap import com.ivy.frp.then diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/DueTrnsInfoAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/DueTrnsInfoAct.kt index 9e75c6ebfb..da97f67c2b 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/DueTrnsInfoAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/DueTrnsInfoAct.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.action.viewmodel.home -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.lambda import com.ivy.frp.then diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/HasTrnsAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/HasTrnsAct.kt index 4de98f056c..4f28be01b4 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/HasTrnsAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/HasTrnsAct.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.action.viewmodel.home -import com.ivy.core.data.db.read.TransactionDao +import com.ivy.core.db.read.TransactionDao import com.ivy.frp.action.FPAction import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/OverdueAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/OverdueAct.kt index 18fa3e89f0..49d79b169b 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/OverdueAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/OverdueAct.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.action.viewmodel.home -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.legacy.utils.beginningOfIvyTime diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpcomingAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpcomingAct.kt index 59d91f3dea..6ceb26d427 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpcomingAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpcomingAct.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.action.viewmodel.home -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.then import com.ivy.wallet.domain.pure.data.ClosedTimeRange diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpdateAccCacheAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpdateAccCacheAct.kt index b4c28527cc..40abbd001e 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpdateAccCacheAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpdateAccCacheAct.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.action.viewmodel.home -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import com.ivy.frp.action.FPAction import com.ivy.legacy.IvyWalletCtx import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpdateCategoriesCacheAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpdateCategoriesCacheAct.kt index 0f60b10b94..5e2b030338 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpdateCategoriesCacheAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/home/UpdateCategoriesCacheAct.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.action.viewmodel.home -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Category import com.ivy.frp.action.FPAction import com.ivy.legacy.IvyWalletCtx import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/transaction/SaveTrnLocallyAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/transaction/SaveTrnLocallyAct.kt index da017fef5a..9b3d5c9ad8 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/transaction/SaveTrnLocallyAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/viewmodel/transaction/SaveTrnLocallyAct.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.action.viewmodel.transaction -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.write.TransactionWriter +import com.ivy.core.datamodel.Transaction import com.ivy.frp.action.FPAction import com.ivy.frp.then import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/wallet/CalcIncomeExpenseAct.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/wallet/CalcIncomeExpenseAct.kt index be2b0ca892..46af3e5949 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/wallet/CalcIncomeExpenseAct.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/action/wallet/CalcIncomeExpenseAct.kt @@ -7,7 +7,7 @@ import com.ivy.frp.action.thenMap import com.ivy.frp.then import com.ivy.wallet.domain.action.account.AccTrnsAct import com.ivy.wallet.domain.action.exchange.ExchangeAct -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import com.ivy.wallet.domain.pure.account.filterExcluded import com.ivy.wallet.domain.pure.data.ClosedTimeRange import com.ivy.wallet.domain.pure.data.IncomeExpensePair diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/data/IvyWalletCompleteData.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/data/IvyWalletCompleteData.kt index 15fb51a2bc..c857976940 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/data/IvyWalletCompleteData.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/data/IvyWalletCompleteData.kt @@ -1,34 +1,36 @@ package com.ivy.wallet.domain.data import androidx.annotation.Keep -import com.google.gson.annotations.SerializedName -import com.ivy.core.data.db.entity.AccountEntity -import com.ivy.core.data.db.entity.BudgetEntity -import com.ivy.core.data.db.entity.CategoryEntity -import com.ivy.core.data.db.entity.LoanEntity -import com.ivy.core.data.db.entity.LoanRecordEntity -import com.ivy.core.data.db.entity.PlannedPaymentRuleEntity -import com.ivy.core.data.db.entity.SettingsEntity -import com.ivy.core.data.db.entity.TransactionEntity +import com.ivy.core.db.entity.AccountEntity +import com.ivy.core.db.entity.BudgetEntity +import com.ivy.core.db.entity.CategoryEntity +import com.ivy.core.db.entity.LoanEntity +import com.ivy.core.db.entity.LoanRecordEntity +import com.ivy.core.db.entity.PlannedPaymentRuleEntity +import com.ivy.core.db.entity.SettingsEntity +import com.ivy.core.db.entity.TransactionEntity +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable @Keep +@Serializable data class IvyWalletCompleteData( - @SerializedName("accounts") + @SerialName("accounts") val accounts: List = emptyList(), - @SerializedName("budgets") + @SerialName("budgets") val budgets: List = emptyList(), - @SerializedName("categories") + @SerialName("categories") val categories: List = emptyList(), - @SerializedName("loanRecords") + @SerialName("loanRecords") val loanRecords: List = emptyList(), - @SerializedName("loans") + @SerialName("loans") val loans: List = emptyList(), - @SerializedName("plannedPaymentRules") + @SerialName("plannedPaymentRules") val plannedPaymentRules: List = emptyList(), - @SerializedName("settings") + @SerialName("settings") val settings: List = emptyList(), - @SerializedName("transactions") + @SerialName("transactions") val transactions: List = emptyList(), - @SerializedName("sharedPrefs") + @SerialName("sharedPrefs") val sharedPrefs: HashMap = HashMap() ) diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/data/TransactionHistoryDateDivider.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/data/TransactionHistoryDateDivider.kt index d83e29a9d4..d4beda7f82 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/data/TransactionHistoryDateDivider.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/data/TransactionHistoryDateDivider.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.data import androidx.compose.runtime.Immutable -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.datamodel.TransactionHistoryItem import java.time.LocalDate @Immutable diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/AccountCreator.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/AccountCreator.kt index e88a9fecdd..770757fb6a 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/AccountCreator.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/AccountCreator.kt @@ -1,9 +1,9 @@ package com.ivy.legacy.domain.deprecated.logic import androidx.compose.ui.graphics.toArgb -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.write.AccountWriter -import com.ivy.core.data.model.Account +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.write.AccountWriter +import com.ivy.core.datamodel.Account import com.ivy.legacy.utils.ioThread import com.ivy.wallet.domain.deprecated.logic.WalletAccountLogic import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/BudgetCreator.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/BudgetCreator.kt index d86811e25b..03bde543c6 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/BudgetCreator.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/BudgetCreator.kt @@ -1,8 +1,8 @@ package com.ivy.legacy.domain.deprecated.logic -import com.ivy.core.data.db.read.BudgetDao -import com.ivy.core.data.db.write.BudgetWriter -import com.ivy.core.data.model.Budget +import com.ivy.core.db.read.BudgetDao +import com.ivy.core.db.write.BudgetWriter +import com.ivy.core.datamodel.Budget import com.ivy.legacy.utils.ioThread import com.ivy.wallet.domain.deprecated.logic.model.CreateBudgetData import com.ivy.wallet.domain.pure.util.nextOrderNum diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/CategoryCreator.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/CategoryCreator.kt index 4a64cfce0f..d67990907e 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/CategoryCreator.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/CategoryCreator.kt @@ -1,9 +1,9 @@ package com.ivy.wallet.domain.deprecated.logic import androidx.compose.ui.graphics.toArgb -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.write.CategoryWriter -import com.ivy.core.data.model.Category +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.write.CategoryWriter +import com.ivy.core.datamodel.Category import com.ivy.legacy.utils.ioThread import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.domain.pure.util.nextOrderNum diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/LoanCreator.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/LoanCreator.kt index eeb117e3fd..fa517a4cc6 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/LoanCreator.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/LoanCreator.kt @@ -1,9 +1,9 @@ package com.ivy.wallet.domain.deprecated.logic import androidx.compose.ui.graphics.toArgb -import com.ivy.core.data.db.read.LoanDao -import com.ivy.core.data.db.write.LoanWriter -import com.ivy.core.data.model.Loan +import com.ivy.core.db.read.LoanDao +import com.ivy.core.db.write.LoanWriter +import com.ivy.core.datamodel.Loan import com.ivy.legacy.utils.ioThread import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanData import com.ivy.wallet.domain.pure.util.nextOrderNum diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/LoanRecordCreator.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/LoanRecordCreator.kt index c93f2538c9..cea304b2f6 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/LoanRecordCreator.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/LoanRecordCreator.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.deprecated.logic -import com.ivy.core.data.db.write.LoanRecordWriter -import com.ivy.core.data.model.LoanRecord +import com.ivy.core.db.write.LoanRecordWriter +import com.ivy.core.datamodel.LoanRecord import com.ivy.legacy.utils.ioThread import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData import java.util.UUID diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PlannedPaymentsGenerator.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PlannedPaymentsGenerator.kt index a3b94b5242..541f23c151 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PlannedPaymentsGenerator.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PlannedPaymentsGenerator.kt @@ -1,9 +1,9 @@ package com.ivy.wallet.domain.deprecated.logic -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.data.model.PlannedPaymentRule -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.db.write.TransactionWriter +import com.ivy.core.datamodel.PlannedPaymentRule +import com.ivy.core.datamodel.Transaction import java.time.LocalDateTime import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PlannedPaymentsLogic.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PlannedPaymentsLogic.kt index b26f389bfa..bd4ac27647 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PlannedPaymentsLogic.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PlannedPaymentsLogic.kt @@ -1,16 +1,16 @@ package com.ivy.wallet.domain.deprecated.logic -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.PlannedPaymentRuleDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.db.write.PlannedPaymentRuleWriter -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.IntervalType -import com.ivy.core.data.model.PlannedPaymentRule -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.PlannedPaymentRuleDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.db.write.PlannedPaymentRuleWriter +import com.ivy.core.db.write.TransactionWriter +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.IntervalType +import com.ivy.core.datamodel.PlannedPaymentRule +import com.ivy.core.datamodel.Transaction import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.timeNowUTC import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PreloadDataLogic.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PreloadDataLogic.kt index 878dc520b0..43f936fbad 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PreloadDataLogic.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/PreloadDataLogic.kt @@ -1,10 +1,10 @@ package com.ivy.wallet.domain.deprecated.logic import androidx.compose.ui.graphics.toArgb -import com.ivy.core.data.db.write.AccountWriter -import com.ivy.core.data.db.write.CategoryWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category +import com.ivy.core.db.write.AccountWriter +import com.ivy.core.db.write.CategoryWriter +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category import com.ivy.core.util.stringRes import com.ivy.design.l0_system.* import com.ivy.resources.R diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/SmartTitleSuggestionsLogic.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/SmartTitleSuggestionsLogic.kt index fbb03e5177..f00367431a 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/SmartTitleSuggestionsLogic.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/SmartTitleSuggestionsLogic.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.deprecated.logic -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Transaction import com.ivy.legacy.utils.capitalizeWords import com.ivy.legacy.utils.isNotNullOrBlank import java.util.* diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/WalletAccountLogic.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/WalletAccountLogic.kt index 033c895e6c..6f120205ac 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/WalletAccountLogic.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/WalletAccountLogic.kt @@ -1,10 +1,10 @@ package com.ivy.wallet.domain.deprecated.logic -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.db.write.TransactionWriter +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Transaction import com.ivy.legacy.data.model.filterOverdue import com.ivy.legacy.data.model.filterUpcoming import com.ivy.legacy.utils.timeNowUTC diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/WalletCategoryLogic.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/WalletCategoryLogic.kt index 7fa56716fc..d45dad7003 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/WalletCategoryLogic.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/WalletCategoryLogic.kt @@ -1,12 +1,12 @@ package com.ivy.wallet.domain.deprecated.logic -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.legacy.data.model.filterOverdue import com.ivy.legacy.data.model.filterUpcoming import com.ivy.wallet.domain.deprecated.logic.currency.ExchangeRatesLogic diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/CSVImporter.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/CSVImporter.kt index 200647fd15..5631f79b84 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/CSVImporter.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/CSVImporter.kt @@ -1,16 +1,16 @@ package com.ivy.legacy.domain.deprecated.logic.csv import androidx.compose.ui.graphics.toArgb -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.write.AccountWriter -import com.ivy.core.data.db.write.CategoryWriter -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.write.AccountWriter +import com.ivy.core.db.write.CategoryWriter +import com.ivy.core.db.write.TransactionWriter +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction import com.ivy.design.IVY_COLOR_PICKER_COLORS_FREE import com.ivy.design.l0_system.Green import com.ivy.design.l0_system.IvyDark diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/CSVMapper.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/CSVMapper.kt index ed879eaafe..dad77eab06 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/CSVMapper.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/CSVMapper.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.deprecated.logic.csv -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Transaction import com.ivy.legacy.domain.deprecated.logic.csv.model.ImportType import com.ivy.wallet.domain.deprecated.logic.csv.model.JoinResult import com.ivy.wallet.domain.deprecated.logic.csv.model.RowMapping diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/ExportCSVLogic.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/ExportCSVLogic.kt index fd20aa9881..1a6d92e8e2 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/ExportCSVLogic.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/ExportCSVLogic.kt @@ -2,14 +2,14 @@ package com.ivy.wallet.domain.deprecated.logic.csv import android.content.Context import android.net.Uri -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction import com.ivy.legacy.utils.format import com.ivy.legacy.utils.formatLocal import com.ivy.legacy.utils.ioThread diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/model/RowMapping.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/model/RowMapping.kt index 62789eacb7..33cf068db3 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/model/RowMapping.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/csv/model/RowMapping.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.deprecated.logic.csv.model -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction data class RowMapping( val type: Int? = null, diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/currency/ExchangeRatesLogic.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/currency/ExchangeRatesLogic.kt index 8804fe740f..fba920e34a 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/currency/ExchangeRatesLogic.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/currency/ExchangeRatesLogic.kt @@ -1,11 +1,11 @@ package com.ivy.wallet.domain.deprecated.logic.currency -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.ExchangeRatesDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.PlannedPaymentRule -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.ExchangeRatesDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.PlannedPaymentRule +import com.ivy.core.datamodel.Transaction import java.util.UUID import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LTLoanMapper.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LTLoanMapper.kt index a970ace039..7c488abb97 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LTLoanMapper.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LTLoanMapper.kt @@ -1,11 +1,11 @@ package com.ivy.wallet.domain.deprecated.logic.loantrasactions -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Loan -import com.ivy.core.data.model.LoanRecord -import com.ivy.core.data.model.LoanType -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Loan +import com.ivy.core.datamodel.LoanRecord +import com.ivy.core.datamodel.LoanType +import com.ivy.core.datamodel.Transaction import com.ivy.legacy.domain.deprecated.logic.loantrasactions.LoanTransactionsCore import com.ivy.legacy.utils.computationThread import com.ivy.legacy.utils.scopedIOThread diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LTLoanRecordMapper.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LTLoanRecordMapper.kt index b66690a83d..d25f713011 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LTLoanRecordMapper.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LTLoanRecordMapper.kt @@ -1,8 +1,8 @@ package com.ivy.wallet.domain.deprecated.logic.loantrasactions -import com.ivy.core.data.model.Loan -import com.ivy.core.data.model.LoanRecord -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Loan +import com.ivy.core.datamodel.LoanRecord +import com.ivy.core.datamodel.Transaction import com.ivy.legacy.domain.deprecated.logic.loantrasactions.LoanTransactionsCore import com.ivy.legacy.utils.computationThread import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LoanTransactionsCore.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LoanTransactionsCore.kt index f85f319455..141db38255 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LoanTransactionsCore.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LoanTransactionsCore.kt @@ -1,23 +1,23 @@ package com.ivy.legacy.domain.deprecated.logic.loantrasactions import androidx.compose.ui.graphics.toArgb -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.read.LoanDao -import com.ivy.core.data.db.read.LoanRecordDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.db.write.CategoryWriter -import com.ivy.core.data.db.write.LoanRecordWriter -import com.ivy.core.data.db.write.LoanWriter -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Loan -import com.ivy.core.data.model.LoanRecord -import com.ivy.core.data.model.LoanType -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.read.LoanDao +import com.ivy.core.db.read.LoanRecordDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.db.write.CategoryWriter +import com.ivy.core.db.write.LoanRecordWriter +import com.ivy.core.db.write.LoanWriter +import com.ivy.core.db.write.TransactionWriter +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Loan +import com.ivy.core.datamodel.LoanRecord +import com.ivy.core.datamodel.LoanType +import com.ivy.core.datamodel.Transaction import com.ivy.core.util.stringRes import com.ivy.design.IVY_COLOR_PICKER_COLORS_FREE import com.ivy.legacy.IvyWalletCtx diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LoanTransactionsLogic.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LoanTransactionsLogic.kt index de1dfac836..b3816dc756 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LoanTransactionsLogic.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/loantrasactions/LoanTransactionsLogic.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.deprecated.logic.loantrasactions -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Transaction import com.ivy.legacy.utils.computationThread import javax.inject.Inject diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/CreateLoanData.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/CreateLoanData.kt index 3ec7eee0d3..d5d83406e9 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/CreateLoanData.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/CreateLoanData.kt @@ -1,8 +1,8 @@ package com.ivy.wallet.domain.deprecated.logic.model import androidx.compose.ui.graphics.Color -import com.ivy.core.data.model.LoanType -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.LoanType +import com.ivy.core.datamodel.Account data class CreateLoanData( val name: String, diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/CreateLoanRecordData.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/CreateLoanRecordData.kt index 40110a4c7d..84c13c1140 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/CreateLoanRecordData.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/CreateLoanRecordData.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.deprecated.logic.model -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import java.time.LocalDateTime data class CreateLoanRecordData( diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/EditLoanRecordData.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/EditLoanRecordData.kt index 4639c7c0cc..d7a106a7a1 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/EditLoanRecordData.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/model/EditLoanRecordData.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.deprecated.logic.model -import com.ivy.core.data.model.LoanRecord +import com.ivy.core.datamodel.LoanRecord data class EditLoanRecordData( val newLoanRecord: LoanRecord, diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/zip/BackupLogic.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/zip/BackupLogic.kt index 49ab560bb0..daa0ae60df 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/zip/BackupLogic.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/deprecated/logic/zip/BackupLogic.kt @@ -3,25 +3,22 @@ package com.ivy.legacy.domain.deprecated.logic.zip import android.content.Context import android.net.Uri import androidx.core.net.toUri -import com.google.gson.* -import com.google.gson.reflect.TypeToken -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.BudgetDao -import com.ivy.core.data.db.read.CategoryDao -import com.ivy.core.data.db.read.LoanDao -import com.ivy.core.data.db.read.LoanRecordDao -import com.ivy.core.data.db.read.PlannedPaymentRuleDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.db.read.TransactionDao -import com.ivy.core.data.db.write.AccountWriter -import com.ivy.core.data.db.write.BudgetWriter -import com.ivy.core.data.db.write.CategoryWriter -import com.ivy.core.data.db.write.LoanRecordWriter -import com.ivy.core.data.db.write.LoanWriter -import com.ivy.core.data.db.write.PlannedPaymentRuleWriter -import com.ivy.core.data.db.write.SettingsWriter -import com.ivy.core.data.db.write.TransactionWriter -import com.ivy.core.util.toEpochMilli +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.BudgetDao +import com.ivy.core.db.read.CategoryDao +import com.ivy.core.db.read.LoanDao +import com.ivy.core.db.read.LoanRecordDao +import com.ivy.core.db.read.PlannedPaymentRuleDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.db.read.TransactionDao +import com.ivy.core.db.write.AccountWriter +import com.ivy.core.db.write.BudgetWriter +import com.ivy.core.db.write.CategoryWriter +import com.ivy.core.db.write.LoanRecordWriter +import com.ivy.core.db.write.LoanWriter +import com.ivy.core.db.write.PlannedPaymentRuleWriter +import com.ivy.core.db.write.SettingsWriter +import com.ivy.core.db.write.TransactionWriter import com.ivy.legacy.data.SharedPrefs import com.ivy.legacy.utils.ioThread import com.ivy.legacy.utils.readFile @@ -33,13 +30,11 @@ import com.ivy.wallet.domain.deprecated.logic.zip.zip import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.async +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json import timber.log.Timber import java.io.File -import java.lang.reflect.Type -import java.time.Instant -import java.time.LocalDateTime -import java.time.ZoneOffset -import java.util.* +import java.util.UUID import javax.inject.Inject class BackupLogic @Inject constructor( @@ -62,6 +57,7 @@ class BackupLogic @Inject constructor( private val plannedPaymentRuleWriter: PlannedPaymentRuleWriter, @ApplicationContext private val context: Context, + private val json: Json, ) { suspend fun exportToFile( zipFileUri: Uri @@ -96,20 +92,6 @@ class BackupLogic @Inject constructor( val transactions = it.async { transactionDao.findAll() } val sharedPrefs = it.async { getSharedPrefsData() } - val gson = GsonBuilder().registerTypeAdapter( - LocalDateTime::class.java, - object : JsonSerializer { - @Throws(JsonParseException::class) - override fun serialize( - src: LocalDateTime?, - typeOfSrc: Type?, - context: JsonSerializationContext? - ): JsonElement { - return JsonPrimitive(src!!.toEpochMilli().toString()) - } - } - ).create() - val completeData = IvyWalletCompleteData( accounts = accounts.await(), budgets = budgets.await(), @@ -122,7 +104,7 @@ class BackupLogic @Inject constructor( sharedPrefs = sharedPrefs.await() ) - gson.toJson(completeData) + json.encodeToString(completeData) } } @@ -198,7 +180,9 @@ class BackupLogic @Inject constructor( clearCacheDir: Boolean = false, ): ImportResult { val modifiedJsonString = accommodateExistingAccountsAndCategories(jsonString) - val ivyWalletCompleteData = getIvyWalletCompleteData(modifiedJsonString) + val ivyWalletCompleteData = modifiedJsonString?.let { + json.decodeFromString(it) + } ?: error("Failed to parse backup JSON.") onProgress(0.4) insertDataToDb(completeData = ivyWalletCompleteData, onProgress = onProgress) @@ -218,7 +202,9 @@ class BackupLogic @Inject constructor( } private suspend fun accommodateExistingAccountsAndCategories(jsonString: String?): String? { - val ivyWalletCompleteData = getIvyWalletCompleteData(jsonString) + if (jsonString == null) return null + + val ivyWalletCompleteData = json.decodeFromString(jsonString) val replacementPairs = getReplacementPairs(ivyWalletCompleteData) var modifiedString = jsonString @@ -229,29 +215,6 @@ class BackupLogic @Inject constructor( return modifiedString } - private fun getIvyWalletCompleteData(data: String?): IvyWalletCompleteData { - val typeOfObjectsList: Type = - object : TypeToken() {}.type - - val gson: Gson = GsonBuilder().registerTypeAdapter( - LocalDateTime::class.java, - object : JsonDeserializer { - @Throws(JsonParseException::class) - override fun deserialize( - json: JsonElement, - type: Type?, - jsonDeserializationContext: JsonDeserializationContext? - ): LocalDateTime? { - val instant: Instant = - Instant.ofEpochMilli(json.asJsonPrimitive.asLong) - return LocalDateTime.ofInstant(instant, ZoneOffset.UTC) - } - } - ).create() - - return gson.fromJson(data, typeOfObjectsList) - } - private suspend fun insertDataToDb( completeData: IvyWalletCompleteData, onProgress: suspend (progressPercent: Double) -> Unit = {} diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/account/AccountFunctions.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/account/AccountFunctions.kt index a5b49c1fc3..ea414f16e5 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/account/AccountFunctions.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/account/AccountFunctions.kt @@ -1,6 +1,6 @@ package com.ivy.wallet.domain.pure.account -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account fun filterExcluded(accounts: List): List = accounts.filter { it.includeInBalance } diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/data/WalletDAOs.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/data/WalletDAOs.kt index 3c9b0f67ab..4d5e39937a 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/data/WalletDAOs.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/data/WalletDAOs.kt @@ -1,8 +1,8 @@ package com.ivy.wallet.domain.pure.data -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.ExchangeRatesDao -import com.ivy.core.data.db.read.TransactionDao +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.ExchangeRatesDao +import com.ivy.core.db.read.TransactionDao import javax.inject.Inject data class WalletDAOs @Inject constructor( diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/exchange/Exchange.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/exchange/Exchange.kt index 0e8e208042..bd8d2a5ad0 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/exchange/Exchange.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/exchange/Exchange.kt @@ -7,7 +7,7 @@ import arrow.core.computations.option import arrow.core.toOption import com.ivy.frp.Pure import com.ivy.frp.SideEffect -import com.ivy.core.data.model.ExchangeRate +import com.ivy.core.datamodel.ExchangeRate import com.ivy.legacy.utils.isNotNullOrBlank import java.math.BigDecimal diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/exchange/ExchangeTrns.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/exchange/ExchangeTrns.kt index 8734c8f401..7669c03812 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/exchange/ExchangeTrns.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/exchange/ExchangeTrns.kt @@ -4,8 +4,8 @@ import arrow.core.Option import arrow.core.toOption import com.ivy.frp.Pure import com.ivy.frp.SideEffect -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Transaction import com.ivy.wallet.domain.pure.account.accountCurrency import com.ivy.wallet.domain.pure.transaction.trnCurrency import java.math.BigDecimal diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/AccValueFunctions.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/AccValueFunctions.kt index 165f058397..d2aa1a2080 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/AccValueFunctions.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/AccValueFunctions.kt @@ -1,7 +1,7 @@ package com.ivy.wallet.domain.pure.transaction -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Transaction import java.math.BigDecimal import java.util.* diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/CatValueFunctions.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/CatValueFunctions.kt index 70657690e9..cbfd833524 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/CatValueFunctions.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/CatValueFunctions.kt @@ -3,9 +3,9 @@ package com.ivy.wallet.domain.pure.transaction import arrow.core.Option import arrow.core.toOption import com.ivy.frp.SideEffect -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Transaction import java.math.BigDecimal import java.util.* diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/FoldTransactions.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/FoldTransactions.kt index ca13c3518b..761d7f4c99 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/FoldTransactions.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/FoldTransactions.kt @@ -3,7 +3,7 @@ package com.ivy.wallet.domain.pure.transaction import arrow.core.NonEmptyList import arrow.core.nonEmptyListOf import com.ivy.frp.Pure -import com.ivy.core.data.model.Transaction +import com.ivy.core.datamodel.Transaction import com.ivy.wallet.domain.pure.util.mapIndexedNel import com.ivy.wallet.domain.pure.util.mapIndexedNelSuspend import com.ivy.wallet.domain.pure.util.nonEmptyListOfZeros diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/TrnDateDividers.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/TrnDateDividers.kt index ea557d2826..9c5a1cc980 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/TrnDateDividers.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/TrnDateDividers.kt @@ -2,11 +2,11 @@ package com.ivy.wallet.domain.pure.transaction import arrow.core.Option import arrow.core.toOption -import com.ivy.core.data.db.read.AccountDao -import com.ivy.core.data.db.read.SettingsDao -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Transaction -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.db.read.AccountDao +import com.ivy.core.db.read.SettingsDao +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Transaction +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.frp.Pure import com.ivy.frp.SideEffect import com.ivy.frp.then diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/TrnFunctions.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/TrnFunctions.kt index 9a3d639aa7..22c7d52c31 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/TrnFunctions.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/TrnFunctions.kt @@ -3,9 +3,9 @@ package com.ivy.wallet.domain.pure.transaction import arrow.core.Option import arrow.core.toOption import com.ivy.frp.Pure -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Transaction import com.ivy.wallet.domain.pure.account.accountCurrency import java.time.LocalDate diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/WalletValueFunctions.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/WalletValueFunctions.kt index 60109fe379..1362dbb22c 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/WalletValueFunctions.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/domain/pure/transaction/WalletValueFunctions.kt @@ -1,9 +1,9 @@ package com.ivy.wallet.domain.pure.transaction import com.ivy.frp.SideEffect -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Transaction import com.ivy.wallet.domain.pure.exchange.ExchangeEffect import com.ivy.wallet.domain.pure.exchange.exchangeInBaseCurrency import java.math.BigDecimal diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/ChangeTransactionTypeModal.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/ChangeTransactionTypeModal.kt index 71fb0bbe83..225d90d12a 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/ChangeTransactionTypeModal.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/ChangeTransactionTypeModal.kt @@ -28,7 +28,7 @@ import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType import com.ivy.legacy.IvyWalletPreview import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.GradientGreen diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/IntervalPickerRow.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/IntervalPickerRow.kt index b1ddbab70f..b9475548e5 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/IntervalPickerRow.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/IntervalPickerRow.kt @@ -26,7 +26,7 @@ import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R -import com.ivy.core.data.model.IntervalType +import com.ivy.core.datamodel.IntervalType import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.GradientIvy diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/WrapContentRow.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/WrapContentRow.kt index 133a007391..ffe3a228db 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/WrapContentRow.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/components/WrapContentRow.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.ivy.design.l0_system.UI -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Category import com.ivy.legacy.IvyWalletPreview @Composable diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/BudgetModal.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/BudgetModal.kt index 4fbb381b40..183873a424 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/BudgetModal.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/BudgetModal.kt @@ -36,9 +36,9 @@ import com.ivy.core.legacy.ui.theme.components.ListItem import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Budget -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Budget +import com.ivy.core.datamodel.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateBudgetData import com.ivy.wallet.ui.theme.Green import com.ivy.wallet.ui.theme.Purple1Dark diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/ChoosePeriodModal.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/ChoosePeriodModal.kt index 24f9129167..fbbff15803 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/ChoosePeriodModal.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/ChoosePeriodModal.kt @@ -37,7 +37,7 @@ import com.ivy.legacy.ivyWalletCtx import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R -import com.ivy.core.data.model.IntervalType +import com.ivy.core.datamodel.IntervalType import com.ivy.legacy.data.model.FromToTimeRange import com.ivy.legacy.data.model.LastNTimeRange import com.ivy.legacy.data.model.TimePeriod diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/LoanModal.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/LoanModal.kt index c878d69f61..ebd25da19b 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/LoanModal.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/LoanModal.kt @@ -41,9 +41,9 @@ import com.ivy.design.l0_system.style import com.ivy.frp.test.TestingContext import com.ivy.resources.R import com.ivy.wallet.domain.data.IvyCurrency -import com.ivy.core.data.model.LoanType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Loan +import com.ivy.core.datamodel.LoanType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Loan import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanData import com.ivy.wallet.ui.theme.GradientIvy diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/LoanRecordModal.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/LoanRecordModal.kt index 8c1b06c094..499e08d6ef 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/LoanRecordModal.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/LoanRecordModal.kt @@ -35,8 +35,8 @@ import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.frp.test.TestingContext import com.ivy.resources.R -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.LoanRecord +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.LoanRecord import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.domain.deprecated.logic.model.CreateLoanRecordData import com.ivy.wallet.domain.deprecated.logic.model.EditLoanRecordData diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/RecurringRuleModal.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/RecurringRuleModal.kt index 6659ef6395..b218e0b5da 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/RecurringRuleModal.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/RecurringRuleModal.kt @@ -38,7 +38,7 @@ import com.ivy.legacy.ivyWalletCtx import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R -import com.ivy.core.data.model.IntervalType +import com.ivy.core.datamodel.IntervalType import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.GradientIvy import com.ivy.wallet.ui.theme.Gray diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/AccountModal.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/AccountModal.kt index 176d12ca38..64f7384f8e 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/AccountModal.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/AccountModal.kt @@ -32,7 +32,7 @@ import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R import com.ivy.wallet.domain.data.IvyCurrency -import com.ivy.core.data.model.Account +import com.ivy.core.datamodel.Account import com.ivy.wallet.domain.deprecated.logic.model.CreateAccountData import com.ivy.wallet.ui.theme.Gray import com.ivy.wallet.ui.theme.Ivy diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/CategoryModal.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/CategoryModal.kt index d5217b1c7d..bfddb2ba25 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/CategoryModal.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/CategoryModal.kt @@ -36,7 +36,7 @@ import androidx.compose.ui.unit.dp import com.ivy.core.legacy.ui.IvyColorPicker import com.ivy.legacy.IvyWalletPreview import com.ivy.resources.R -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Category import com.ivy.wallet.domain.deprecated.logic.model.CreateCategoryData import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.components.ItemIconMDefaultIcon diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/ChooseCategoryModal.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/ChooseCategoryModal.kt index 400e4275e1..4ce96a70b2 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/ChooseCategoryModal.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/legacy/ui/theme/modal/edit/ChooseCategoryModal.kt @@ -32,7 +32,7 @@ import com.ivy.legacy.IvyWalletPreview import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Category import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.Ivy import com.ivy.wallet.ui.theme.Orange diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/notification/TransactionReminderWorker.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/notification/TransactionReminderWorker.kt index 345f7fd8f9..29896b0dd4 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/notification/TransactionReminderWorker.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/notification/TransactionReminderWorker.kt @@ -7,7 +7,7 @@ import androidx.hilt.work.HiltWorker import androidx.work.CoroutineWorker import androidx.work.WorkerParameters import com.ivy.core.AppStarter -import com.ivy.core.data.db.read.TransactionDao +import com.ivy.core.db.read.TransactionDao import com.ivy.core.util.stringRes import com.ivy.legacy.data.SharedPrefs import com.ivy.legacy.utils.atEndOfDay diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/IncomeExpenseCards.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/IncomeExpenseCards.kt index 090856558b..e284ff10c4 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/IncomeExpenseCards.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/IncomeExpenseCards.kt @@ -18,9 +18,9 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Transaction -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Transaction +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.core.util.stringRes import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Category.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Category.kt index b898b90b94..982bdf08f8 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Category.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Category.kt @@ -9,7 +9,7 @@ import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Category import com.ivy.wallet.ui.theme.Gradient import com.ivy.wallet.ui.theme.components.IvyBorderButton import com.ivy.wallet.ui.theme.components.IvyButton diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/EditBottomSheet.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/EditBottomSheet.kt index ce75d62388..1fb54936cf 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/EditBottomSheet.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/EditBottomSheet.kt @@ -43,8 +43,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.frp.test.TestingContext diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Title.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Title.kt index 5ebd2d7552..ad27c1f89a 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Title.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Title.kt @@ -26,7 +26,7 @@ import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.resources.R -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType import com.ivy.wallet.domain.deprecated.logic.SUGGESTIONS_LIMIT import com.ivy.legacy.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.components.IvyTitleTextField diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Toolbar.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Toolbar.kt index ebb28c1454..6914db8843 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Toolbar.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/edit/core/Toolbar.kt @@ -8,7 +8,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType import com.ivy.navigation.navigation import com.ivy.resources.R import com.ivy.wallet.ui.theme.components.CloseButton diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/TransactionCard.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/TransactionCard.kt index b1e7ca102c..71296dcab4 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/TransactionCard.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/TransactionCard.kt @@ -26,10 +26,10 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.ivy.core.data.db.entity.TransactionType -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category -import com.ivy.core.data.model.Transaction +import com.ivy.core.db.entity.TransactionType +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category +import com.ivy.core.datamodel.Transaction import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style import com.ivy.design.l1_buildingBlocks.IvyText diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/Transactions.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/Transactions.kt index e277a2f676..13ee29b63f 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/Transactions.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/Transactions.kt @@ -16,8 +16,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import com.ivy.core.data.model.Transaction -import com.ivy.core.data.model.TransactionHistoryItem +import com.ivy.core.datamodel.Transaction +import com.ivy.core.datamodel.TransactionHistoryItem import com.ivy.core.util.stringRes import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style diff --git a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/Utils.kt b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/Utils.kt index 89d730bdc9..0c8cc82032 100644 --- a/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/Utils.kt +++ b/temp-legacy-code/src/main/java/com/ivy/legacy/ui/component/transaction/Utils.kt @@ -2,8 +2,8 @@ package com.ivy.legacy.ui.component.transaction import androidx.compose.runtime.Composable import com.ivy.legacy.ivyWalletCtx -import com.ivy.core.data.model.Account -import com.ivy.core.data.model.Category +import com.ivy.core.datamodel.Account +import com.ivy.core.datamodel.Category import java.util.UUID @Composable diff --git a/templates/__module/build.gradle.kts b/templates/__module/build.gradle.kts index ac0fdd6f79..bea9fa756a 100644 --- a/templates/__module/build.gradle.kts +++ b/templates/__module/build.gradle.kts @@ -11,4 +11,5 @@ dependencies { implementation(projects.ivyResources) implementation(projects.ivyDesign) implementation(projects.ivyNavigation) + implementation(projects.ivyCoreUi) } \ No newline at end of file diff --git a/widget-add-transaction/src/main/java/com/ivy/widget/transaction/AddTransactionWidgetClick.kt b/widget-add-transaction/src/main/java/com/ivy/widget/transaction/AddTransactionWidgetClick.kt index 5d46e93064..3cd9eaa1ee 100644 --- a/widget-add-transaction/src/main/java/com/ivy/widget/transaction/AddTransactionWidgetClick.kt +++ b/widget-add-transaction/src/main/java/com/ivy/widget/transaction/AddTransactionWidgetClick.kt @@ -7,7 +7,7 @@ import android.content.Intent import android.widget.RemoteViews import androidx.annotation.IdRes import com.ivy.core.AppStarter -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType import javax.inject.Inject class AddTransactionWidgetClick @Inject constructor( diff --git a/widget-balance/src/main/java/com/ivy/widget/balance/WalletBalanceWidget.kt b/widget-balance/src/main/java/com/ivy/widget/balance/WalletBalanceWidget.kt index 7033edbbe8..0a30995c7f 100644 --- a/widget-balance/src/main/java/com/ivy/widget/balance/WalletBalanceWidget.kt +++ b/widget-balance/src/main/java/com/ivy/widget/balance/WalletBalanceWidget.kt @@ -16,7 +16,7 @@ import androidx.glance.currentState import androidx.glance.state.PreferencesGlanceStateDefinition import com.ivy.core.AppStarter import com.ivy.legacy.data.SharedPrefs -import com.ivy.core.data.db.entity.TransactionType +import com.ivy.core.db.entity.TransactionType import com.ivy.legacy.data.model.toCloseTimeRange import com.ivy.wallet.domain.action.account.AccountsAct import com.ivy.wallet.domain.action.settings.SettingsAct diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index bb445115da..0000000000 --- a/yarn.lock +++ /dev/null @@ -1,973 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@gitbeaker/core@^21.7.0": - version "21.7.0" - resolved "https://registry.yarnpkg.com/@gitbeaker/core/-/core-21.7.0.tgz#fcf7a12915d39f416e3f316d0a447a814179b8e5" - integrity sha512-cw72rE7tA27wc6JJe1WqeAj9v/6w0S7XJcEji+bRNjTlUfE1zgfW0Gf1mbGUi7F37SOABGCosQLfg9Qe63aIqA== - dependencies: - "@gitbeaker/requester-utils" "^21.7.0" - form-data "^3.0.0" - li "^1.3.0" - xcase "^2.0.1" - -"@gitbeaker/node@^21.3.0": - version "21.7.0" - resolved "https://registry.yarnpkg.com/@gitbeaker/node/-/node-21.7.0.tgz#2c19613f44ee497a8808c555abec614ebd2dfcad" - integrity sha512-OdM3VcTKYYqboOsnbiPcO0XimXXpYK4gTjARBZ6BWc+1LQXKmqo+OH6oUbyxOoaFu9hHECafIt3WZU3NM4sZTg== - dependencies: - "@gitbeaker/core" "^21.7.0" - "@gitbeaker/requester-utils" "^21.7.0" - form-data "^3.0.0" - got "^11.1.4" - xcase "^2.0.1" - -"@gitbeaker/requester-utils@^21.7.0": - version "21.7.0" - resolved "https://registry.yarnpkg.com/@gitbeaker/requester-utils/-/requester-utils-21.7.0.tgz#e9a9cfaf268d2a99eb7bbdc930943240a5f88878" - integrity sha512-eLTaVXlBnh8Qimj6QuMMA06mu/mLcJm3dy8nqhhn/Vm/D25sPrvpGwmbfFyvzj6QujPqtHvFfsCHtyZddL01qA== - dependencies: - form-data "^3.0.0" - query-string "^6.12.1" - xcase "^2.0.1" - -"@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== - dependencies: - "@octokit/types" "^6.0.3" - -"@octokit/core@^3.5.1": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" - integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.3" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== - dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== - dependencies: - "@octokit/request" "^5.6.0" - "@octokit/types" "^6.0.3" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^12.11.0": - version "12.11.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" - integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== - -"@octokit/plugin-paginate-rest@^2.16.8": - version "2.21.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" - integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== - dependencies: - "@octokit/types" "^6.40.0" - -"@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== - -"@octokit/plugin-rest-endpoint-methods@^5.12.0": - version "5.16.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" - integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== - dependencies: - "@octokit/types" "^6.39.0" - deprecation "^2.3.1" - -"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== - dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": - version "5.6.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" - integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== - dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" - -"@octokit/rest@^16.43.0 || ^17.11.0 || ^18.12.0", "@octokit/rest@^18.12.0": - version "18.12.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" - integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== - dependencies: - "@octokit/core" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.16.8" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^5.12.0" - -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": - version "6.41.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" - integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== - dependencies: - "@octokit/openapi-types" "^12.11.0" - -"@sindresorhus/is@^4.0.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== - -"@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== - dependencies: - defer-to-connect "^2.0.0" - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@types/cacheable-request@^6.0.1": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" - integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== - dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "^3.1.4" - "@types/node" "*" - "@types/responselike" "^1.0.0" - -"@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== - -"@types/keyv@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" - integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== - dependencies: - "@types/node" "*" - -"@types/node@*": - version "20.5.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.9.tgz#a70ec9d8fa0180a314c3ede0e20ea56ff71aed9a" - integrity sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ== - -"@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== - dependencies: - "@types/node" "*" - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -async-retry@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.2.3.tgz#a6521f338358d322b1a0012b79030c6f411d1ce0" - integrity sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q== - dependencies: - retry "0.12.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -before-after-hook@^2.2.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" - integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== - -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== - -cacheable-request@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" - integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^6.0.1" - responselike "^2.0.0" - -chalk@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -colors@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.18.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -core-js@^3.8.2: - version "3.32.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.1.tgz#a7d8736a3ed9dd05940c3c4ff32c591bb735be77" - integrity sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ== - -danger@^11.2.8: - version "11.2.8" - resolved "https://registry.yarnpkg.com/danger/-/danger-11.2.8.tgz#0e0375a5c311f93be8f53e9be1b44d8c5434b72f" - integrity sha512-d3iYhIJmo3V5WatWjsHbFpx/V5nz7fKsM7rQi91f/9CemLCH8wt3Jg1JKsEpiTHUtzNplOpudk0yFsWeHygd/w== - dependencies: - "@gitbeaker/node" "^21.3.0" - "@octokit/rest" "^18.12.0" - async-retry "1.2.3" - chalk "^2.3.0" - commander "^2.18.0" - core-js "^3.8.2" - debug "^4.1.1" - fast-json-patch "^3.0.0-1" - get-stdin "^6.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.1" - hyperlinker "^1.0.0" - json5 "^2.1.0" - jsonpointer "^5.0.0" - jsonwebtoken "^9.0.0" - lodash.find "^4.6.0" - lodash.includes "^4.3.0" - lodash.isobject "^3.0.2" - lodash.keys "^4.0.8" - lodash.mapvalues "^4.6.0" - lodash.memoize "^4.1.2" - memfs-or-file-map-to-github-branch "^1.2.1" - micromatch "^4.0.4" - node-cleanup "^2.1.2" - node-fetch "^2.6.7" - override-require "^1.1.1" - p-limit "^2.1.0" - parse-diff "^0.7.0" - parse-git-config "^2.0.3" - parse-github-url "^1.0.2" - parse-link-header "^2.0.0" - pinpoint "^1.1.0" - prettyjson "^1.2.1" - readline-sync "^1.4.9" - regenerator-runtime "^0.13.9" - require-from-string "^2.0.2" - supports-hyperlinks "^1.0.1" - -debug@4, debug@^4.1.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decode-uri-component@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -defer-to-connect@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - -ecdsa-sig-formatter@1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== - dependencies: - homedir-polyfill "^1.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -fast-json-patch@^3.0.0-1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" - integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -git-config-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/git-config-path/-/git-config-path-1.0.1.tgz#6d33f7ed63db0d0e118131503bab3aca47d54664" - integrity sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg== - dependencies: - extend-shallow "^2.0.1" - fs-exists-sync "^0.1.0" - homedir-polyfill "^1.0.0" - -got@^11.1.4: - version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" - integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== - dependencies: - "@sindresorhus/is" "^4.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -http-cache-semantics@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" - -https-proxy-agent@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -hyperlinker@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" - integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== - -ini@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -is-extendable@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json5@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonpointer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== - -jsonwebtoken@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" - integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^7.5.4" - -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" - integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" - integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - dependencies: - jwa "^1.4.1" - safe-buffer "^5.0.1" - -keyv@^4.0.0: - version "4.5.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" - integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== - dependencies: - json-buffer "3.0.1" - -li@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/li/-/li-1.3.0.tgz#22c59bcaefaa9a8ef359cf759784e4bf106aea1b" - integrity sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw== - -lodash.find@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" - integrity sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg== - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== - -lodash.isobject@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" - integrity sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== - -lodash.keys@^4.0.8: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" - integrity sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ== - -lodash.mapvalues@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" - integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -memfs-or-file-map-to-github-branch@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/memfs-or-file-map-to-github-branch/-/memfs-or-file-map-to-github-branch-1.2.1.tgz#fdb9a85408262316a9bd5567409bf89be7d72f96" - integrity sha512-I/hQzJ2a/pCGR8fkSQ9l5Yx+FQ4e7X6blNHyWBm2ojeFLT3GVzGkTj7xnyWpdclrr7Nq4dmx3xrvu70m3ypzAQ== - dependencies: - "@octokit/rest" "^16.43.0 || ^17.11.0 || ^18.12.0" - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -minimist@^1.2.0: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -node-cleanup@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" - integrity sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw== - -node-fetch@^2.6.7: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -override-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/override-require/-/override-require-1.1.1.tgz#6ae22fadeb1f850ffb0cf4c20ff7b87e5eb650df" - integrity sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg== - -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== - -p-limit@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parse-diff@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/parse-diff/-/parse-diff-0.7.1.tgz#9b7a2451c3725baf2c87c831ba192d40ee2237d4" - integrity sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg== - -parse-git-config@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-2.0.3.tgz#6fb840d4a956e28b971c97b33a5deb73a6d5b6bb" - integrity sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A== - dependencies: - expand-tilde "^2.0.2" - git-config-path "^1.0.1" - ini "^1.3.5" - -parse-github-url@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" - integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== - -parse-link-header@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-link-header/-/parse-link-header-2.0.0.tgz#949353e284f8aa01f2ac857a98f692b57733f6b7" - integrity sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw== - dependencies: - xtend "~4.0.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pinpoint@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pinpoint/-/pinpoint-1.1.0.tgz#0cf7757a6977f1bf7f6a32207b709e377388e874" - integrity sha512-+04FTD9x7Cls2rihLlo57QDCcHoLBGn5Dk51SwtFBWkUWLxZaBXyNVpCw1S+atvE7GmnFjeaRZ0WLq3UYuqAdg== - -prettyjson@^1.2.1: - version "1.2.5" - resolved "https://registry.yarnpkg.com/prettyjson/-/prettyjson-1.2.5.tgz#ef3cfffcc70505c032abc59785884b4027031835" - integrity sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw== - dependencies: - colors "1.4.0" - minimist "^1.2.0" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -query-string@^6.12.1: - version "6.14.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -readline-sync@^1.4.9: - version "1.4.10" - resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" - integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== - -regenerator-runtime@^0.13.9: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -resolve-alpn@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - -responselike@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" - integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== - dependencies: - lowercase-keys "^2.0.0" - -retry@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - -safe-buffer@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== - -supports-color@^5.0.0, supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-hyperlinks@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" - integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== - dependencies: - has-flag "^2.0.0" - supports-color "^5.0.0" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -xcase@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xcase/-/xcase-2.0.1.tgz#c7fa72caa0f440db78fd5673432038ac984450b9" - integrity sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw== - -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yarn@^1.22.19: - version "1.22.19" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" - integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==