From 81ecb18c87078b212f3f8954e3d38aa961d8dc34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=8B=D1=82=D0=BA=D0=BE=D0=B2=20=D0=A0=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD?= Date: Sun, 22 Sep 2024 22:36:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 12 +++-- app/release/baselineProfiles/0/app-release.dm | Bin 10630 -> 0 bytes app/release/baselineProfiles/1/app-release.dm | Bin 10571 -> 0 bytes app/release/output-metadata.json | 37 -------------- .../wallenc/ExampleInstrumentedTest.kt | 24 +++++++++ app/src/main/AndroidManifest.xml | 1 + .../nullptroma}/wallenc/MainActivity.kt | 13 +++-- .../nullptroma}/wallenc/WallencApplication.kt | 2 +- .../wallenc/ui/screens/main/MainScreen.kt | 27 ++++++++++ .../ui/screens/main/MainScreenState.kt | 3 ++ .../wallenc/ui/screens/main/MainViewModel.kt | 11 ++++ .../nullptroma}/wallenc/ui/theme/Color.kt | 2 +- .../nullptroma}/wallenc/ui/theme/Theme.kt | 2 +- .../nullptroma}/wallenc/ui/theme/Type.kt | 2 +- .../wallenc/ui/screens/main/MainScreen.kt | 8 --- .../ui/screens/main/MainScreenState.kt | 3 -- .../wallenc/ui/screens/main/MainViewModel.kt | 9 ---- .../nullptroma/wallenc/ExampleUnitTest.kt | 17 +++++++ build.gradle.kts | 1 + data/.gitignore | 1 + data/build.gradle.kts | 47 ++++++++++++++++++ data/consumer-rules.pro | 0 data/proguard-rules.pro | 21 ++++++++ .../data}/ExampleInstrumentedTest.kt | 4 +- data/src/main/AndroidManifest.xml | 4 ++ .../nullptroma/data}/ExampleUnitTest.kt | 2 +- domain/.gitignore | 1 + domain/build.gradle.kts | 47 ++++++++++++++++++ domain/consumer-rules.pro | 0 domain/proguard-rules.pro | 21 ++++++++ .../domain/ExampleInstrumentedTest.kt | 24 +++++++++ domain/src/main/AndroidManifest.xml | 4 ++ .../nullptroma/domain/ExampleUnitTest.kt | 17 +++++++ gradle/libs.versions.toml | 19 ++++--- settings.gradle.kts | 3 +- 35 files changed, 309 insertions(+), 80 deletions(-) delete mode 100644 app/release/baselineProfiles/0/app-release.dm delete mode 100644 app/release/baselineProfiles/1/app-release.dm delete mode 100644 app/release/output-metadata.json create mode 100644 app/src/androidTest/java/com/github/nullptroma/wallenc/ExampleInstrumentedTest.kt rename app/src/main/java/{ru/freedominc => com/github/nullptroma}/wallenc/MainActivity.kt (86%) rename app/src/main/java/{ru/freedominc => com/github/nullptroma}/wallenc/WallencApplication.kt (78%) create mode 100644 app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreen.kt create mode 100644 app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreenState.kt create mode 100644 app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainViewModel.kt rename app/src/main/java/{ru/freedominc => com/github/nullptroma}/wallenc/ui/theme/Color.kt (83%) rename app/src/main/java/{ru/freedominc => com/github/nullptroma}/wallenc/ui/theme/Theme.kt (97%) rename app/src/main/java/{ru/freedominc => com/github/nullptroma}/wallenc/ui/theme/Type.kt (95%) delete mode 100644 app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainScreen.kt delete mode 100644 app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainScreenState.kt delete mode 100644 app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainViewModel.kt create mode 100644 app/src/test/java/com/github/nullptroma/wallenc/ExampleUnitTest.kt create mode 100644 data/.gitignore create mode 100644 data/build.gradle.kts create mode 100644 data/consumer-rules.pro create mode 100644 data/proguard-rules.pro rename {app/src/androidTest/java/ru/freedominc/wallenc => data/src/androidTest/java/com/github/nullptroma/data}/ExampleInstrumentedTest.kt (83%) create mode 100644 data/src/main/AndroidManifest.xml rename {app/src/test/java/ru/freedominc/wallenc => data/src/test/java/com/github/nullptroma/data}/ExampleUnitTest.kt (90%) create mode 100644 domain/.gitignore create mode 100644 domain/build.gradle.kts create mode 100644 domain/consumer-rules.pro create mode 100644 domain/proguard-rules.pro create mode 100644 domain/src/androidTest/java/com/github/nullptroma/domain/ExampleInstrumentedTest.kt create mode 100644 domain/src/main/AndroidManifest.xml create mode 100644 domain/src/test/java/com/github/nullptroma/domain/ExampleUnitTest.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8c77551..775ca57 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -2,16 +2,16 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.compose.compiler) - alias(libs.plugins.ksp) alias(libs.plugins.dagger.hilt) + alias(libs.plugins.ksp) } android { - namespace = "ru.freedominc.wallenc" + namespace = "com.github.nullptroma.wallenc" compileSdk = 34 defaultConfig { - applicationId = "ru.freedominc.wallenc" + applicationId = "com.github.nullptroma.wallenc" minSdk = 24 targetSdk = 34 versionCode = 1 @@ -53,7 +53,8 @@ android { } dependencies { - implementation(libs.androidx.navigation) + implementation(libs.navigation) + implementation(libs.navigation.hilt.compose) // Yandex implementation(libs.yandex.oauth) @@ -91,4 +92,7 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.ui.test.junit4) + + implementation(project(":domain")) + implementation(project(":data")) } \ No newline at end of file diff --git a/app/release/baselineProfiles/0/app-release.dm b/app/release/baselineProfiles/0/app-release.dm deleted file mode 100644 index 75b80c42cb6bd3f27befce4c0177d529cd9c830b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10630 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 E02l*|kN^Mx diff --git a/app/release/baselineProfiles/1/app-release.dm b/app/release/baselineProfiles/1/app-release.dm deleted file mode 100644 index 935d7dbe545683fbc928d90b6261ff2d30ff6c1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10571 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 diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json deleted file mode 100644 index 21bd5fb..0000000 --- a/app/release/output-metadata.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "version": 3, - "artifactType": { - "type": "APK", - "kind": "Directory" - }, - "applicationId": "ru.freedominc.wallenc", - "variantName": "release", - "elements": [ - { - "type": "SINGLE", - "filters": [], - "attributes": [], - "versionCode": 1, - "versionName": "1.0", - "outputFile": "app-release.apk" - } - ], - "elementType": "File", - "baselineProfiles": [ - { - "minApi": 28, - "maxApi": 30, - "baselineProfiles": [ - "baselineProfiles/1/app-release.dm" - ] - }, - { - "minApi": 31, - "maxApi": 2147483647, - "baselineProfiles": [ - "baselineProfiles/0/app-release.dm" - ] - } - ], - "minSdkVersionForDexing": 24 -} \ No newline at end of file diff --git a/app/src/androidTest/java/com/github/nullptroma/wallenc/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/github/nullptroma/wallenc/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..233462b --- /dev/null +++ b/app/src/androidTest/java/com/github/nullptroma/wallenc/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.github.nullptroma.wallenc + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.github.nullptroma.wallenc", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78008a3..44f7f9d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,6 +16,7 @@ diff --git a/app/src/main/java/ru/freedominc/wallenc/MainActivity.kt b/app/src/main/java/com/github/nullptroma/wallenc/MainActivity.kt similarity index 86% rename from app/src/main/java/ru/freedominc/wallenc/MainActivity.kt rename to app/src/main/java/com/github/nullptroma/wallenc/MainActivity.kt index 543711a..21361fd 100644 --- a/app/src/main/java/ru/freedominc/wallenc/MainActivity.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/MainActivity.kt @@ -1,4 +1,4 @@ -package ru.freedominc.wallenc +package com.github.nullptroma.wallenc import android.os.Bundle import android.widget.Toast @@ -18,13 +18,17 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview +import androidx.hilt.navigation.compose.hiltViewModel +import com.github.nullptroma.wallenc.ui.screens.main.MainScreen +import com.github.nullptroma.wallenc.ui.screens.main.MainViewModel +import com.github.nullptroma.wallenc.ui.theme.WallencTheme import com.yandex.authsdk.YandexAuthLoginOptions import com.yandex.authsdk.YandexAuthOptions import com.yandex.authsdk.YandexAuthResult import com.yandex.authsdk.YandexAuthSdk import com.yandex.authsdk.internal.strategy.LoginType import dagger.hilt.android.AndroidEntryPoint -import ru.freedominc.wallenc.ui.theme.WallencTheme + @AndroidEntryPoint class MainActivity : ComponentActivity() { @@ -40,9 +44,8 @@ class MainActivity : ComponentActivity() { setContent { WallencTheme { Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> - Greeting(modifier = Modifier.padding(innerPadding)) { - launcher.launch(loginOptions) - } + val vm : MainViewModel = hiltViewModel() + MainScreen(Modifier.padding(innerPadding), vm) } } } diff --git a/app/src/main/java/ru/freedominc/wallenc/WallencApplication.kt b/app/src/main/java/com/github/nullptroma/wallenc/WallencApplication.kt similarity index 78% rename from app/src/main/java/ru/freedominc/wallenc/WallencApplication.kt rename to app/src/main/java/com/github/nullptroma/wallenc/WallencApplication.kt index dd914ae..0769253 100644 --- a/app/src/main/java/ru/freedominc/wallenc/WallencApplication.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/WallencApplication.kt @@ -1,4 +1,4 @@ -package ru.freedominc.wallenc +package com.github.nullptroma.wallenc import android.app.Application import dagger.hilt.android.HiltAndroidApp diff --git a/app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreen.kt b/app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreen.kt new file mode 100644 index 0000000..fb63cb4 --- /dev/null +++ b/app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreen.kt @@ -0,0 +1,27 @@ +package com.github.nullptroma.wallenc.ui.screens.main + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.imePadding +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.hilt.navigation.compose.hiltViewModel + + +@Composable +fun MainScreen(modifier: Modifier = Modifier, viewModel: MainViewModel = hiltViewModel()) { + val state = viewModel.stateFlow + Column(modifier = modifier.imePadding()) { + + Text(text = state.value) + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.BottomCenter) { + TextField("", onValueChange = { + + }) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreenState.kt b/app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreenState.kt new file mode 100644 index 0000000..6159605 --- /dev/null +++ b/app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreenState.kt @@ -0,0 +1,3 @@ +package com.github.nullptroma.wallenc.ui.screens.main + +data class MainScreenState(val value: String) \ No newline at end of file diff --git a/app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainViewModel.kt b/app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainViewModel.kt new file mode 100644 index 0000000..faeda3f --- /dev/null +++ b/app/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainViewModel.kt @@ -0,0 +1,11 @@ +package com.github.nullptroma.wallenc.ui.screens.main + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class MainViewModel @Inject constructor( +): ViewModel() { + val stateFlow = MainScreenState("hello") +} \ No newline at end of file diff --git a/app/src/main/java/ru/freedominc/wallenc/ui/theme/Color.kt b/app/src/main/java/com/github/nullptroma/wallenc/ui/theme/Color.kt similarity index 83% rename from app/src/main/java/ru/freedominc/wallenc/ui/theme/Color.kt rename to app/src/main/java/com/github/nullptroma/wallenc/ui/theme/Color.kt index db603a5..a70ad7b 100644 --- a/app/src/main/java/ru/freedominc/wallenc/ui/theme/Color.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/ui/theme/Color.kt @@ -1,4 +1,4 @@ -package ru.freedominc.wallenc.ui.theme +package com.github.nullptroma.wallenc.ui.theme import androidx.compose.ui.graphics.Color diff --git a/app/src/main/java/ru/freedominc/wallenc/ui/theme/Theme.kt b/app/src/main/java/com/github/nullptroma/wallenc/ui/theme/Theme.kt similarity index 97% rename from app/src/main/java/ru/freedominc/wallenc/ui/theme/Theme.kt rename to app/src/main/java/com/github/nullptroma/wallenc/ui/theme/Theme.kt index d661cc7..dfff095 100644 --- a/app/src/main/java/ru/freedominc/wallenc/ui/theme/Theme.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/ui/theme/Theme.kt @@ -1,4 +1,4 @@ -package ru.freedominc.wallenc.ui.theme +package com.github.nullptroma.wallenc.ui.theme import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme diff --git a/app/src/main/java/ru/freedominc/wallenc/ui/theme/Type.kt b/app/src/main/java/com/github/nullptroma/wallenc/ui/theme/Type.kt similarity index 95% rename from app/src/main/java/ru/freedominc/wallenc/ui/theme/Type.kt rename to app/src/main/java/com/github/nullptroma/wallenc/ui/theme/Type.kt index 17ea7e2..45b699a 100644 --- a/app/src/main/java/ru/freedominc/wallenc/ui/theme/Type.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/ui/theme/Type.kt @@ -1,4 +1,4 @@ -package ru.freedominc.wallenc.ui.theme +package com.github.nullptroma.wallenc.ui.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle diff --git a/app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainScreen.kt b/app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainScreen.kt deleted file mode 100644 index 0c7617b..0000000 --- a/app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainScreen.kt +++ /dev/null @@ -1,8 +0,0 @@ -package ru.freedominc.wallenc.ui.screens.main - -import androidx.compose.runtime.Composable - -@Composable -fun MainScreen(viewModel: MainViewModel) { - -} \ No newline at end of file diff --git a/app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainScreenState.kt b/app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainScreenState.kt deleted file mode 100644 index cfacf11..0000000 --- a/app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainScreenState.kt +++ /dev/null @@ -1,3 +0,0 @@ -package ru.freedominc.wallenc.ui.screens.main - -data class MainScreenState(val value: Int) \ No newline at end of file diff --git a/app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainViewModel.kt b/app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainViewModel.kt deleted file mode 100644 index 1bce58d..0000000 --- a/app/src/main/java/ru/freedominc/wallenc/ui/screens/main/MainViewModel.kt +++ /dev/null @@ -1,9 +0,0 @@ -package ru.freedominc.wallenc.ui.screens.main - -import androidx.lifecycle.ViewModel -import dagger.hilt.android.lifecycle.HiltViewModel - -@HiltViewModel -class MainViewModel : ViewModel() { - -} \ No newline at end of file diff --git a/app/src/test/java/com/github/nullptroma/wallenc/ExampleUnitTest.kt b/app/src/test/java/com/github/nullptroma/wallenc/ExampleUnitTest.kt new file mode 100644 index 0000000..cc1c8e0 --- /dev/null +++ b/app/src/test/java/com/github/nullptroma/wallenc/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.github.nullptroma.wallenc + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 4535f71..2342b3e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,4 +5,5 @@ plugins { alias(libs.plugins.compose.compiler) apply false alias(libs.plugins.ksp) apply false alias(libs.plugins.dagger.hilt) apply false + alias(libs.plugins.android.library) apply false } \ No newline at end of file diff --git a/data/.gitignore b/data/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/data/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/data/build.gradle.kts b/data/build.gradle.kts new file mode 100644 index 0000000..9516968 --- /dev/null +++ b/data/build.gradle.kts @@ -0,0 +1,47 @@ +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.dagger.hilt) + alias(libs.plugins.ksp) +} + +android { + namespace = "com.github.nullptroma.data" + compileSdk = 34 + + defaultConfig { + minSdk = 24 + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } +} + +dependencies { + implementation(libs.dagger.hilt) + ksp(libs.dagger.hilt.compiler) + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.material) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) +} \ No newline at end of file diff --git a/data/consumer-rules.pro b/data/consumer-rules.pro new file mode 100644 index 0000000..e69de29 diff --git a/data/proguard-rules.pro b/data/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/data/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/ru/freedominc/wallenc/ExampleInstrumentedTest.kt b/data/src/androidTest/java/com/github/nullptroma/data/ExampleInstrumentedTest.kt similarity index 83% rename from app/src/androidTest/java/ru/freedominc/wallenc/ExampleInstrumentedTest.kt rename to data/src/androidTest/java/com/github/nullptroma/data/ExampleInstrumentedTest.kt index ad8a0ec..11a3c5f 100644 --- a/app/src/androidTest/java/ru/freedominc/wallenc/ExampleInstrumentedTest.kt +++ b/data/src/androidTest/java/com/github/nullptroma/data/ExampleInstrumentedTest.kt @@ -1,4 +1,4 @@ -package ru.freedominc.wallenc +package com.github.nullptroma.data import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -19,6 +19,6 @@ class ExampleInstrumentedTest { fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("ru.freedominc.wallenc", appContext.packageName) + assertEquals("com.github.nullptroma.data.test", appContext.packageName) } } \ No newline at end of file diff --git a/data/src/main/AndroidManifest.xml b/data/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a5918e6 --- /dev/null +++ b/data/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/test/java/ru/freedominc/wallenc/ExampleUnitTest.kt b/data/src/test/java/com/github/nullptroma/data/ExampleUnitTest.kt similarity index 90% rename from app/src/test/java/ru/freedominc/wallenc/ExampleUnitTest.kt rename to data/src/test/java/com/github/nullptroma/data/ExampleUnitTest.kt index d096920..aa929e4 100644 --- a/app/src/test/java/ru/freedominc/wallenc/ExampleUnitTest.kt +++ b/data/src/test/java/com/github/nullptroma/data/ExampleUnitTest.kt @@ -1,4 +1,4 @@ -package ru.freedominc.wallenc +package com.github.nullptroma.data import org.junit.Test diff --git a/domain/.gitignore b/domain/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/domain/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts new file mode 100644 index 0000000..1447936 --- /dev/null +++ b/domain/build.gradle.kts @@ -0,0 +1,47 @@ +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.dagger.hilt) + alias(libs.plugins.ksp) +} + +android { + namespace = "com.github.nullptroma.domain" + compileSdk = 34 + + defaultConfig { + minSdk = 24 + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } +} + +dependencies { + implementation(libs.dagger.hilt) + ksp(libs.dagger.hilt.compiler) + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.material) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) +} \ No newline at end of file diff --git a/domain/consumer-rules.pro b/domain/consumer-rules.pro new file mode 100644 index 0000000..e69de29 diff --git a/domain/proguard-rules.pro b/domain/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/domain/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/domain/src/androidTest/java/com/github/nullptroma/domain/ExampleInstrumentedTest.kt b/domain/src/androidTest/java/com/github/nullptroma/domain/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..cde98b1 --- /dev/null +++ b/domain/src/androidTest/java/com/github/nullptroma/domain/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.github.nullptroma.domain + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.github.nullptroma.domain.test", appContext.packageName) + } +} \ No newline at end of file diff --git a/domain/src/main/AndroidManifest.xml b/domain/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a5918e6 --- /dev/null +++ b/domain/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/domain/src/test/java/com/github/nullptroma/domain/ExampleUnitTest.kt b/domain/src/test/java/com/github/nullptroma/domain/ExampleUnitTest.kt new file mode 100644 index 0000000..811a1e1 --- /dev/null +++ b/domain/src/test/java/com/github/nullptroma/domain/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.github.nullptroma.domain + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7036f70..c718385 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,23 +1,27 @@ [versions] -agp = "8.6.0" +agp = "8.6.1" kotlin = "2.0.20" coreKtx = "1.13.1" junit = "4.13.2" junitVersion = "1.2.1" espressoCore = "3.6.1" -lifecycleRuntimeKtx = "2.8.5" +lifecycleRuntimeKtx = "2.8.6" activityCompose = "1.9.2" -composeBom = "2024.09.00" -navigation = "2.8.0" +composeBom = "2024.09.02" +navigation = "2.8.1" +hiltNavigation = "1.2.0" yandexAuthSdk = "3.1.1" -daggerHilt = "2.47" +daggerHilt = "2.49" ksp = "2.0.20-1.0.24" room = "2.6.1" retrofit = "2.9.0" gson = "2.10.1" +appcompat = "1.7.0" +material = "1.12.0" [libraries] -androidx-navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigation" } +navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigation" } +navigation-hilt-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hiltNavigation" } # Yandex yandex-oauth = { group = "com.yandex.android", name = "authsdk", version.ref = "yandexAuthSdk" } @@ -52,6 +56,8 @@ androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } +material = { group = "com.google.android.material", name = "material", version.ref = "material" } [plugins] @@ -60,4 +66,5 @@ kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } dagger-hilt = { id = "com.google.dagger.hilt.android", version.ref = "daggerHilt" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +android-library = { id = "com.android.library", version.ref = "agp" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 7ce2c97..edb7ac5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -21,4 +21,5 @@ dependencyResolutionManagement { rootProject.name = "Wallenc" include(":app") - \ No newline at end of file +include(":domain") +include(":data")