Skip to content

Commit

Permalink
Merge pull request #64 from grodnoroads/1.2.6
Browse files Browse the repository at this point in the history
v1.2.6
  • Loading branch information
egorikftp authored Jan 21, 2024
2 parents a1f8e57 + 3fbf690 commit 0792572
Show file tree
Hide file tree
Showing 393 changed files with 5,095 additions and 2,051 deletions.
18 changes: 9 additions & 9 deletions .github/workflows/release_aab.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,24 +30,24 @@ jobs:
run: chmod +x build.gradle.kts

- name: Copy google-services.json
run: echo ${{ secrets.GOOGLE_JSON }} | base64 --decode > app/google-services.json
run: echo ${{ secrets.GOOGLE_JSON }} | base64 --decode > app/android/google-services.json

- name: Copy key
uses: RollyPeres/base64-to-path@v1
with:
filePath: ${{ github.workspace }}/app/keystore.jks
filePath: ${{ github.workspace }}/app/android/keystore.jks
encodedString: ${{ secrets.KEY_STORE }}

- name: Console
run: echo ${{ github.workspace }}/app/keystore.jks
run: echo ${{ github.workspace }}/app/android/keystore.jks

- name: Make secrets.properties
run: echo ${{ secrets.SECRETS_PROPERTIES }} | base64 --decode > secrets.properties

- name: "Check keystore existence"
uses: andstor/file-existence-action@v1
with:
files: "app/keystore.jks"
files: "app/android/keystore.jks"

- name: Make sh executable
run: chmod +x ./increment.sh
Expand All @@ -58,14 +58,14 @@ jobs:

- name: Build Release AAB
id: buildRelease
run: ./gradlew clean bundleRelease
run: ./gradlew clean app:android:bundleRelease

- name: Upload *.aab artifact
id: uploadArtifact
uses: actions/upload-artifact@v1
with:
name: app
path: app/build/outputs/bundle/release/app-release.aab
name: android
path: app/android/build/outputs/bundle/release/android-release.aab

- name: Create service_account.json
id: createServiceAccount
Expand All @@ -77,9 +77,9 @@ jobs:
with:
serviceAccountJson: service_account.json
packageName: com.egoriku.grodnoroads
releaseFiles: app/build/outputs/bundle/release/app-release.aab
releaseFiles: app/android/build/outputs/bundle/release/android-release.aab
track: beta
mappingFile: app/build/outputs/mapping/release/mapping.txt
mappingFile: app/android/build/outputs/mapping/release/mapping.txt
status: completed

- name: Commit files
Expand Down
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,13 @@ Current functionality:

## Issues
In case bug and suggestions, please create issue.

### Useful gradle commands

Check dependency updates: `./gradlew dependencyUpdates`
Run compose metrics: `./gradlew app:android:assembleRelease -PenableComposeCompilerReports=true`

Build ui-demo: `./gradlew app:ui-demo:assembleRelease`

Build app debug: `./gradlew app:android:assembleDebug`
Build app release: `./gradlew app:android:assembleRelease`
File renamed without changes.
57 changes: 16 additions & 41 deletions app/build.gradle.kts → app/android/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import com.egoriku.grodnoroads.extension.debug
import com.egoriku.grodnoroads.extension.provideVersionCode
import com.egoriku.grodnoroads.extension.provideVersionName
import com.egoriku.grodnoroads.extension.release
import com.egoriku.grodnoroads.extension.*

plugins {
id("grodnoroads.application")
id("grodnoroads.compose")
alias(libs.plugins.firebase.crashlytics)
alias(libs.plugins.google.services)
alias(libs.plugins.kotlin.parcelize)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.secrets)
}

Expand All @@ -21,21 +19,21 @@ android {
compileSdk = libs.versions.compileSdk.get().toInt()
targetSdk = libs.versions.compileSdk.get().toInt()

versionCode = provideVersionCode("app/version.properties")
versionName = provideVersionName("app/version.properties")
versionCode = provideVersionCode("$projectDir/version.properties")
versionName = provideVersionName("$projectDir/version.properties")
resourceConfigurations += listOf("en", "ru", "be-rBY")
}

signingConfigs {
debug {
storeFile = keyStoreFile("debug.keystore")
storeFile = loadKeystore("$rootDir/config/debug.keystore")
storePassword = "android"
keyAlias = "androiddebugkey"
keyPassword = "android"
}

release {
storeFile = keyStoreFile("keystore.jks", "debug.keystore")
storeFile = loadKeystore("keystore.jks", "$rootDir/config/debug.keystore")
storePassword = System.getenv("KEY_STORE_PASSWORD") ?: "android"
keyAlias = System.getenv("KEY_ALIAS") ?: "androiddebugkey"
keyPassword = System.getenv("KEY_PASSWORD") ?: "android"
Expand All @@ -50,21 +48,11 @@ android {

release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
proguardFiles(
"proguard-rules.pro",
getDefaultProguardFile("proguard-android-optimize.txt")
)
isShrinkResources = true
}
}

buildFeatures {
compose = true
}

composeOptions {
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
buildConfig = true
}

packaging {
Expand All @@ -83,34 +71,34 @@ dependencies {

implementation(projects.features.setting.alerts)
implementation(projects.features.setting.appearance)
implementation(projects.features.setting.changelog)
implementation(projects.features.setting.faq)
implementation(projects.features.setting.map)
implementation(projects.features.setting.whatsnew)

implementation(projects.shared.appSettings)
implementation(projects.shared.appComponent)

implementation(projects.compose.foundation.core)
implementation(projects.compose.foundation.preview)
implementation(projects.compose.foundation.theme)
implementation(projects.compose.foundation.uikit)

implementation(projects.compose.commonUi)

implementation(projects.libraries.analytics)
implementation(projects.libraries.crashlytics)
implementation(projects.libraries.extensions)
implementation(projects.libraries.foundation)
implementation(projects.libraries.location)
implementation(projects.libraries.resources)

implementation(libs.accompanist.systemuicontroller)

implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.foundation)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.material3.window)
implementation(libs.androidx.compose.material.icons)
implementation(libs.androidx.compose.runtime)
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.tooling.preview)
debugImplementation(libs.androidx.compose.ui.tooling)

implementation(libs.androidx.activity.compose)
implementation(libs.androidx.core)
implementation(libs.androidx.core.splashscreen)

implementation(libs.coroutines)
Expand All @@ -130,21 +118,8 @@ dependencies {
implementation(libs.mvikotlin.extensions)
implementation(libs.mvikotlin.main)
implementation(libs.mvikotlin)
implementation(libs.play.services.location)
}

secrets {
propertiesFileName = "secrets.properties"
}

fun keyStoreFile(vararg fileNames: String): File? {
for (path in fileNames) {
val file = project.file(path)

if (file.exists()) {
return file
}
}

return null
}
File renamed without changes.
File renamed without changes
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
android:localeConfig="@xml/locales_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:enableOnBackInvokedCallback="true"
android:theme="@style/SplashTheme">

<activity
Expand Down
File renamed without changes
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.egoriku.grodnoroads

import android.os.Bundle
import androidx.activity.SystemBarStyle
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
Expand All @@ -10,31 +12,28 @@ import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.graphics.Color
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.core.view.WindowCompat
import com.arkivanov.decompose.defaultComponentContext
import com.egoriku.grodnoroads.extensions.common.StateData
import com.egoriku.grodnoroads.foundation.core.LocalActivity
import com.egoriku.grodnoroads.foundation.theme.GrodnoRoadsM3Theme
import com.egoriku.grodnoroads.screen.root.RoadsRootComponent
import com.egoriku.grodnoroads.screen.root.RoadsRootComponentImpl
import com.egoriku.grodnoroads.screen.root.RootContent
import com.egoriku.grodnoroads.shared.appsettings.types.appearance.Theme
import com.egoriku.grodnoroads.util.LocalWindowSizeClass
import com.google.accompanist.systemuicontroller.rememberSystemUiController

// Don't use ComponentActivity, due to it breaks language change
class MainActivity : AppCompatActivity() {

@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
override fun onCreate(savedInstanceState: Bundle?) {
val splash = installSplashScreen()

splash.setKeepOnScreenCondition { true }

enableEdgeToEdge()
super.onCreate(savedInstanceState)

WindowCompat.setDecorFitsSystemWindows(window, false)

val root: RoadsRootComponent = RoadsRootComponentImpl(defaultComponentContext())

setContent {
Expand All @@ -49,22 +48,26 @@ class MainActivity : AppCompatActivity() {
Theme.Light -> false
}

GrodnoRoadsM3Theme(darkTheme) {
val systemUiController = rememberSystemUiController()
DisposableEffect(darkTheme) {
enableEdgeToEdge(
statusBarStyle = SystemBarStyle.auto(
lightScrim = android.graphics.Color.TRANSPARENT,
darkScrim = android.graphics.Color.TRANSPARENT,
) { darkTheme },
navigationBarStyle = SystemBarStyle.auto(
lightScrim = android.graphics.Color.TRANSPARENT,
darkScrim = android.graphics.Color.TRANSPARENT,
) { darkTheme },
)
onDispose {}
}

DisposableEffect(systemUiController, darkTheme) {
systemUiController.apply {
setSystemBarsColor(color = Color.Transparent, darkIcons = darkTheme)
isNavigationBarContrastEnforced = false
statusBarDarkContentEnabled = !darkTheme
navigationBarDarkContentEnabled = !darkTheme
}
onDispose {}
}
GrodnoRoadsM3Theme(darkTheme) {
CompositionLocalProvider(
LocalWindowSizeClass provides calculateWindowSizeClass(this),
LocalActivity provides this,
) {
RootContent(roadsRootComponent = root)
RootContent(rootComponent = root)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import com.egoriku.grodnoroads.setting.alerts.di.alertsModule
import com.egoriku.grodnoroads.setting.appearance.di.appearanceModule
import com.egoriku.grodnoroads.setting.faq.di.faqModule
import com.egoriku.grodnoroads.setting.map.di.mapSettingsModule
import com.egoriku.grodnoroads.setting.whatsnew.di.whatsNewModule
import com.egoriku.grodnoroads.setting.changelog.di.changelogModule
import com.google.android.gms.maps.MapsInitializer
import com.google.android.gms.maps.MapsInitializer.Renderer
import com.google.android.gms.maps.OnMapsSdkInitializedCallback
Expand Down Expand Up @@ -59,7 +59,7 @@ class RoadsApplication : Application(), OnMapsSdkInitializedCallback {
appearanceModule,
faqModule,
mapSettingsModule,
whatsNewModule,
changelogModule,

rootModule,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@ package com.egoriku.grodnoroads.screen.main
import com.arkivanov.decompose.ComponentContext
import com.arkivanov.decompose.router.stack.*
import com.arkivanov.decompose.value.Value
import com.arkivanov.essenty.parcelable.Parcelable
import com.egoriku.grodnoroads.map.domain.component.buildMapComponent
import com.egoriku.grodnoroads.screen.main.MainComponent.Child
import com.egoriku.grodnoroads.setting.domain.component.buildSettingsComponent
import com.egoriku.grodnoroads.shared.appcomponent.Page
import kotlinx.parcelize.Parcelize
import kotlinx.serialization.Serializable
import org.koin.core.component.KoinComponent

fun buildMainComponent(
Expand All @@ -28,6 +27,7 @@ internal class MainComponentImpl(

private val stack: Value<ChildStack<Config, Child>> = childStack(
source = navigation,
serializer = Config.serializer(),
initialConfiguration = Config.Map,
handleBackButton = true,
key = "Main",
Expand Down Expand Up @@ -57,11 +57,12 @@ internal class MainComponentImpl(
)
}

private sealed class Config : Parcelable {
@Parcelize
@Serializable
private sealed class Config {
@Serializable
data object Map : Config()

@Parcelize
@Serializable
data object Settings : Config()
}
}
Loading

0 comments on commit 0792572

Please sign in to comment.