diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index b43063c..4e7084c 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -13,6 +13,10 @@ + + \ No newline at end of file diff --git a/.idea/icon.png b/.idea/icon.png new file mode 100644 index 0000000..b2237ef Binary files /dev/null and b/.idea/icon.png differ diff --git a/.idea/icon_dark.png b/.idea/icon_dark.png new file mode 100644 index 0000000..e6d5dd8 Binary files /dev/null and b/.idea/icon_dark.png differ diff --git a/app/src/main/java/com/songlib/MainActivity.kt b/app/src/main/java/com/songlib/MainActivity.kt index 0347317..6bac76a 100644 --- a/app/src/main/java/com/songlib/MainActivity.kt +++ b/app/src/main/java/com/songlib/MainActivity.kt @@ -1,24 +1,20 @@ package com.songlib -import android.os.* -import androidx.activity.* + +import android.os.Bundle +import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.annotation.* -import androidx.compose.foundation.* -import androidx.compose.ui.* +import androidx.compose.foundation.isSystemInDarkTheme import androidx.hilt.navigation.compose.hiltViewModel -import com.songlib.domain.repos.ThemeMode -import com.songlib.domain.repos.ThemeRepository -import com.songlib.presentation.navigation.* -import com.songlib.presentation.theme.* +import com.songlib.app.navigation.AppNavHost +import com.songlib.core.data.repos.ThemeRepository +import com.songlib.core.data.repos.ThemeMode +import com.songlib.core.designsystem.theme.AppTheme import dagger.hilt.android.AndroidEntryPoint -@ExperimentalComposeUiApi -@ExperimentalFoundationApi -@Keep @AndroidEntryPoint class MainActivity : ComponentActivity() { - @RequiresApi(Build.VERSION_CODES.S) + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -36,4 +32,4 @@ class MainActivity : ComponentActivity() { } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/songlib/SongLibApp.kt b/app/src/main/java/com/songlib/SongLibApp.kt index 7f6dd3c..d4b95d7 100644 --- a/app/src/main/java/com/songlib/SongLibApp.kt +++ b/app/src/main/java/com/songlib/SongLibApp.kt @@ -4,7 +4,6 @@ import android.app.Application import com.revenuecat.purchases.Purchases import com.revenuecat.purchases.PurchasesConfiguration import dagger.hilt.android.HiltAndroidApp -//import io.sentry.android.core.SentryAndroid @HiltAndroidApp class SongLibApp : Application() { @@ -12,15 +11,11 @@ class SongLibApp : Application() { override fun onCreate() { super.onCreate() - Purchases.configure( - PurchasesConfiguration.Builder(this, BuildConfig.RcApiKey) - .build() - ) - -// SentryAndroid.init(this) { options -> -// options.dsn = BuildConfig.SentryDsn -// options.tracesSampleRate = 1.0 -// options.isDebug = false -// } + if (!BuildConfig.DEBUG) { + Purchases.configure( + PurchasesConfiguration.Builder(this, BuildConfig.RcApiKey) + .build() + ) + } } } diff --git a/app/src/main/java/com/songlib/presentation/navigation/AppNavHost.kt b/app/src/main/java/com/songlib/app/navigation/AppNavHost.kt similarity index 74% rename from app/src/main/java/com/songlib/presentation/navigation/AppNavHost.kt rename to app/src/main/java/com/songlib/app/navigation/AppNavHost.kt index 72a197f..3d86ce7 100644 --- a/app/src/main/java/com/songlib/presentation/navigation/AppNavHost.kt +++ b/app/src/main/java/com/songlib/app/navigation/AppNavHost.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.navigation +package com.songlib.app.navigation import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.runtime.* @@ -6,20 +6,21 @@ import androidx.compose.ui.ExperimentalComposeUiApi import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.* import androidx.navigation.compose.* -import com.songlib.data.models.* -import com.songlib.domain.repos.ThemeRepository -import com.songlib.presentation.home.HomeViewModel -import com.songlib.presentation.home.view.HomeScreen -import com.songlib.presentation.listing.ListingViewModel -import com.songlib.presentation.listing.view.ListingScreen -import com.songlib.presentation.presenter.PresenterViewModel -import com.songlib.presentation.presenter.view.PresenterScreen -import com.songlib.presentation.selection.SelectionViewModel -import com.songlib.presentation.selection.view.SelectionScreen -import com.songlib.presentation.settings.SettingsViewModel -import com.songlib.presentation.settings.view.SettingsScreen -import com.songlib.presentation.splash.SplashViewModel -import com.songlib.presentation.splash.view.SplashScreen +import com.songlib.core.database.model.* +import com.songlib.core.data.repos.ThemeRepository +import com.songlib.feature.home.HomeViewModel +import com.songlib.feature.home.view.HomeScreen +import com.songlib.feature.listing.ListingViewModel +import com.songlib.feature.listing.view.ListingScreen +import com.songlib.core.common.utils.Routes +import com.songlib.feature.presenter.PresenterViewModel +import com.songlib.feature.presenter.view.PresenterScreen +import com.songlib.feature.selection.SelectionViewModel +import com.songlib.feature.selection.view.SelectionScreen +import com.songlib.feature.settings.SettingsViewModel +import com.songlib.feature.settings.view.SettingsScreen +import com.songlib.feature.splash.SplashViewModel +import com.songlib.feature.splash.view.SplashScreen @OptIn(ExperimentalComposeUiApi::class, ExperimentalFoundationApi::class) @Composable diff --git a/app/src/main/java/com/songlib/presentation/navigation/Routes.kt b/app/src/main/java/com/songlib/presentation/navigation/Routes.kt deleted file mode 100644 index dca0f51..0000000 --- a/app/src/main/java/com/songlib/presentation/navigation/Routes.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.songlib.presentation.navigation - -object Routes { - const val SPLASH = "splash" - const val SELECTION = "selection" - const val HOME = "home" - const val PRESENTER = "presenter" - const val LISTING = "listing" - const val SETTINGS = "settings" -} diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts new file mode 100644 index 0000000..7e8ff06 --- /dev/null +++ b/build-logic/convention/build.gradle.kts @@ -0,0 +1,52 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + `kotlin-dsl` +} + +group = "com.songlib.buildlogic" + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_17 + } +} + +dependencies { + compileOnly(libs.plugins.android.application.toDep()) + compileOnly(libs.plugins.android.library.toDep()) + compileOnly(libs.plugins.kotlin.android.toDep()) + compileOnly(libs.plugins.kotlin.compose.toDep()) + compileOnly(libs.plugins.dagger.hilt.toDep()) + compileOnly(libs.plugins.devtools.ksp.toDep()) +} + +fun Provider.toDep() = map { + "${it.pluginId}:${it.pluginId}.gradle.plugin:${it.version}" +} + +gradlePlugin { + plugins { + register("androidLibrary") { + id = "songlib.android.library" + implementationClass = "AndroidLibraryConventionPlugin" + } + register("androidLibraryCompose") { + id = "songlib.android.library.compose" + implementationClass = "AndroidLibraryComposeConventionPlugin" + } + register("androidFeature") { + id = "songlib.android.feature" + implementationClass = "AndroidFeatureConventionPlugin" + } + register("hilt") { + id = "songlib.hilt" + implementationClass = "HiltConventionPlugin" + } + } +} diff --git a/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt new file mode 100644 index 0000000..3473c06 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt @@ -0,0 +1,40 @@ +import com.songlib.libs +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +/** + * Convention plugin for feature modules. + * Applies: android library + compose + hilt. + * Adds standard feature dependencies: core:ui, core:common. + */ +class AndroidFeatureConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + pluginManager.apply("songlib.android.library.compose") + pluginManager.apply("songlib.hilt") + + dependencies { + "implementation"(project(":core:ui")) + "implementation"(project(":core:common")) + "implementation"(project(":core:designsystem")) + + "implementation"(libs.findLibrary("androidx.compose.bom").get()) + "implementation"(libs.findLibrary("androidx.activity.compose").get()) + "implementation"(libs.findLibrary("androidx.ui").get()) + "implementation"(libs.findLibrary("androidx.ui.graphics").get()) + + "implementation"(libs.findLibrary("androidx.material3").get()) + "implementation"(libs.findLibrary("androidx.compose.material").get()) + "implementation"(libs.findLibrary("androidx.icons.extended").get()) + + "implementation"(libs.findLibrary("androidx.ui.tooling").get()) + "implementation"(libs.findLibrary("androidx.foundation").get()) + + "implementation"(libs.findLibrary("compose.navigation").get()) + "implementation"(libs.findLibrary("compose.hilt.navigation").get()) + "implementation"(libs.findLibrary("androidx.compose.livedata").get()) + } + } + } +} diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt new file mode 100644 index 0000000..ad263f8 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt @@ -0,0 +1,27 @@ +import com.android.build.gradle.LibraryExtension +import com.songlib.libs +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies + +/** + * Applies the base Android library plugin PLUS Compose support. + * Feature modules that expose Composables should use this plugin. + */ +class AndroidLibraryComposeConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + pluginManager.apply("songlib.android.library") + pluginManager.apply("org.jetbrains.kotlin.plugin.compose") + + dependencies { + "implementation"(libs.findLibrary("androidx.core.ktx").get()) + "implementation"(libs.findLibrary("androidx.lifecycle.runtime.ktx").get()) + } + extensions.configure { + buildFeatures { compose = true } + } + } + } +} diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt new file mode 100644 index 0000000..f9f7693 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt @@ -0,0 +1,33 @@ +import com.android.build.gradle.LibraryExtension +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure + +class AndroidLibraryConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.library") + apply("org.jetbrains.kotlin.android") + } + extensions.configure { + compileSdk = 35 + defaultConfig { + minSdk = 26 + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + compileOptions { + sourceCompatibility = org.gradle.api.JavaVersion.VERSION_11 + targetCompatibility = org.gradle.api.JavaVersion.VERSION_11 + } + kotlinOptions { jvmTarget = "11" } + } + } + } + + // Extension function kept here for brevity; in real projects extract to a separate file + private fun LibraryExtension.kotlinOptions(block: org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions.() -> Unit) { + (this as org.gradle.api.plugins.ExtensionAware).extensions + .configure("kotlinOptions", block) + } +} diff --git a/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt b/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt new file mode 100644 index 0000000..d1ebf71 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/HiltConventionPlugin.kt @@ -0,0 +1,17 @@ +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +class HiltConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + pluginManager.apply("com.google.dagger.hilt.android") + pluginManager.apply("com.google.devtools.ksp") + + dependencies { + add("implementation", "com.google.dagger:hilt-android:2.57.2") + add("ksp", "com.google.dagger:hilt-compiler:2.57.2") + } + } + } +} diff --git a/build-logic/convention/src/main/kotlin/com/songlib/ProjectExtensions.kt b/build-logic/convention/src/main/kotlin/com/songlib/ProjectExtensions.kt new file mode 100644 index 0000000..c785fff --- /dev/null +++ b/build-logic/convention/src/main/kotlin/com/songlib/ProjectExtensions.kt @@ -0,0 +1,9 @@ +package com.songlib + +import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.getByType + +val Project.libs + get(): VersionCatalog = extensions.getByType().named("libs") diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts new file mode 100644 index 0000000..f26e6d9 --- /dev/null +++ b/build-logic/settings.gradle.kts @@ -0,0 +1,15 @@ +dependencyResolutionManagement { + repositories { + google() + mavenCentral() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +rootProject.name = "build-logic" + +include(":convention") diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts new file mode 100644 index 0000000..d317bfa --- /dev/null +++ b/core/common/build.gradle.kts @@ -0,0 +1,13 @@ +plugins { + alias(libs.plugins.songlib.android.library) +} + +android { + namespace = "com.songlib.core.common" +} + +dependencies { + implementation(libs.androidx.core.ktx) + implementation(libs.ktor.client.android) + implementation(libs.revenuecat) +} diff --git a/core/common/src/main/AndroidManifest.xml b/core/common/src/main/AndroidManifest.xml new file mode 100644 index 0000000..f0f34af --- /dev/null +++ b/core/common/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/java/com/songlib/domain/entity/Basics.kt b/core/common/src/main/java/com/songlib/core/common/entity/Basics.kt similarity index 67% rename from app/src/main/java/com/songlib/domain/entity/Basics.kt rename to core/common/src/main/java/com/songlib/core/common/entity/Basics.kt index e439c02..5b0fc88 100644 --- a/app/src/main/java/com/songlib/domain/entity/Basics.kt +++ b/core/common/src/main/java/com/songlib/core/common/entity/Basics.kt @@ -1,4 +1,4 @@ -package com.songlib.domain.entity +package com.songlib.core.common.entity data class Selectable( val data: T, diff --git a/app/src/main/java/com/songlib/domain/entity/UiState.kt b/core/common/src/main/java/com/songlib/core/common/entity/UiState.kt similarity index 93% rename from app/src/main/java/com/songlib/domain/entity/UiState.kt rename to core/common/src/main/java/com/songlib/core/common/entity/UiState.kt index 9c47c42..2de8492 100644 --- a/app/src/main/java/com/songlib/domain/entity/UiState.kt +++ b/core/common/src/main/java/com/songlib/core/common/entity/UiState.kt @@ -1,4 +1,4 @@ -package com.songlib.domain.entity +package com.songlib.core.common.entity sealed class UiState { object Idle : UiState() diff --git a/app/src/main/java/com/songlib/core/helpers/NetworkHelpers.kt b/core/common/src/main/java/com/songlib/core/common/helpers/NetworkHelpers.kt similarity index 97% rename from app/src/main/java/com/songlib/core/helpers/NetworkHelpers.kt rename to core/common/src/main/java/com/songlib/core/common/helpers/NetworkHelpers.kt index 7fa6582..de3acb0 100644 --- a/app/src/main/java/com/songlib/core/helpers/NetworkHelpers.kt +++ b/core/common/src/main/java/com/songlib/core/common/helpers/NetworkHelpers.kt @@ -1,4 +1,4 @@ -package com.songlib.core.helpers +package com.songlib.core.common.helpers import android.content.Context import android.net.* diff --git a/app/src/main/java/com/songlib/core/utils/AppConstants.kt b/core/common/src/main/java/com/songlib/core/common/utils/AppConstants.kt similarity index 78% rename from app/src/main/java/com/songlib/core/utils/AppConstants.kt rename to core/common/src/main/java/com/songlib/core/common/utils/AppConstants.kt index c4e01d0..a0eee3a 100644 --- a/app/src/main/java/com/songlib/core/utils/AppConstants.kt +++ b/core/common/src/main/java/com/songlib/core/common/utils/AppConstants.kt @@ -1,4 +1,4 @@ -package com.songlib.core.utils +package com.songlib.core.common.utils object ApiConstants { const val BASE = "https://songlive.vercel.app/" @@ -30,4 +30,13 @@ object PrefConstants { const val THEME_MODE = "themeMode" const val HORIZONTAL_SLIDES = "horizontalSlides" const val LAST_APP_OPEN_TIME = "lastAppOpenTime" -} \ No newline at end of file +} + +object Routes { + const val SPLASH = "splash" + const val SELECTION = "selection" + const val HOME = "home" + const val PRESENTER = "presenter" + const val LISTING = "listing" + const val SETTINGS = "settings" +} diff --git a/app/src/main/java/com/songlib/core/utils/AppUtil.kt b/core/common/src/main/java/com/songlib/core/common/utils/AppUtil.kt similarity index 97% rename from app/src/main/java/com/songlib/core/utils/AppUtil.kt rename to core/common/src/main/java/com/songlib/core/common/utils/AppUtil.kt index ac24692..7ec7241 100644 --- a/app/src/main/java/com/songlib/core/utils/AppUtil.kt +++ b/core/common/src/main/java/com/songlib/core/common/utils/AppUtil.kt @@ -1,4 +1,4 @@ -package com.songlib.core.utils +package com.songlib.core.common.utils fun refineTitle(textTitle: String): String { return textTitle.replace("''", "'") diff --git a/app/src/main/java/com/songlib/core/utils/SongUtils.kt b/core/common/src/main/java/com/songlib/core/common/utils/SongUtils.kt similarity index 93% rename from app/src/main/java/com/songlib/core/utils/SongUtils.kt rename to core/common/src/main/java/com/songlib/core/common/utils/SongUtils.kt index 2812664..60f6291 100644 --- a/app/src/main/java/com/songlib/core/utils/SongUtils.kt +++ b/core/common/src/main/java/com/songlib/core/common/utils/SongUtils.kt @@ -1,6 +1,6 @@ -package com.songlib.core.utils +package com.songlib.core.common.utils -import com.songlib.data.models.Song +import com.songlib.core.database.model.Song object SongUtils { diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts new file mode 100644 index 0000000..b3fa164 --- /dev/null +++ b/core/data/build.gradle.kts @@ -0,0 +1,21 @@ +plugins { + alias(libs.plugins.songlib.android.library) + alias(libs.plugins.songlib.hilt) +} + +android { + namespace = "com.songlib.core.data" +} + +dependencies { + api(project(":core:database")) + api(project(":core:network")) + implementation(project(":core:common")) + + api(libs.androidx.compose.material) + + implementation(platform(libs.jan.tennert.supabase.bom)) + implementation(libs.jan.tennert.supabase.postgrest) + implementation(libs.androidx.core.ktx) + implementation(libs.revenuecat) +} diff --git a/app/src/main/java/com/songlib/core/di/AppModule.kt b/core/data/src/main/java/com/songlib/core/data/di/DataModule.kt similarity index 73% rename from app/src/main/java/com/songlib/core/di/AppModule.kt rename to core/data/src/main/java/com/songlib/core/data/di/DataModule.kt index afe6373..bd116b2 100644 --- a/app/src/main/java/com/songlib/core/di/AppModule.kt +++ b/core/data/src/main/java/com/songlib/core/data/di/DataModule.kt @@ -1,13 +1,14 @@ -package com.songlib.core.di +package com.songlib.core.data.di import android.content.Context -import com.songlib.data.sources.remote.ApiService -import com.songlib.domain.repos.ListingRepo -import com.songlib.domain.repos.PrefsRepo -import com.songlib.domain.repos.SongBookRepo -import com.songlib.domain.repos.SubsRepo -import com.songlib.domain.repos.ThemeRepository -import com.songlib.domain.repos.TrackingRepo +import com.songlib.core.network.ApiService +import com.songlib.core.network.di.NetworkModule +import com.songlib.core.data.repos.ListingRepo +import com.songlib.core.data.repos.PrefsRepo +import com.songlib.core.data.repos.SongBookRepo +import com.songlib.core.data.repos.SubsRepo +import com.songlib.core.data.repos.ThemeRepository +import com.songlib.core.data.repos.TrackingRepo import dagger.* import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext @@ -16,7 +17,8 @@ import javax.inject.Singleton @InstallIn(SingletonComponent::class) @Module(includes = [NetworkModule::class]) -class AppModule { +object DataModule { + @Provides @Singleton fun provideListingRepository( @@ -52,4 +54,4 @@ class AppModule { fun provideTrackingRepository( @ApplicationContext context: Context, ): TrackingRepo = TrackingRepo(context) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/songlib/domain/repos/ListingRepo.kt b/core/data/src/main/java/com/songlib/core/data/repos/ListingRepo.kt similarity index 93% rename from app/src/main/java/com/songlib/domain/repos/ListingRepo.kt rename to core/data/src/main/java/com/songlib/core/data/repos/ListingRepo.kt index 1458f48..0dcfca6 100644 --- a/app/src/main/java/com/songlib/domain/repos/ListingRepo.kt +++ b/core/data/src/main/java/com/songlib/core/data/repos/ListingRepo.kt @@ -1,10 +1,10 @@ -package com.songlib.domain.repos +package com.songlib.core.data.repos import android.content.* -import com.songlib.core.utils.toTimeAgo -import com.songlib.data.models.* -import com.songlib.data.sources.local.* -import com.songlib.data.sources.local.daos.* +import com.songlib.core.common.utils.toTimeAgo +import com.songlib.core.database.model.* +import com.songlib.core.database.* +import com.songlib.core.database.daos.* import kotlinx.coroutines.* import javax.inject.* diff --git a/app/src/main/java/com/songlib/domain/repos/PrefsRepo.kt b/core/data/src/main/java/com/songlib/core/data/repos/PrefsRepo.kt similarity index 96% rename from app/src/main/java/com/songlib/domain/repos/PrefsRepo.kt rename to core/data/src/main/java/com/songlib/core/data/repos/PrefsRepo.kt index 7701e6a..832c39f 100644 --- a/app/src/main/java/com/songlib/domain/repos/PrefsRepo.kt +++ b/core/data/src/main/java/com/songlib/core/data/repos/PrefsRepo.kt @@ -1,7 +1,7 @@ -package com.songlib.domain.repos +package com.songlib.core.data.repos import android.content.Context -import com.songlib.core.utils.PrefConstants +import com.songlib.core.common.utils.PrefConstants import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.* import androidx.core.content.edit diff --git a/app/src/main/java/com/songlib/domain/repos/SongBookRepo.kt b/core/data/src/main/java/com/songlib/core/data/repos/SongBookRepo.kt similarity index 94% rename from app/src/main/java/com/songlib/domain/repos/SongBookRepo.kt rename to core/data/src/main/java/com/songlib/core/data/repos/SongBookRepo.kt index 7221a20..170f937 100644 --- a/app/src/main/java/com/songlib/domain/repos/SongBookRepo.kt +++ b/core/data/src/main/java/com/songlib/core/data/repos/SongBookRepo.kt @@ -1,11 +1,11 @@ -package com.songlib.domain.repos +package com.songlib.core.data.repos import android.content.* import android.util.Log -import com.songlib.data.models.* -import com.songlib.data.sources.local.* -import com.songlib.data.sources.local.daos.* -import com.songlib.data.sources.remote.ApiService +import com.songlib.core.database.model.* +import com.songlib.core.database.* +import com.songlib.core.database.daos.* +import com.songlib.core.network.ApiService import kotlinx.coroutines.* import kotlinx.coroutines.flow.* import javax.inject.* diff --git a/app/src/main/java/com/songlib/domain/repos/SubsRepo.kt b/core/data/src/main/java/com/songlib/core/data/repos/SubsRepo.kt similarity index 95% rename from app/src/main/java/com/songlib/domain/repos/SubsRepo.kt rename to core/data/src/main/java/com/songlib/core/data/repos/SubsRepo.kt index d170560..e20d787 100644 --- a/app/src/main/java/com/songlib/domain/repos/SubsRepo.kt +++ b/core/data/src/main/java/com/songlib/core/data/repos/SubsRepo.kt @@ -1,4 +1,4 @@ -package com.songlib.domain.repos +package com.songlib.core.data.repos import com.revenuecat.purchases.* import javax.inject.* diff --git a/app/src/main/java/com/songlib/domain/repos/ThemeRepo.kt b/core/data/src/main/java/com/songlib/core/data/repos/ThemeRepo.kt similarity index 98% rename from app/src/main/java/com/songlib/domain/repos/ThemeRepo.kt rename to core/data/src/main/java/com/songlib/core/data/repos/ThemeRepo.kt index 93b3ea4..b65b72b 100644 --- a/app/src/main/java/com/songlib/domain/repos/ThemeRepo.kt +++ b/core/data/src/main/java/com/songlib/core/data/repos/ThemeRepo.kt @@ -1,4 +1,4 @@ -package com.songlib.domain.repos +package com.songlib.core.data.repos import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* diff --git a/app/src/main/java/com/songlib/domain/repos/TrackingRepo.kt b/core/data/src/main/java/com/songlib/core/data/repos/TrackingRepo.kt similarity index 92% rename from app/src/main/java/com/songlib/domain/repos/TrackingRepo.kt rename to core/data/src/main/java/com/songlib/core/data/repos/TrackingRepo.kt index 7056819..7e8efda 100644 --- a/app/src/main/java/com/songlib/domain/repos/TrackingRepo.kt +++ b/core/data/src/main/java/com/songlib/core/data/repos/TrackingRepo.kt @@ -1,9 +1,9 @@ -package com.songlib.domain.repos +package com.songlib.core.data.repos import android.content.* -import com.songlib.data.models.* -import com.songlib.data.sources.local.* -import com.songlib.data.sources.local.daos.* +import com.songlib.core.database.model.* +import com.songlib.core.database.* +import com.songlib.core.database.daos.* import kotlinx.coroutines.* import javax.inject.* diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts new file mode 100644 index 0000000..b0230be --- /dev/null +++ b/core/database/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + alias(libs.plugins.songlib.android.library) + alias(libs.plugins.songlib.hilt) + alias(libs.plugins.devtools.ksp) + id("kotlin-parcelize") +} + +android { + namespace = "com.songlib.core.database" +} + +dependencies { + implementation(libs.androidx.room.runtime) + ksp(libs.androidx.room.compiler) +} diff --git a/app/src/main/java/com/songlib/data/sources/local/AppDatabase.kt b/core/database/src/main/java/com/songlib/core/database/AppDatabase.kt similarity index 90% rename from app/src/main/java/com/songlib/data/sources/local/AppDatabase.kt rename to core/database/src/main/java/com/songlib/core/database/AppDatabase.kt index 12bba16..3075d50 100644 --- a/app/src/main/java/com/songlib/data/sources/local/AppDatabase.kt +++ b/core/database/src/main/java/com/songlib/core/database/AppDatabase.kt @@ -1,9 +1,9 @@ -package com.songlib.data.sources.local +package com.songlib.core.database import android.content.Context import androidx.room.* -import com.songlib.data.models.* -import com.songlib.data.sources.local.daos.* +import com.songlib.core.database.model.* +import com.songlib.core.database.daos.* @Database( entities = [Book::class, History::class, Listing::class, Search::class, Song::class], diff --git a/app/src/main/java/com/songlib/data/sources/local/daos/BookDao.kt b/core/database/src/main/java/com/songlib/core/database/daos/BookDao.kt similarity index 81% rename from app/src/main/java/com/songlib/data/sources/local/daos/BookDao.kt rename to core/database/src/main/java/com/songlib/core/database/daos/BookDao.kt index d8d1e0d..e1618f6 100644 --- a/app/src/main/java/com/songlib/data/sources/local/daos/BookDao.kt +++ b/core/database/src/main/java/com/songlib/core/database/daos/BookDao.kt @@ -1,8 +1,8 @@ -package com.songlib.data.sources.local.daos +package com.songlib.core.database.daos import androidx.room.* -import com.songlib.core.utils.DbConstants -import com.songlib.data.models.Book +import com.songlib.core.common.utils.DbConstants +import com.songlib.core.database.model.Book @Dao interface BookDao { diff --git a/app/src/main/java/com/songlib/data/sources/local/daos/HistoryDao.kt b/core/database/src/main/java/com/songlib/core/database/daos/HistoryDao.kt similarity index 79% rename from app/src/main/java/com/songlib/data/sources/local/daos/HistoryDao.kt rename to core/database/src/main/java/com/songlib/core/database/daos/HistoryDao.kt index 1ad2d27..6b910ca 100644 --- a/app/src/main/java/com/songlib/data/sources/local/daos/HistoryDao.kt +++ b/core/database/src/main/java/com/songlib/core/database/daos/HistoryDao.kt @@ -1,8 +1,8 @@ -package com.songlib.data.sources.local.daos +package com.songlib.core.database.daos import androidx.room.* -import com.songlib.core.utils.DbConstants -import com.songlib.data.models.History +import com.songlib.core.common.utils.DbConstants +import com.songlib.core.database.model.History @Dao interface HistoryDao { diff --git a/app/src/main/java/com/songlib/data/sources/local/daos/ListingDao.kt b/core/database/src/main/java/com/songlib/core/database/daos/ListingDao.kt similarity index 83% rename from app/src/main/java/com/songlib/data/sources/local/daos/ListingDao.kt rename to core/database/src/main/java/com/songlib/core/database/daos/ListingDao.kt index 0c01250..5dce90d 100644 --- a/app/src/main/java/com/songlib/data/sources/local/daos/ListingDao.kt +++ b/core/database/src/main/java/com/songlib/core/database/daos/ListingDao.kt @@ -1,8 +1,8 @@ -package com.songlib.data.sources.local.daos +package com.songlib.core.database.daos import androidx.room.* -import com.songlib.core.utils.DbConstants -import com.songlib.data.models.Listing +import com.songlib.core.common.utils.DbConstants +import com.songlib.core.database.model.Listing @Dao interface ListingDao { diff --git a/app/src/main/java/com/songlib/data/sources/local/daos/SearchDao.kt b/core/database/src/main/java/com/songlib/core/database/daos/SearchDao.kt similarity index 78% rename from app/src/main/java/com/songlib/data/sources/local/daos/SearchDao.kt rename to core/database/src/main/java/com/songlib/core/database/daos/SearchDao.kt index cd42f33..c32be59 100644 --- a/app/src/main/java/com/songlib/data/sources/local/daos/SearchDao.kt +++ b/core/database/src/main/java/com/songlib/core/database/daos/SearchDao.kt @@ -1,8 +1,8 @@ -package com.songlib.data.sources.local.daos +package com.songlib.core.database.daos import androidx.room.* -import com.songlib.core.utils.DbConstants -import com.songlib.data.models.Search +import com.songlib.core.common.utils.DbConstants +import com.songlib.core.database.model.Search @Dao interface SearchDao { diff --git a/app/src/main/java/com/songlib/data/sources/local/daos/SongDao.kt b/core/database/src/main/java/com/songlib/core/database/daos/SongDao.kt similarity index 84% rename from app/src/main/java/com/songlib/data/sources/local/daos/SongDao.kt rename to core/database/src/main/java/com/songlib/core/database/daos/SongDao.kt index c39feef..191d078 100644 --- a/app/src/main/java/com/songlib/data/sources/local/daos/SongDao.kt +++ b/core/database/src/main/java/com/songlib/core/database/daos/SongDao.kt @@ -1,8 +1,8 @@ -package com.songlib.data.sources.local.daos +package com.songlib.core.database.daos import androidx.room.* -import com.songlib.core.utils.DbConstants -import com.songlib.data.models.Song +import com.songlib.core.common.utils.DbConstants +import com.songlib.core.database.model.Song @Dao interface SongDao { diff --git a/core/database/src/main/java/com/songlib/core/database/di/DatabaseModule.kt b/core/database/src/main/java/com/songlib/core/database/di/DatabaseModule.kt new file mode 100644 index 0000000..9aa9e5f --- /dev/null +++ b/core/database/src/main/java/com/songlib/core/database/di/DatabaseModule.kt @@ -0,0 +1,36 @@ +package com.songlib.core.database.di + +import android.content.Context +import androidx.room.Room +import com.songlib.core.database.AppDatabase +import com.songlib.core.database.daos.HistoryDao +import com.songlib.core.database.daos.IdiomDao +import com.songlib.core.database.daos.ProverbDao +import com.songlib.core.database.daos.SayingDao +import com.songlib.core.database.daos.SearchDao +import com.songlib.core.database.daos.WordDao +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@InstallIn(SingletonComponent::class) +@Module +object DatabaseModule { + + @Provides + @Singleton + fun provideDatabase(@ApplicationContext appContext: Context): AppDatabase = + Room.databaseBuilder(appContext, AppDatabase::class.java, "SwahiliLibrary") + .fallbackToDestructiveMigration() + .build() + + @Provides fun provideHistoryDao(db: AppDatabase): HistoryDao = db.historiesDao() + @Provides fun provideIdiomDao(db: AppDatabase): IdiomDao = db.idiomsDao() + @Provides fun provideProverbDao(db: AppDatabase): ProverbDao = db.proverbsDao() + @Provides fun provideSayingDao(db: AppDatabase): SayingDao = db.sayingsDao() + @Provides fun provideSearchDao(db: AppDatabase): SearchDao = db.searchesDao() + @Provides fun provideWordDao(db: AppDatabase): WordDao = db.wordsDao() +} diff --git a/app/src/main/java/com/songlib/data/models/Book.kt b/core/database/src/main/java/com/songlib/core/database/model/Book.kt similarity index 88% rename from app/src/main/java/com/songlib/data/models/Book.kt rename to core/database/src/main/java/com/songlib/core/database/model/Book.kt index bb69569..2d60faf 100644 --- a/app/src/main/java/com/songlib/data/models/Book.kt +++ b/core/database/src/main/java/com/songlib/core/database/model/Book.kt @@ -1,9 +1,9 @@ -package com.songlib.data.models +package com.songlib.core.database.model import android.os.Parcelable import androidx.annotation.Keep import androidx.room.* -import com.songlib.core.utils.DbConstants +import com.songlib.core.common.utils.DbConstants import kotlinx.parcelize.Parcelize @Keep diff --git a/app/src/main/java/com/songlib/data/models/History.kt b/core/database/src/main/java/com/songlib/core/database/model/History.kt similarity index 76% rename from app/src/main/java/com/songlib/data/models/History.kt rename to core/database/src/main/java/com/songlib/core/database/model/History.kt index 5674b00..94cc833 100644 --- a/app/src/main/java/com/songlib/data/models/History.kt +++ b/core/database/src/main/java/com/songlib/core/database/model/History.kt @@ -1,8 +1,8 @@ -package com.songlib.data.models +package com.songlib.core.database.model import androidx.annotation.Keep import androidx.room.* -import com.songlib.core.utils.DbConstants +import com.songlib.core.common.utils.DbConstants @Keep @Entity(tableName = DbConstants.HISTORIES) diff --git a/app/src/main/java/com/songlib/data/models/Listing.kt b/core/database/src/main/java/com/songlib/core/database/model/Listing.kt similarity index 86% rename from app/src/main/java/com/songlib/data/models/Listing.kt rename to core/database/src/main/java/com/songlib/core/database/model/Listing.kt index f99cc25..ba70272 100644 --- a/app/src/main/java/com/songlib/data/models/Listing.kt +++ b/core/database/src/main/java/com/songlib/core/database/model/Listing.kt @@ -1,9 +1,9 @@ -package com.songlib.data.models +package com.songlib.core.database.model import android.os.Parcelable import androidx.annotation.Keep import androidx.room.* -import com.songlib.core.utils.DbConstants +import com.songlib.core.common.utils.DbConstants import kotlinx.parcelize.Parcelize @Keep diff --git a/app/src/main/java/com/songlib/data/models/Search.kt b/core/database/src/main/java/com/songlib/core/database/model/Search.kt similarity index 77% rename from app/src/main/java/com/songlib/data/models/Search.kt rename to core/database/src/main/java/com/songlib/core/database/model/Search.kt index 775198a..6d0ad1a 100644 --- a/app/src/main/java/com/songlib/data/models/Search.kt +++ b/core/database/src/main/java/com/songlib/core/database/model/Search.kt @@ -1,8 +1,8 @@ -package com.songlib.data.models +package com.songlib.core.database.model import androidx.annotation.Keep import androidx.room.* -import com.songlib.core.utils.DbConstants +import com.songlib.core.common.utils.DbConstants import java.util.Date @Keep diff --git a/app/src/main/java/com/songlib/data/models/Song.kt b/core/database/src/main/java/com/songlib/core/database/model/Song.kt similarity index 89% rename from app/src/main/java/com/songlib/data/models/Song.kt rename to core/database/src/main/java/com/songlib/core/database/model/Song.kt index e81d341..5103ba9 100644 --- a/app/src/main/java/com/songlib/data/models/Song.kt +++ b/core/database/src/main/java/com/songlib/core/database/model/Song.kt @@ -1,9 +1,9 @@ -package com.songlib.data.models +package com.songlib.core.database.model import android.os.Parcelable import androidx.annotation.Keep import androidx.room.* -import com.songlib.core.utils.DbConstants +import com.songlib.core.common.utils.DbConstants import kotlinx.parcelize.Parcelize @Keep diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts new file mode 100644 index 0000000..53db7a3 --- /dev/null +++ b/core/designsystem/build.gradle.kts @@ -0,0 +1,25 @@ +plugins { + alias(libs.plugins.songlib.android.library.compose) +} + +android { + namespace = "com.songlib.core.designsystem" +} + +dependencies { + api(project(":core:data")) + + + api(libs.material3) + api(libs.androidx.material3) + api(libs.androidx.ui) + api(libs.androidx.ui.graphics) + api(libs.androidx.foundation) + api(libs.androidx.activity.compose) + api(libs.androidx.compose.material) + api(libs.androidx.icons.extended) + + debugImplementation(libs.androidx.ui.tooling) + + implementation(libs.androidx.ui.tooling.preview) +} diff --git a/app/src/main/java/com/songlib/presentation/theme/Color.kt b/core/designsystem/src/main/java/com/songlib/core/designsystem/theme/Color.kt similarity index 98% rename from app/src/main/java/com/songlib/presentation/theme/Color.kt rename to core/designsystem/src/main/java/com/songlib/core/designsystem/theme/Color.kt index 43bc01e..dec461c 100644 --- a/app/src/main/java/com/songlib/presentation/theme/Color.kt +++ b/core/designsystem/src/main/java/com/songlib/core/designsystem/theme/Color.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.theme +package com.songlib.core.designsystem.theme import androidx.compose.ui.graphics.Color diff --git a/app/src/main/java/com/songlib/presentation/theme/Theme.kt b/core/designsystem/src/main/java/com/songlib/core/designsystem/theme/Theme.kt similarity index 99% rename from app/src/main/java/com/songlib/presentation/theme/Theme.kt rename to core/designsystem/src/main/java/com/songlib/core/designsystem/theme/Theme.kt index 609f876..53a3488 100644 --- a/app/src/main/java/com/songlib/presentation/theme/Theme.kt +++ b/core/designsystem/src/main/java/com/songlib/core/designsystem/theme/Theme.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.theme +package com.songlib.core.designsystem.theme import android.app.Activity import android.os.Build diff --git a/app/src/main/java/com/songlib/presentation/theme/Typography.kt b/core/designsystem/src/main/java/com/songlib/core/designsystem/theme/Typography.kt similarity index 95% rename from app/src/main/java/com/songlib/presentation/theme/Typography.kt rename to core/designsystem/src/main/java/com/songlib/core/designsystem/theme/Typography.kt index 668cf01..6006949 100644 --- a/app/src/main/java/com/songlib/presentation/theme/Typography.kt +++ b/core/designsystem/src/main/java/com/songlib/core/designsystem/theme/Typography.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.theme +package com.songlib.core.designsystem.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts new file mode 100644 index 0000000..582e334 --- /dev/null +++ b/core/network/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + alias(libs.plugins.songlib.android.library) + alias(libs.plugins.songlib.hilt) + kotlin("plugin.serialization") version "2.1.21" +} + +android { + namespace = "com.songlib.core.network" + buildFeatures { buildConfig = true } +} + +dependencies { + api(project(":core:database")) + + implementation(platform(libs.jan.tennert.supabase.bom)) + implementation(libs.jan.tennert.supabase.postgrest) + implementation(libs.ktor.client.android) + implementation(libs.kotlinx.serialization.json) +} diff --git a/app/src/main/java/com/songlib/data/sources/remote/ApiService.kt b/core/network/src/main/java/com/songlib/core/network/ApiService.kt similarity index 70% rename from app/src/main/java/com/songlib/data/sources/remote/ApiService.kt rename to core/network/src/main/java/com/songlib/core/network/ApiService.kt index 5cd9794..7a9a422 100644 --- a/app/src/main/java/com/songlib/data/sources/remote/ApiService.kt +++ b/core/network/src/main/java/com/songlib/core/network/ApiService.kt @@ -1,8 +1,8 @@ -package com.songlib.data.sources.remote +package com.songlib.core.network import androidx.annotation.Keep -import com.songlib.core.utils.ApiConstants -import com.songlib.data.models.* +import com.songlib.core.common.utils.ApiConstants +import com.songlib.core.database.model.* import retrofit2.http.* @Keep diff --git a/app/src/main/java/com/songlib/core/di/NetworkModule.kt b/core/network/src/main/java/com/songlib/core/network/di/NetworkModule.kt similarity index 91% rename from app/src/main/java/com/songlib/core/di/NetworkModule.kt rename to core/network/src/main/java/com/songlib/core/network/di/NetworkModule.kt index 319eb60..ba78f7d 100644 --- a/app/src/main/java/com/songlib/core/di/NetworkModule.kt +++ b/core/network/src/main/java/com/songlib/core/network/di/NetworkModule.kt @@ -1,8 +1,8 @@ -package com.songlib.core.di +package com.songlib.core.network.di import com.songlib.BuildConfig -import com.songlib.core.utils.ApiConstants -import com.songlib.data.sources.remote.ApiService +import com.songlib.core.common.utils.ApiConstants +import com.songlib.core.network.ApiService import dagger.* import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent diff --git a/core/network/src/main/java/com/songlib/core/network/dtos/IdiomDto.kt b/core/network/src/main/java/com/songlib/core/network/dtos/IdiomDto.kt new file mode 100644 index 0000000..ca56e11 --- /dev/null +++ b/core/network/src/main/java/com/songlib/core/network/dtos/IdiomDto.kt @@ -0,0 +1,14 @@ +package com.songlib.core.network.dtos + +import kotlinx.serialization.Serializable + +@Serializable +data class IdiomDto( + val rid: Int = 0, + val title: String? = null, + val meaning: String? = null, + val views: Int = 0, + val likes: Int = 0, + val createdAt: String? = null, + val updatedAt: String? = null, +) diff --git a/core/network/src/main/java/com/songlib/core/network/dtos/ProverbDto.kt b/core/network/src/main/java/com/songlib/core/network/dtos/ProverbDto.kt new file mode 100644 index 0000000..ea8e315 --- /dev/null +++ b/core/network/src/main/java/com/songlib/core/network/dtos/ProverbDto.kt @@ -0,0 +1,16 @@ +package com.songlib.core.network.dtos + +import kotlinx.serialization.Serializable + +@Serializable +data class ProverbDto( + val rid: Int = 0, + val title: String? = null, + val synonyms: String? = null, + val meaning: String? = null, + val conjugation: String? = null, + val views: Int = 0, + val likes: Int = 0, + val createdAt: String? = null, + val updatedAt: String? = null, +) diff --git a/core/network/src/main/java/com/songlib/core/network/dtos/SayingDto.kt b/core/network/src/main/java/com/songlib/core/network/dtos/SayingDto.kt new file mode 100644 index 0000000..882d8c6 --- /dev/null +++ b/core/network/src/main/java/com/songlib/core/network/dtos/SayingDto.kt @@ -0,0 +1,14 @@ +package com.songlib.core.network.dtos + +import kotlinx.serialization.Serializable + +@Serializable +data class SayingDto( + val rid: Int = 0, + val title: String, + val meaning: String? = null, + val views: Int = 0, + val likes: Int = 0, + val createdAt: String? = null, + val updatedAt: String? = null, +) diff --git a/core/network/src/main/java/com/songlib/core/network/dtos/WordDto.kt b/core/network/src/main/java/com/songlib/core/network/dtos/WordDto.kt new file mode 100644 index 0000000..66e31c5 --- /dev/null +++ b/core/network/src/main/java/com/songlib/core/network/dtos/WordDto.kt @@ -0,0 +1,16 @@ +package com.songlib.core.network.dtos + +import kotlinx.serialization.Serializable + +@Serializable +data class WordDto( + val rid: Int = 0, + val title: String? = null, + val synonyms: String? = null, + val meaning: String? = null, + val conjugation: String? = null, + val views: Int = 0, + val likes: Int = 0, + val createdAt: String? = null, + val updatedAt: String? = null, +) diff --git a/core/network/src/main/java/com/songlib/core/network/mapper/MapDtoToEntity.kt b/core/network/src/main/java/com/songlib/core/network/mapper/MapDtoToEntity.kt new file mode 100644 index 0000000..e762dde --- /dev/null +++ b/core/network/src/main/java/com/songlib/core/network/mapper/MapDtoToEntity.kt @@ -0,0 +1,64 @@ +package com.songlib.core.network.mapper + +import com.songlib.core.database.model.IdiomEntity +import com.songlib.core.database.model.ProverbEntity +import com.songlib.core.database.model.SayingEntity +import com.songlib.core.database.model.WordEntity +import com.songlib.core.network.dtos.IdiomDto +import com.songlib.core.network.dtos.ProverbDto +import com.songlib.core.network.dtos.SayingDto +import com.songlib.core.network.dtos.WordDto + +object MapDtoToEntity { + fun mapToEntity(entity: IdiomDto): IdiomEntity { + return IdiomEntity( + rid = entity.rid, + title = entity.title, + meaning = entity.meaning, + views = entity.views, + likes = entity.likes, + createdAt = entity.createdAt, + updatedAt = entity.updatedAt, + ) + } + + fun mapToEntity(entity: ProverbDto): ProverbEntity { + return ProverbEntity( + rid = entity.rid, + title = entity.title, + synonyms = entity.synonyms, + meaning = entity.meaning, + conjugation = entity.conjugation, + views = entity.views, + likes = entity.likes, + createdAt = entity.createdAt, + updatedAt = entity.updatedAt, + ) + } + + fun mapToEntity(entity: SayingDto): SayingEntity { + return SayingEntity( + rid = entity.rid, + title = entity.title, + meaning = entity.meaning, + views = entity.views, + likes = entity.likes, + createdAt = entity.createdAt, + updatedAt = entity.updatedAt, + ) + } + + fun mapToEntity(entity: WordDto): WordEntity { + return WordEntity( + rid = entity.rid, + title = entity.title, + synonyms = entity.synonyms, + meaning = entity.meaning, + conjugation = entity.conjugation, + views = entity.views, + likes = entity.likes, + createdAt = entity.createdAt, + updatedAt = entity.updatedAt, + ) + } +} \ No newline at end of file diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts new file mode 100644 index 0000000..7758aba --- /dev/null +++ b/core/ui/build.gradle.kts @@ -0,0 +1,17 @@ +plugins { + alias(libs.plugins.songlib.android.library.compose) +} + +android { + namespace = "com.songlib.core.ui" +} + +dependencies { + api(project(":core:common")) + api(project(":core:database")) + api(project(":core:designsystem")) + + implementation(libs.lottie.compose) + implementation(libs.androidx.compose.livedata) + implementation(libs.androidx.ui.tooling.preview) +} diff --git a/app/src/main/java/com/songlib/presentation/components/action/AppTopBar.kt b/core/ui/src/main/java/com/songlib/core/ui/components/action/AppTopBar.kt similarity index 96% rename from app/src/main/java/com/songlib/presentation/components/action/AppTopBar.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/action/AppTopBar.kt index 8ab3ed1..ff33d83 100644 --- a/app/src/main/java/com/songlib/presentation/components/action/AppTopBar.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/action/AppTopBar.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.action +package com.songlib.core.ui.components.action import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons diff --git a/app/src/main/java/com/songlib/presentation/components/action/Dialogs.kt b/core/ui/src/main/java/com/songlib/core/ui/components/action/Dialogs.kt similarity index 94% rename from app/src/main/java/com/songlib/presentation/components/action/Dialogs.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/action/Dialogs.kt index ca79b53..2699d19 100644 --- a/app/src/main/java/com/songlib/presentation/components/action/Dialogs.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/action/Dialogs.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.action +package com.songlib.core.ui.components.action import androidx.compose.material3.AlertDialog import androidx.compose.material3.Text diff --git a/app/src/main/java/com/songlib/presentation/components/action/SearchTopBar.kt b/core/ui/src/main/java/com/songlib/core/ui/components/action/SearchTopBar.kt similarity index 98% rename from app/src/main/java/com/songlib/presentation/components/action/SearchTopBar.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/action/SearchTopBar.kt index 34fcf7a..e1f3baa 100644 --- a/app/src/main/java/com/songlib/presentation/components/action/SearchTopBar.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/action/SearchTopBar.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.action +package com.songlib.core.ui.components.action import androidx.compose.foundation.* import androidx.compose.foundation.layout.* diff --git a/app/src/main/java/com/songlib/presentation/components/action/UpgradeBanner.kt b/core/ui/src/main/java/com/songlib/core/ui/components/action/UpgradeBanner.kt similarity index 97% rename from app/src/main/java/com/songlib/presentation/components/action/UpgradeBanner.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/action/UpgradeBanner.kt index 5b571ec..68ad9f9 100644 --- a/app/src/main/java/com/songlib/presentation/components/action/UpgradeBanner.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/action/UpgradeBanner.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.action +package com.songlib.core.ui.components.action import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons diff --git a/app/src/main/java/com/songlib/presentation/components/autosize/AutoResizingText.kt b/core/ui/src/main/java/com/songlib/core/ui/components/autosize/AutoResizingText.kt similarity index 96% rename from app/src/main/java/com/songlib/presentation/components/autosize/AutoResizingText.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/autosize/AutoResizingText.kt index b148a93..c8abc97 100644 --- a/app/src/main/java/com/songlib/presentation/components/autosize/AutoResizingText.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/autosize/AutoResizingText.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.autosize +package com.songlib.core.ui.components.autosize import android.annotation.SuppressLint import androidx.compose.foundation.layout.BoxWithConstraints diff --git a/app/src/main/java/com/songlib/presentation/components/autosize/AutoSizeText.kt b/core/ui/src/main/java/com/songlib/core/ui/components/autosize/AutoSizeText.kt similarity index 98% rename from app/src/main/java/com/songlib/presentation/components/autosize/AutoSizeText.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/autosize/AutoSizeText.kt index dd5f01e..e1c3de8 100644 --- a/app/src/main/java/com/songlib/presentation/components/autosize/AutoSizeText.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/autosize/AutoSizeText.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.autosize +package com.songlib.core.ui.components.autosize import androidx.compose.material3.* import androidx.compose.runtime.* diff --git a/app/src/main/java/com/songlib/presentation/components/autosize/AutoSizeUtils.kt b/core/ui/src/main/java/com/songlib/core/ui/components/autosize/AutoSizeUtils.kt similarity index 95% rename from app/src/main/java/com/songlib/presentation/components/autosize/AutoSizeUtils.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/autosize/AutoSizeUtils.kt index 162ee35..48b5139 100644 --- a/app/src/main/java/com/songlib/presentation/components/autosize/AutoSizeUtils.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/autosize/AutoSizeUtils.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.autosize +package com.songlib.core.ui.components.autosize import androidx.compose.ui.unit.TextUnit diff --git a/app/src/main/java/com/songlib/presentation/components/general/AppDialogs.kt b/core/ui/src/main/java/com/songlib/core/ui/components/general/AppDialogs.kt similarity index 97% rename from app/src/main/java/com/songlib/presentation/components/general/AppDialogs.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/general/AppDialogs.kt index 3032136..1a0064c 100644 --- a/app/src/main/java/com/songlib/presentation/components/general/AppDialogs.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/general/AppDialogs.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.general +package com.songlib.core.ui.components.general import androidx.compose.material3.* import androidx.compose.runtime.Composable diff --git a/app/src/main/java/com/songlib/presentation/components/indicators/EmptyState.kt b/core/ui/src/main/java/com/songlib/core/ui/components/indicators/EmptyState.kt similarity index 98% rename from app/src/main/java/com/songlib/presentation/components/indicators/EmptyState.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/indicators/EmptyState.kt index e612d21..d5a83d5 100644 --- a/app/src/main/java/com/songlib/presentation/components/indicators/EmptyState.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/indicators/EmptyState.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.indicators +package com.songlib.core.ui.components.indicators import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* diff --git a/app/src/main/java/com/songlib/presentation/components/indicators/ErrorState.kt b/core/ui/src/main/java/com/songlib/core/ui/components/indicators/ErrorState.kt similarity index 96% rename from app/src/main/java/com/songlib/presentation/components/indicators/ErrorState.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/indicators/ErrorState.kt index f36ffcd..53ff3d0 100644 --- a/app/src/main/java/com/songlib/presentation/components/indicators/ErrorState.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/indicators/ErrorState.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.indicators +package com.songlib.core.ui.components.indicators import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons diff --git a/app/src/main/java/com/songlib/presentation/components/indicators/LoadingState.kt b/core/ui/src/main/java/com/songlib/core/ui/components/indicators/LoadingState.kt similarity index 98% rename from app/src/main/java/com/songlib/presentation/components/indicators/LoadingState.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/indicators/LoadingState.kt index 84b2178..66ed3fd 100644 --- a/app/src/main/java/com/songlib/presentation/components/indicators/LoadingState.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/indicators/LoadingState.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.indicators +package com.songlib.core.ui.components.indicators import androidx.compose.foundation.layout.* import androidx.compose.material3.* diff --git a/app/src/main/java/com/songlib/presentation/components/listitems/BookItem.kt b/core/ui/src/main/java/com/songlib/core/ui/components/listitems/BookItem.kt similarity index 96% rename from app/src/main/java/com/songlib/presentation/components/listitems/BookItem.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/listitems/BookItem.kt index b14005b..2afdd57 100644 --- a/app/src/main/java/com/songlib/presentation/components/listitems/BookItem.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/listitems/BookItem.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.listitems +package com.songlib.core.ui.components.listitems import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.* diff --git a/app/src/main/java/com/songlib/presentation/components/listitems/ListingItem.kt b/core/ui/src/main/java/com/songlib/core/ui/components/listitems/ListingItem.kt similarity index 95% rename from app/src/main/java/com/songlib/presentation/components/listitems/ListingItem.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/listitems/ListingItem.kt index 20185d0..3b55982 100644 --- a/app/src/main/java/com/songlib/presentation/components/listitems/ListingItem.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/listitems/ListingItem.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.listitems +package com.songlib.core.ui.components.listitems import androidx.compose.foundation.layout.* import androidx.compose.material3.* @@ -8,7 +8,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.* -import com.songlib.data.models.ListingUi +import com.songlib.core.database.model.ListingUi @Composable fun ListingItem(listing: ListingUi) { diff --git a/app/src/main/java/com/songlib/presentation/components/listitems/SongBook.kt b/core/ui/src/main/java/com/songlib/core/ui/components/listitems/SongBook.kt similarity index 90% rename from app/src/main/java/com/songlib/presentation/components/listitems/SongBook.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/listitems/SongBook.kt index f40e84c..44e36f0 100644 --- a/app/src/main/java/com/songlib/presentation/components/listitems/SongBook.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/listitems/SongBook.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.listitems +package com.songlib.core.ui.components.listitems import androidx.compose.foundation.* import androidx.compose.foundation.layout.* @@ -13,10 +13,10 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.* -import com.songlib.core.utils.refineTitle -import com.songlib.data.models.Book -import com.songlib.data.sample.SampleBooks -import com.songlib.domain.entity.Selectable +import com.songlib.core.common.utils.refineTitle +import com.songlib.core.database.model.Book +import com.songlib.core.ui.sample.SampleBooks +import com.songlib.core.common.entity.Selectable @Composable fun SongBook( item: Selectable, diff --git a/app/src/main/java/com/songlib/presentation/components/listitems/SongItem.kt b/core/ui/src/main/java/com/songlib/core/ui/components/listitems/SongItem.kt similarity index 93% rename from app/src/main/java/com/songlib/presentation/components/listitems/SongItem.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/listitems/SongItem.kt index 7f61ecc..5a1f870 100644 --- a/app/src/main/java/com/songlib/presentation/components/listitems/SongItem.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/listitems/SongItem.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.listitems +package com.songlib.core.ui.components.listitems import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons @@ -11,9 +11,9 @@ 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.* -import com.songlib.core.utils.* -import com.songlib.data.models.Song -import com.songlib.data.sample.SampleSongs +import com.songlib.core.common.utils.* +import com.songlib.core.database.model.Song +import com.songlib.core.ui.sample.SampleSongs @Composable fun SongItem(song: Song) { diff --git a/app/src/main/java/com/songlib/presentation/components/listitems/TagItem.kt b/core/ui/src/main/java/com/songlib/core/ui/components/listitems/TagItem.kt similarity index 95% rename from app/src/main/java/com/songlib/presentation/components/listitems/TagItem.kt rename to core/ui/src/main/java/com/songlib/core/ui/components/listitems/TagItem.kt index 55dde0c..8a605d6 100644 --- a/app/src/main/java/com/songlib/presentation/components/listitems/TagItem.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/components/listitems/TagItem.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.components.listitems +package com.songlib.core.ui.components.listitems import androidx.compose.foundation.* import androidx.compose.foundation.layout.* diff --git a/app/src/main/java/com/songlib/data/sample/SampleBooks.kt b/core/ui/src/main/java/com/songlib/core/ui/sample/SampleBooks.kt similarity index 94% rename from app/src/main/java/com/songlib/data/sample/SampleBooks.kt rename to core/ui/src/main/java/com/songlib/core/ui/sample/SampleBooks.kt index 8cdc6c8..44b6640 100644 --- a/app/src/main/java/com/songlib/data/sample/SampleBooks.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/sample/SampleBooks.kt @@ -1,7 +1,7 @@ -package com.songlib.data.sample +package com.songlib.core.ui.sample -import com.songlib.data.models.Book -import com.songlib.domain.entity.Selectable +import com.songlib.core.database.model.Book +import com.songlib.core.common.entity.Selectable val SampleBooks = listOf( Book( diff --git a/app/src/main/java/com/songlib/data/sample/SampleSongs.kt b/core/ui/src/main/java/com/songlib/core/ui/sample/SampleSongs.kt similarity index 98% rename from app/src/main/java/com/songlib/data/sample/SampleSongs.kt rename to core/ui/src/main/java/com/songlib/core/ui/sample/SampleSongs.kt index cda27e4..bcc95fd 100644 --- a/app/src/main/java/com/songlib/data/sample/SampleSongs.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/sample/SampleSongs.kt @@ -1,6 +1,6 @@ -package com.songlib.data.sample +package com.songlib.core.ui.sample -import com.songlib.data.models.Song +import com.songlib.core.database.model.Song val SampleSongs = listOf( Song( diff --git a/app/src/main/java/com/songlib/data/sample/SampleVerses.kt b/core/ui/src/main/java/com/songlib/core/ui/sample/SampleVerses.kt similarity index 94% rename from app/src/main/java/com/songlib/data/sample/SampleVerses.kt rename to core/ui/src/main/java/com/songlib/core/ui/sample/SampleVerses.kt index 4167f25..19c74b9 100644 --- a/app/src/main/java/com/songlib/data/sample/SampleVerses.kt +++ b/core/ui/src/main/java/com/songlib/core/ui/sample/SampleVerses.kt @@ -1,6 +1,6 @@ -package com.songlib.data.sample +package com.songlib.core.ui.sample -import com.songlib.data.models.Song +import com.songlib.core.database.model.Song val SampleVerses = listOf( "They come from the East and West,\nThey come from the lands afar,\nTo feast with the King, to dine as\nHis guest\nHow Blessed these pilgrims are!\nBeholding His hallowed face\nAglow with light divine;\nBlest partakers of His grace,\nAs gems in His crown to shine.',", diff --git a/core/ui/src/main/res/drawable/app_icon.png b/core/ui/src/main/res/drawable/app_icon.png new file mode 100644 index 0000000..837d16a Binary files /dev/null and b/core/ui/src/main/res/drawable/app_icon.png differ diff --git a/core/ui/src/main/res/drawable/empty.png b/core/ui/src/main/res/drawable/empty.png new file mode 100644 index 0000000..66ae11f Binary files /dev/null and b/core/ui/src/main/res/drawable/empty.png differ diff --git a/feature/home/build.gradle.kts b/feature/home/build.gradle.kts new file mode 100644 index 0000000..5dc1486 --- /dev/null +++ b/feature/home/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + alias(libs.plugins.songlib.android.feature) + alias(libs.plugins.songlib.android.library.compose) +} + +android { + namespace = "com.songlib.feature.home" +} + +dependencies { + implementation(project(":core:common")) + implementation(project(":core:data")) + implementation(libs.revenuecat) + implementation(libs.revenuecat.ui) +} diff --git a/app/src/main/java/com/songlib/presentation/home/HomeViewModel.kt b/feature/home/src/main/java/com/songlib/feature/home/HomeViewModel.kt similarity index 93% rename from app/src/main/java/com/songlib/presentation/home/HomeViewModel.kt rename to feature/home/src/main/java/com/songlib/feature/home/HomeViewModel.kt index 46151eb..247ef5d 100644 --- a/app/src/main/java/com/songlib/presentation/home/HomeViewModel.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/HomeViewModel.kt @@ -1,17 +1,17 @@ -package com.songlib.presentation.home +package com.songlib.feature.home import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.songlib.core.utils.SongUtils -import com.songlib.data.models.Book -import com.songlib.data.models.ListingUi -import com.songlib.data.models.Song -import com.songlib.domain.entity.UiState -import com.songlib.domain.repos.ListingRepo -import com.songlib.domain.repos.PrefsRepo -import com.songlib.domain.repos.SongBookRepo -import com.songlib.presentation.home.components.HomeNavItem +import com.songlib.core.common.utils.SongUtils +import com.songlib.core.database.model.Book +import com.songlib.core.database.model.ListingUi +import com.songlib.core.database.model.Song +import com.songlib.core.common.entity.UiState +import com.songlib.core.data.repos.ListingRepo +import com.songlib.core.data.repos.PrefsRepo +import com.songlib.core.data.repos.SongBookRepo +import com.songlib.feature.home.components.HomeNavItem import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/com/songlib/presentation/home/components/BottomNavBar.kt b/feature/home/src/main/java/com/songlib/feature/home/components/BottomNavBar.kt similarity index 97% rename from app/src/main/java/com/songlib/presentation/home/components/BottomNavBar.kt rename to feature/home/src/main/java/com/songlib/feature/home/components/BottomNavBar.kt index 8ef0226..36e21dc 100644 --- a/app/src/main/java/com/songlib/presentation/home/components/BottomNavBar.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/components/BottomNavBar.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.home.components +package com.songlib.feature.home.components //noinspection UsingMaterialAndMaterial3Libraries import androidx.compose.material.* diff --git a/app/src/main/java/com/songlib/presentation/home/components/ChooseListingSheet.kt b/feature/home/src/main/java/com/songlib/feature/home/components/ChooseListingSheet.kt similarity index 98% rename from app/src/main/java/com/songlib/presentation/home/components/ChooseListingSheet.kt rename to feature/home/src/main/java/com/songlib/feature/home/components/ChooseListingSheet.kt index 317a532..1b6de51 100644 --- a/app/src/main/java/com/songlib/presentation/home/components/ChooseListingSheet.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/components/ChooseListingSheet.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.home.components +package com.songlib.feature.home.components import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* @@ -11,7 +11,7 @@ import androidx.compose.runtime.* import androidx.compose.ui.* import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import com.songlib.data.models.ListingUi +import com.songlib.core.database.model.ListingUi @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/app/src/main/java/com/songlib/presentation/home/components/DialPad.kt b/feature/home/src/main/java/com/songlib/feature/home/components/DialPad.kt similarity index 98% rename from app/src/main/java/com/songlib/presentation/home/components/DialPad.kt rename to feature/home/src/main/java/com/songlib/feature/home/components/DialPad.kt index 5801e54..2a97b17 100644 --- a/app/src/main/java/com/songlib/presentation/home/components/DialPad.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/components/DialPad.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.home.components +package com.songlib.feature.home.components import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape diff --git a/app/src/main/java/com/songlib/presentation/home/components/HomeAppBar.kt b/feature/home/src/main/java/com/songlib/feature/home/components/HomeAppBar.kt similarity index 92% rename from app/src/main/java/com/songlib/presentation/home/components/HomeAppBar.kt rename to feature/home/src/main/java/com/songlib/feature/home/components/HomeAppBar.kt index 30ca83c..4404fd9 100644 --- a/app/src/main/java/com/songlib/presentation/home/components/HomeAppBar.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/components/HomeAppBar.kt @@ -1,13 +1,13 @@ -package com.songlib.presentation.home.components +package com.songlib.feature.home.components import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.* import androidx.compose.material3.* import androidx.compose.runtime.* -import com.songlib.data.models.Song -import com.songlib.presentation.components.action.AppTopBar -import com.songlib.presentation.components.general.QuickFormDialog -import com.songlib.presentation.home.HomeViewModel +import com.songlib.core.database.model.Song +import com.songlib.core.ui.components.action.AppTopBar +import com.songlib.core.ui.components.general.QuickFormDialog +import com.songlib.feature.home.HomeViewModel @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/app/src/main/java/com/songlib/presentation/home/components/ListingsList.kt b/feature/home/src/main/java/com/songlib/feature/home/components/ListingsList.kt similarity index 90% rename from app/src/main/java/com/songlib/presentation/home/components/ListingsList.kt rename to feature/home/src/main/java/com/songlib/feature/home/components/ListingsList.kt index 97b936e..c7d801f 100644 --- a/app/src/main/java/com/songlib/presentation/home/components/ListingsList.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/components/ListingsList.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.home.components +package com.songlib.feature.home.components import androidx.compose.foundation.* import androidx.compose.foundation.layout.* @@ -10,9 +10,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController -import com.songlib.presentation.navigation.Routes -import com.songlib.data.models.ListingUi -import com.songlib.presentation.components.listitems.ListingItem +import com.songlib.core.common.utils.Routes +import com.songlib.core.database.model.ListingUi +import com.songlib.core.ui.components.listitems.ListingItem @Composable fun ListingsList( diff --git a/app/src/main/java/com/songlib/presentation/home/components/SongsList.kt b/feature/home/src/main/java/com/songlib/feature/home/components/SongsList.kt similarity index 91% rename from app/src/main/java/com/songlib/presentation/home/components/SongsList.kt rename to feature/home/src/main/java/com/songlib/feature/home/components/SongsList.kt index 3d2c54f..ea81c7a 100644 --- a/app/src/main/java/com/songlib/presentation/home/components/SongsList.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/components/SongsList.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.home.components +package com.songlib.feature.home.components import androidx.compose.foundation.* import androidx.compose.foundation.layout.* @@ -12,10 +12,10 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.navigation.NavHostController -import com.songlib.data.models.Song -import com.songlib.presentation.components.listitems.* -import com.songlib.presentation.navigation.Routes -import com.songlib.presentation.home.HomeViewModel +import com.songlib.core.database.model.Song +import com.songlib.core.ui.components.listitems.* +import com.songlib.core.common.utils.Routes +import com.songlib.feature.home.HomeViewModel @Composable fun SongsList( diff --git a/app/src/main/java/com/songlib/presentation/home/view/HomeScreen.kt b/feature/home/src/main/java/com/songlib/feature/home/view/HomeScreen.kt similarity index 88% rename from app/src/main/java/com/songlib/presentation/home/view/HomeScreen.kt rename to feature/home/src/main/java/com/songlib/feature/home/view/HomeScreen.kt index 7343dbd..b5458ad 100644 --- a/app/src/main/java/com/songlib/presentation/home/view/HomeScreen.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/view/HomeScreen.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.home.view +package com.songlib.feature.home.view import androidx.compose.foundation.layout.* //noinspection UsingMaterialAndMaterial3Libraries @@ -10,13 +10,13 @@ import androidx.compose.runtime.* import androidx.compose.ui.* import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController -import com.songlib.domain.entity.UiState -import com.songlib.presentation.components.indicators.* -import com.songlib.presentation.home.HomeViewModel -import com.songlib.presentation.components.indicators.ErrorState -import com.songlib.presentation.home.components.* -import com.songlib.presentation.home.view.tabs.* -import com.songlib.presentation.navigation.Routes +import com.songlib.core.common.entity.UiState +import com.songlib.core.ui.components.indicators.* +import com.songlib.feature.home.HomeViewModel +import com.songlib.core.ui.components.indicators.ErrorState +import com.songlib.feature.home.components.* +import com.songlib.feature.home.view.tabs.* +import com.songlib.core.common.utils.Routes @OptIn(ExperimentalMaterialApi::class) @Composable diff --git a/app/src/main/java/com/songlib/presentation/home/view/tabs/HomeLikes.kt b/feature/home/src/main/java/com/songlib/feature/home/view/tabs/HomeLikes.kt similarity index 88% rename from app/src/main/java/com/songlib/presentation/home/view/tabs/HomeLikes.kt rename to feature/home/src/main/java/com/songlib/feature/home/view/tabs/HomeLikes.kt index 950bd5a..f722153 100644 --- a/app/src/main/java/com/songlib/presentation/home/view/tabs/HomeLikes.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/view/tabs/HomeLikes.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.home.view.tabs +package com.songlib.feature.home.view.tabs import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons @@ -7,13 +7,13 @@ import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.* import androidx.navigation.NavHostController -import com.songlib.data.models.Song -import com.songlib.domain.entity.UiState -import com.songlib.presentation.components.action.AppTopBar -import com.songlib.presentation.components.indicators.* -import com.songlib.presentation.home.components.SongsList -import com.songlib.presentation.navigation.Routes -import com.songlib.presentation.home.HomeViewModel +import com.songlib.core.database.model.Song +import com.songlib.core.common.entity.UiState +import com.songlib.core.ui.components.action.AppTopBar +import com.songlib.core.ui.components.indicators.* +import com.songlib.feature.home.components.SongsList +import com.songlib.core.common.utils.Routes +import com.songlib.feature.home.HomeViewModel @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/app/src/main/java/com/songlib/presentation/home/view/tabs/HomeListings.kt b/feature/home/src/main/java/com/songlib/feature/home/view/tabs/HomeListings.kt similarity index 92% rename from app/src/main/java/com/songlib/presentation/home/view/tabs/HomeListings.kt rename to feature/home/src/main/java/com/songlib/feature/home/view/tabs/HomeListings.kt index c74c53c..aa47fe0 100644 --- a/app/src/main/java/com/songlib/presentation/home/view/tabs/HomeListings.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/view/tabs/HomeListings.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.home.view.tabs +package com.songlib.feature.home.view.tabs import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons @@ -11,14 +11,14 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.* import androidx.navigation.NavHostController import com.revenuecat.purchases.ui.revenuecatui.* -import com.songlib.presentation.home.components.ListingsList -import com.songlib.data.models.ListingUi -import com.songlib.domain.entity.UiState -import com.songlib.presentation.components.action.* -import com.songlib.presentation.components.general.* -import com.songlib.presentation.components.indicators.* -import com.songlib.presentation.navigation.Routes -import com.songlib.presentation.home.HomeViewModel +import com.songlib.feature.home.components.ListingsList +import com.songlib.core.database.model.ListingUi +import com.songlib.core.common.entity.UiState +import com.songlib.core.ui.components.action.* +import com.songlib.core.ui.components.general.* +import com.songlib.core.ui.components.indicators.* +import com.songlib.core.common.utils.Routes +import com.songlib.feature.home.HomeViewModel import kotlin.collections.plus @OptIn(ExperimentalMaterial3Api::class) diff --git a/app/src/main/java/com/songlib/presentation/home/view/tabs/HomeSearch.kt b/feature/home/src/main/java/com/songlib/feature/home/view/tabs/HomeSearch.kt similarity index 90% rename from app/src/main/java/com/songlib/presentation/home/view/tabs/HomeSearch.kt rename to feature/home/src/main/java/com/songlib/feature/home/view/tabs/HomeSearch.kt index 0e82061..f7a8c9b 100644 --- a/app/src/main/java/com/songlib/presentation/home/view/tabs/HomeSearch.kt +++ b/feature/home/src/main/java/com/songlib/feature/home/view/tabs/HomeSearch.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.home.view.tabs +package com.songlib.feature.home.view.tabs import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons @@ -8,21 +8,21 @@ import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.* import androidx.navigation.NavHostController -import com.songlib.domain.entity.UiState -import com.songlib.presentation.components.action.* -import com.songlib.presentation.navigation.Routes -import com.songlib.presentation.home.HomeViewModel +import com.songlib.core.common.entity.UiState +import com.songlib.core.ui.components.action.* +import com.songlib.core.common.utils.Routes +import com.songlib.feature.home.HomeViewModel import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import com.revenuecat.purchases.ui.revenuecatui.Paywall import com.revenuecat.purchases.ui.revenuecatui.PaywallOptions -import com.songlib.data.models.Song -import com.songlib.presentation.components.indicators.EmptyState -import com.songlib.presentation.home.components.DialPad -import com.songlib.presentation.home.components.HomeSearchAppBar -import com.songlib.presentation.home.components.SongsList +import com.songlib.core.database.model.Song +import com.songlib.core.ui.components.indicators.EmptyState +import com.songlib.feature.home.components.DialPad +import com.songlib.feature.home.components.HomeSearchAppBar +import com.songlib.feature.home.components.SongsList @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/feature/listing/build.gradle.kts b/feature/listing/build.gradle.kts new file mode 100644 index 0000000..5dc1486 --- /dev/null +++ b/feature/listing/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + alias(libs.plugins.songlib.android.feature) + alias(libs.plugins.songlib.android.library.compose) +} + +android { + namespace = "com.songlib.feature.home" +} + +dependencies { + implementation(project(":core:common")) + implementation(project(":core:data")) + implementation(libs.revenuecat) + implementation(libs.revenuecat.ui) +} diff --git a/app/src/main/java/com/songlib/presentation/listing/ListingViewModel.kt b/feature/listing/src/main/java/com/songlib/feature/listing/ListingViewModel.kt similarity index 91% rename from app/src/main/java/com/songlib/presentation/listing/ListingViewModel.kt rename to feature/listing/src/main/java/com/songlib/feature/listing/ListingViewModel.kt index 86d631a..e30db10 100644 --- a/app/src/main/java/com/songlib/presentation/listing/ListingViewModel.kt +++ b/feature/listing/src/main/java/com/songlib/feature/listing/ListingViewModel.kt @@ -1,13 +1,13 @@ -package com.songlib.presentation.listing +package com.songlib.feature.listing import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.songlib.data.models.ListingUi -import com.songlib.data.models.Song -import com.songlib.domain.entity.UiState -import com.songlib.domain.repos.ListingRepo -import com.songlib.domain.repos.SongBookRepo +import com.songlib.core.database.model.ListingUi +import com.songlib.core.database.model.Song +import com.songlib.core.common.entity.UiState +import com.songlib.core.data.repos.ListingRepo +import com.songlib.core.data.repos.SongBookRepo import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/com/songlib/presentation/listing/view/ListedSongs.kt b/feature/listing/src/main/java/com/songlib/feature/listing/view/ListedSongs.kt similarity index 90% rename from app/src/main/java/com/songlib/presentation/listing/view/ListedSongs.kt rename to feature/listing/src/main/java/com/songlib/feature/listing/view/ListedSongs.kt index 99c1576..930f383 100644 --- a/app/src/main/java/com/songlib/presentation/listing/view/ListedSongs.kt +++ b/feature/listing/src/main/java/com/songlib/feature/listing/view/ListedSongs.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.listing.view +package com.songlib.feature.listing.view import androidx.compose.foundation.* import androidx.compose.foundation.layout.* @@ -10,9 +10,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController -import com.songlib.data.models.Song -import com.songlib.presentation.components.listitems.* -import com.songlib.presentation.navigation.Routes +import com.songlib.core.database.model.Song +import com.songlib.core.ui.components.listitems.* +import com.songlib.core.common.utils.Routes @Composable fun ListedSongs( diff --git a/app/src/main/java/com/songlib/presentation/listing/view/ListingScreen.kt b/feature/listing/src/main/java/com/songlib/feature/listing/view/ListingScreen.kt similarity index 91% rename from app/src/main/java/com/songlib/presentation/listing/view/ListingScreen.kt rename to feature/listing/src/main/java/com/songlib/feature/listing/view/ListingScreen.kt index a4756d2..b91080b 100644 --- a/app/src/main/java/com/songlib/presentation/listing/view/ListingScreen.kt +++ b/feature/listing/src/main/java/com/songlib/feature/listing/view/ListingScreen.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.listing.view +package com.songlib.feature.listing.view import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons @@ -8,12 +8,12 @@ import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController -import com.songlib.data.models.* -import com.songlib.domain.entity.UiState -import com.songlib.presentation.components.action.AppTopBar -import com.songlib.presentation.components.general.* -import com.songlib.presentation.components.indicators.* -import com.songlib.presentation.listing.ListingViewModel +import com.songlib.core.database.model.* +import com.songlib.core.common.entity.UiState +import com.songlib.core.ui.components.action.AppTopBar +import com.songlib.core.ui.components.general.* +import com.songlib.core.ui.components.indicators.* +import com.songlib.feature.listing.ListingViewModel @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/feature/presenter/build.gradle.kts b/feature/presenter/build.gradle.kts new file mode 100644 index 0000000..5dc1486 --- /dev/null +++ b/feature/presenter/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + alias(libs.plugins.songlib.android.feature) + alias(libs.plugins.songlib.android.library.compose) +} + +android { + namespace = "com.songlib.feature.home" +} + +dependencies { + implementation(project(":core:common")) + implementation(project(":core:data")) + implementation(libs.revenuecat) + implementation(libs.revenuecat.ui) +} diff --git a/app/src/main/java/com/songlib/presentation/presenter/PresenterViewModel.kt b/feature/presenter/src/main/java/com/songlib/feature/presenter/PresenterViewModel.kt similarity index 89% rename from app/src/main/java/com/songlib/presentation/presenter/PresenterViewModel.kt rename to feature/presenter/src/main/java/com/songlib/feature/presenter/PresenterViewModel.kt index 01d22e3..7ca36c8 100644 --- a/app/src/main/java/com/songlib/presentation/presenter/PresenterViewModel.kt +++ b/feature/presenter/src/main/java/com/songlib/feature/presenter/PresenterViewModel.kt @@ -1,13 +1,13 @@ -package com.songlib.presentation.presenter +package com.songlib.feature.presenter import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.songlib.core.utils.getSongVerses -import com.songlib.core.utils.songItemTitle -import com.songlib.data.models.Song -import com.songlib.domain.entity.UiState -import com.songlib.domain.repos.PrefsRepo -import com.songlib.domain.repos.SongBookRepo +import com.songlib.core.common.utils.getSongVerses +import com.songlib.core.common.utils.songItemTitle +import com.songlib.core.database.model.Song +import com.songlib.core.common.entity.UiState +import com.songlib.core.data.repos.PrefsRepo +import com.songlib.core.data.repos.SongBookRepo import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/app/src/main/java/com/songlib/presentation/presenter/components/PresenterIndicators.kt b/feature/presenter/src/main/java/com/songlib/feature/presenter/components/PresenterIndicators.kt similarity index 96% rename from app/src/main/java/com/songlib/presentation/presenter/components/PresenterIndicators.kt rename to feature/presenter/src/main/java/com/songlib/feature/presenter/components/PresenterIndicators.kt index 459c7cd..4c5bdbe 100644 --- a/app/src/main/java/com/songlib/presentation/presenter/components/PresenterIndicators.kt +++ b/feature/presenter/src/main/java/com/songlib/feature/presenter/components/PresenterIndicators.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.presenter.components +package com.songlib.feature.presenter.components import androidx.compose.foundation.layout.* import androidx.compose.material3.* @@ -8,7 +8,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.foundation.pager.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.ui.tooling.preview.Preview -import com.songlib.data.sample.* +import com.songlib.core.ui.sample.* import kotlinx.coroutines.launch import androidx.compose.foundation.lazy.grid.* import androidx.compose.ui.text.TextStyle diff --git a/app/src/main/java/com/songlib/presentation/presenter/components/PresenterTabs.kt b/feature/presenter/src/main/java/com/songlib/feature/presenter/components/PresenterTabs.kt similarity index 91% rename from app/src/main/java/com/songlib/presentation/presenter/components/PresenterTabs.kt rename to feature/presenter/src/main/java/com/songlib/feature/presenter/components/PresenterTabs.kt index c1df837..f040054 100644 --- a/app/src/main/java/com/songlib/presentation/presenter/components/PresenterTabs.kt +++ b/feature/presenter/src/main/java/com/songlib/feature/presenter/components/PresenterTabs.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.presenter.components +package com.songlib.feature.presenter.components import androidx.compose.foundation.layout.* import androidx.compose.material3.* @@ -10,9 +10,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.sp -import com.songlib.data.sample.* -import com.songlib.presentation.components.autosize.AutoResizingText -import com.songlib.presentation.components.autosize.AutoSizeText +import com.songlib.core.ui.sample.* +import com.songlib.core.ui.components.autosize.AutoResizingText +import com.songlib.core.ui.components.autosize.AutoSizeText @Composable fun PresenterTabs( diff --git a/app/src/main/java/com/songlib/presentation/presenter/view/PresenterScreen.kt b/feature/presenter/src/main/java/com/songlib/feature/presenter/view/PresenterScreen.kt similarity index 90% rename from app/src/main/java/com/songlib/presentation/presenter/view/PresenterScreen.kt rename to feature/presenter/src/main/java/com/songlib/feature/presenter/view/PresenterScreen.kt index b60056e..156929c 100644 --- a/app/src/main/java/com/songlib/presentation/presenter/view/PresenterScreen.kt +++ b/feature/presenter/src/main/java/com/songlib/feature/presenter/view/PresenterScreen.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.presenter.view +package com.songlib.feature.presenter.view import android.widget.Toast import androidx.compose.foundation.layout.* @@ -12,13 +12,13 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController -import com.songlib.data.models.Song -import com.songlib.data.sample.* -import com.songlib.domain.entity.UiState -import com.songlib.presentation.components.action.AppTopBar -import com.songlib.presentation.components.indicators.* -import com.songlib.presentation.presenter.PresenterViewModel -import com.songlib.presentation.presenter.components.* +import com.songlib.core.database.model.Song +import com.songlib.core.ui.sample.* +import com.songlib.core.common.entity.UiState +import com.songlib.core.ui.components.action.AppTopBar +import com.songlib.core.ui.components.indicators.* +import com.songlib.feature.presenter.PresenterViewModel +import com.songlib.feature.presenter.components.* @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/feature/selection/build.gradle.kts b/feature/selection/build.gradle.kts new file mode 100644 index 0000000..5dc1486 --- /dev/null +++ b/feature/selection/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + alias(libs.plugins.songlib.android.feature) + alias(libs.plugins.songlib.android.library.compose) +} + +android { + namespace = "com.songlib.feature.home" +} + +dependencies { + implementation(project(":core:common")) + implementation(project(":core:data")) + implementation(libs.revenuecat) + implementation(libs.revenuecat.ui) +} diff --git a/app/src/main/java/com/songlib/presentation/selection/SelectionViewModel.kt b/feature/selection/src/main/java/com/songlib/feature/selection/SelectionViewModel.kt similarity index 97% rename from app/src/main/java/com/songlib/presentation/selection/SelectionViewModel.kt rename to feature/selection/src/main/java/com/songlib/feature/selection/SelectionViewModel.kt index 0b6018b..63d8b9a 100644 --- a/app/src/main/java/com/songlib/presentation/selection/SelectionViewModel.kt +++ b/feature/selection/src/main/java/com/songlib/feature/selection/SelectionViewModel.kt @@ -1,10 +1,10 @@ -package com.songlib.presentation.selection +package com.songlib.feature.selection import android.util.Log import androidx.lifecycle.* -import com.songlib.data.models.Book -import com.songlib.domain.entity.* -import com.songlib.domain.repos.* +import com.songlib.core.database.model.Book +import com.songlib.core.common.entity.* +import com.songlib.core.data.repos.* import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* diff --git a/app/src/main/java/com/songlib/presentation/selection/components/SelectionFab.kt b/feature/selection/src/main/java/com/songlib/feature/selection/components/SelectionFab.kt similarity index 87% rename from app/src/main/java/com/songlib/presentation/selection/components/SelectionFab.kt rename to feature/selection/src/main/java/com/songlib/feature/selection/components/SelectionFab.kt index 95970bd..119b13d 100644 --- a/app/src/main/java/com/songlib/presentation/selection/components/SelectionFab.kt +++ b/feature/selection/src/main/java/com/songlib/feature/selection/components/SelectionFab.kt @@ -1,12 +1,12 @@ -package com.songlib.presentation.selection.components +package com.songlib.feature.selection.components import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.* import androidx.compose.material3.* import androidx.compose.runtime.* -import com.songlib.data.models.Book -import com.songlib.presentation.components.general.* -import com.songlib.presentation.selection.SelectionViewModel +import com.songlib.core.database.model.Book +import com.songlib.core.ui.components.general.* +import com.songlib.feature.selection.SelectionViewModel @Composable fun Step1Fab( diff --git a/app/src/main/java/com/songlib/presentation/selection/view/SelectionContent.kt b/feature/selection/src/main/java/com/songlib/feature/selection/view/SelectionContent.kt similarity index 85% rename from app/src/main/java/com/songlib/presentation/selection/view/SelectionContent.kt rename to feature/selection/src/main/java/com/songlib/feature/selection/view/SelectionContent.kt index ac70f53..539edfc 100644 --- a/app/src/main/java/com/songlib/presentation/selection/view/SelectionContent.kt +++ b/feature/selection/src/main/java/com/songlib/feature/selection/view/SelectionContent.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.selection.view +package com.songlib.feature.selection.view import androidx.compose.foundation.background import androidx.compose.foundation.layout.* @@ -8,10 +8,10 @@ import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.songlib.data.models.Book -import com.songlib.data.sample.SampleSelectableBooks -import com.songlib.domain.entity.* -import com.songlib.presentation.components.listitems.SongBook +import com.songlib.core.database.model.Book +import com.songlib.core.ui.sample.SampleSelectableBooks +import com.songlib.core.common.entity.* +import com.songlib.core.ui.components.listitems.SongBook @Composable fun SelectionContent( diff --git a/app/src/main/java/com/songlib/presentation/selection/view/SelectionScreen.kt b/feature/selection/src/main/java/com/songlib/feature/selection/view/SelectionScreen.kt similarity index 92% rename from app/src/main/java/com/songlib/presentation/selection/view/SelectionScreen.kt rename to feature/selection/src/main/java/com/songlib/feature/selection/view/SelectionScreen.kt index d612dbe..766a7af 100644 --- a/app/src/main/java/com/songlib/presentation/selection/view/SelectionScreen.kt +++ b/feature/selection/src/main/java/com/songlib/feature/selection/view/SelectionScreen.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.selection.view +package com.songlib.feature.selection.view import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons @@ -10,13 +10,13 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.window.* import androidx.navigation.NavHostController import com.revenuecat.purchases.ui.revenuecatui.* -import com.songlib.domain.entity.UiState -import com.songlib.domain.repos.* -import com.songlib.presentation.components.action.AppTopBar -import com.songlib.presentation.components.indicators.* -import com.songlib.presentation.navigation.Routes -import com.songlib.presentation.selection.SelectionViewModel -import com.songlib.presentation.selection.components.Step1Fab +import com.songlib.core.common.entity.UiState +import com.songlib.core.data.repos.* +import com.songlib.core.ui.components.action.AppTopBar +import com.songlib.core.ui.components.indicators.* +import com.songlib.core.common.utils.Routes +import com.songlib.feature.selection.SelectionViewModel +import com.songlib.feature.selection.components.Step1Fab @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts new file mode 100644 index 0000000..649bec1 --- /dev/null +++ b/feature/settings/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + alias(libs.plugins.songlib.android.feature) +} + +android { + namespace = "com.songlib.feature.settings" +} + +dependencies { + implementation(project(":core:common")) + implementation(project(":core:data")) +} diff --git a/app/src/main/java/com/songlib/presentation/settings/SettingsViewModel.kt b/feature/settings/src/main/java/com/songlib/feature/settings/SettingsViewModel.kt similarity index 85% rename from app/src/main/java/com/songlib/presentation/settings/SettingsViewModel.kt rename to feature/settings/src/main/java/com/songlib/feature/settings/SettingsViewModel.kt index 412572d..0f4b30b 100644 --- a/app/src/main/java/com/songlib/presentation/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/java/com/songlib/feature/settings/SettingsViewModel.kt @@ -1,11 +1,11 @@ -package com.songlib.presentation.settings +package com.songlib.feature.settings import androidx.compose.runtime.* import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.songlib.domain.repos.ListingRepo -import com.songlib.domain.repos.PrefsRepo -import com.songlib.domain.repos.SongBookRepo +import com.songlib.core.data.repos.ListingRepo +import com.songlib.core.data.repos.PrefsRepo +import com.songlib.core.data.repos.SongBookRepo import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import javax.inject.Inject diff --git a/app/src/main/java/com/songlib/presentation/settings/components/SettingsDialogs.kt b/feature/settings/src/main/java/com/songlib/feature/settings/components/SettingsDialogs.kt similarity index 96% rename from app/src/main/java/com/songlib/presentation/settings/components/SettingsDialogs.kt rename to feature/settings/src/main/java/com/songlib/feature/settings/components/SettingsDialogs.kt index 78fedd7..bd9c786 100644 --- a/app/src/main/java/com/songlib/presentation/settings/components/SettingsDialogs.kt +++ b/feature/settings/src/main/java/com/songlib/feature/settings/components/SettingsDialogs.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.settings.components +package com.songlib.feature.settings.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app/src/main/java/com/songlib/presentation/settings/view/SettingsScreen.kt b/feature/settings/src/main/java/com/songlib/feature/settings/view/SettingsScreen.kt similarity index 88% rename from app/src/main/java/com/songlib/presentation/settings/view/SettingsScreen.kt rename to feature/settings/src/main/java/com/songlib/feature/settings/view/SettingsScreen.kt index fe2f4e4..101fcc0 100644 --- a/app/src/main/java/com/songlib/presentation/settings/view/SettingsScreen.kt +++ b/feature/settings/src/main/java/com/songlib/feature/settings/view/SettingsScreen.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.settings.view +package com.songlib.feature.settings.view import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* @@ -9,14 +9,14 @@ import androidx.compose.material3.HorizontalDivider import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.navigation.NavHostController -import com.songlib.domain.repos.ThemeRepository -import com.songlib.domain.repos.ThemeSelectorDialog -import com.songlib.domain.repos.appThemeName -import com.songlib.presentation.components.action.AppTopBar -import com.songlib.presentation.navigation.Routes -import com.songlib.presentation.settings.SettingsViewModel -import com.songlib.presentation.settings.components.ConfirmResetDialog -import com.songlib.presentation.settings.components.SettingsSectionTitle +import com.songlib.core.data.repos.ThemeRepository +import com.songlib.core.data.repos.ThemeSelectorDialog +import com.songlib.core.data.repos.appThemeName +import com.songlib.core.ui.components.action.AppTopBar +import com.songlib.core.common.utils.Routes +import com.songlib.feature.settings.SettingsViewModel +import com.songlib.feature.settings.components.ConfirmResetDialog +import com.songlib.feature.settings.components.SettingsSectionTitle @Composable fun SettingsScreen( diff --git a/feature/splash/build.gradle.kts b/feature/splash/build.gradle.kts new file mode 100644 index 0000000..d3dc616 --- /dev/null +++ b/feature/splash/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + alias(libs.plugins.songlib.android.feature) +} + +android { + namespace = "com.songlib.feature.splash" +} + +dependencies { + implementation(project(":core:common")) + implementation(project(":core:data")) +} diff --git a/feature/splash/src/main/AndroidManifest.xml b/feature/splash/src/main/AndroidManifest.xml new file mode 100644 index 0000000..f0f34af --- /dev/null +++ b/feature/splash/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/java/com/songlib/presentation/splash/SplashViewModel.kt b/feature/splash/src/main/java/com/songlib/feature/splash/SplashViewModel.kt similarity index 91% rename from app/src/main/java/com/songlib/presentation/splash/SplashViewModel.kt rename to feature/splash/src/main/java/com/songlib/feature/splash/SplashViewModel.kt index 937ce4c..a6802e6 100644 --- a/app/src/main/java/com/songlib/presentation/splash/SplashViewModel.kt +++ b/feature/splash/src/main/java/com/songlib/feature/splash/SplashViewModel.kt @@ -1,10 +1,10 @@ -package com.songlib.presentation.splash +package com.songlib.feature.splash import android.content.Context import androidx.lifecycle.* -import com.songlib.core.helpers.NetworkUtils -import com.songlib.domain.repos.PrefsRepo -import com.songlib.domain.repos.SubsRepo +import com.songlib.core.common.helpers.NetworkUtils +import com.songlib.core.data.repos.PrefsRepo +import com.songlib.core.data.repos.SubsRepo import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch diff --git a/app/src/main/java/com/songlib/presentation/splash/components/SplashComponents.kt b/feature/splash/src/main/java/com/songlib/feature/splash/components/SplashComponents.kt similarity index 97% rename from app/src/main/java/com/songlib/presentation/splash/components/SplashComponents.kt rename to feature/splash/src/main/java/com/songlib/feature/splash/components/SplashComponents.kt index a0f743c..78a1006 100644 --- a/app/src/main/java/com/songlib/presentation/splash/components/SplashComponents.kt +++ b/feature/splash/src/main/java/com/songlib/feature/splash/components/SplashComponents.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.splash.components +package com.songlib.feature.splash.components import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons diff --git a/app/src/main/java/com/songlib/presentation/splash/view/SplashScreen.kt b/feature/splash/src/main/java/com/songlib/feature/splash/view/SplashScreen.kt similarity index 93% rename from app/src/main/java/com/songlib/presentation/splash/view/SplashScreen.kt rename to feature/splash/src/main/java/com/songlib/feature/splash/view/SplashScreen.kt index 6d07e6b..3b9be99 100644 --- a/app/src/main/java/com/songlib/presentation/splash/view/SplashScreen.kt +++ b/feature/splash/src/main/java/com/songlib/feature/splash/view/SplashScreen.kt @@ -1,4 +1,4 @@ -package com.songlib.presentation.splash.view +package com.songlib.feature.splash.view import androidx.compose.foundation.* import androidx.compose.foundation.layout.* @@ -13,9 +13,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.* import androidx.navigation.NavHostController import com.songlib.R -import com.songlib.presentation.navigation.Routes -import com.songlib.presentation.splash.components.* -import com.songlib.presentation.splash.SplashViewModel +import com.songlib.core.common.utils.Routes +import com.songlib.feature.splash.components.* +import com.songlib.feature.splash.SplashViewModel import kotlinx.coroutines.delay @Composable diff --git a/feature/splash/src/main/res/drawable/app_icon.png b/feature/splash/src/main/res/drawable/app_icon.png new file mode 100644 index 0000000..6c61869 Binary files /dev/null and b/feature/splash/src/main/res/drawable/app_icon.png differ diff --git a/feature/splash/src/main/res/drawable/empty.png b/feature/splash/src/main/res/drawable/empty.png new file mode 100644 index 0000000..66ae11f Binary files /dev/null and b/feature/splash/src/main/res/drawable/empty.png differ