Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
# Needed for configuration only
*.iml
# Comment if you like setup things
/.idea
.idea
# Customize more directories if needed
#/.idea/caches
#/.idea/libraries
Expand Down
35 changes: 19 additions & 16 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ plugins {
val localProperties = loadProperties("$projectDir/../local.properties")

android {
compileSdk = 35
compileSdk = 36
namespace = "illyan.jay"
defaultConfig {
applicationId = "illyan.jay"
minSdk = 23
targetSdk = 35
versionCode = 19
versionName = "0.4.1-alpha"
targetSdk = 36
versionCode = 20
versionName = "0.5.0-alpha"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
Expand Down Expand Up @@ -101,13 +101,13 @@ android {
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
isCoreLibraryDesugaringEnabled = true
}

kotlin {
jvmToolchain(17)
jvmToolchain(21)
}

buildFeatures {
Expand Down Expand Up @@ -137,17 +137,18 @@ dependencies {
// Core
implementation(libs.jetbrains.kotlin.stdlib)
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.splash)
implementation(libs.androidx.collection.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.activity.ktx)
implementation(libs.google.material)
implementation(libs.google.material.icons)
implementation(libs.jetbrains.kotlinx.datetime)
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar", "*.jar"))))

// Compose
implementation(libs.androidx.constraintlayout.compose)
implementation(libs.androidx.compose.foundation)
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.material)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.ui.util)
Expand All @@ -169,10 +170,6 @@ dependencies {
// Biometric Auth
//implementation "androidx.biometric:biometric:1.2.0-alpha05"

// Material design icons
implementation(libs.androidx.compose.material.icons.core)
implementation(libs.androidx.compose.material.icons.extended)

// Day-Night Cycle in Theming
implementation(libs.solarized)

Expand All @@ -184,13 +181,13 @@ dependencies {

// Mapbox
implementation(libs.mapbox.maps)
implementation(libs.mapbox.maps.compose)
implementation(libs.mapbox.search)
implementation(libs.mapbox.navigation)

// Accompanist
implementation(libs.accompanist.systemuicontroller)
implementation(libs.accompanist.permissions)
implementation(libs.accompanist.placeholder.material)
implementation(libs.placeholder)

// Hilt
implementation(libs.hilt)
Expand All @@ -201,7 +198,8 @@ dependencies {
implementation(libs.timber)

// Navigation
implementation(libs.compose.destinations.animations.core)
implementation(libs.compose.destinations.core)
implementation(libs.compose.destinations.bottom.sheet)
ksp(libs.compose.destinations.ksp)

// Coil
Expand Down Expand Up @@ -234,6 +232,11 @@ dependencies {
implementation(libs.google.maps.utils)
implementation(libs.google.maps.utils.ktx)

// Credential Manager + Google ID
implementation(libs.androidx.credentials)
implementation(libs.androidx.credentials.play.services.auth)
implementation(libs.google.identity.googleid)

// Firebase
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.auth)
Expand Down
9 changes: 2 additions & 7 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,16 @@
android:name=".MainApplication"
android:allowBackup="false"
android:enableOnBackInvokedCallback="true"
android:icon="@mipmap/ic_launcher"
android:icon="@mipmap/ic_launcher_foreground"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/Theme.Jay"
android:usesCleartextTraffic="false">

<!-- GMS services may conflict, that is why we need this field. -->
<property
android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/gma_ad_services_config"
tools:replace="android:resource" />

<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="${ADMOB_APPLICATION_ID}" />

<meta-data
android:name="firebase_performance_collection_enabled"
android:value="false" />
Expand Down
24 changes: 7 additions & 17 deletions app/src/main/java/illyan/jay/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,8 @@

package illyan.jay

import android.content.Intent
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
Expand All @@ -34,18 +31,17 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInAccount
import com.google.android.gms.tasks.Task
import com.mapbox.navigation.base.options.NavigationOptions
import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp
import com.ramcosta.composedestinations.DestinationsNavHost
import com.ramcosta.composedestinations.generated.NavGraphs
import dagger.hilt.android.AndroidEntryPoint
import illyan.jay.domain.interactor.AuthInteractor
import illyan.jay.ui.NavGraphs
import illyan.jay.ui.components.PreviewAccessibility
import illyan.jay.ui.theme.DefaultDestinationTransitions
import illyan.jay.ui.theme.JayThemeWithViewModel
import illyan.jay.util.MapboxExceptionHandler
import javax.inject.Inject
Expand All @@ -56,8 +52,6 @@ class MainActivity : AppCompatActivity() {
@Inject
lateinit var authInteractor: AuthInteractor

lateinit var googleSignInLauncher: ActivityResultLauncher<Intent>

init {
lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
Expand All @@ -73,12 +67,7 @@ class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

googleSignInLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) {
val task: Task<GoogleSignInAccount> = GoogleSignIn.getSignedInAccountFromIntent(it.data)
authInteractor.handleGoogleSignInResult(this, task)
}
installSplashScreen()

if (!MapboxNavigationApp.isSetup()) {
MapboxNavigationApp.setup {
Expand Down Expand Up @@ -114,7 +103,8 @@ fun MainScreen(
modifier: Modifier = Modifier
) {
DestinationsNavHost(
navGraph = NavGraphs.home,
modifier = modifier
navGraph = NavGraphs.root,
modifier = modifier,
defaultTransitions = DefaultDestinationTransitions
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@ import illyan.jay.data.datastore.model.AppSettings
import illyan.jay.domain.model.DomainPreferences
import kotlinx.coroutines.flow.map
import timber.log.Timber
import java.time.ZonedDateTime
import java.util.UUID
import javax.inject.Inject
import javax.inject.Singleton
import kotlin.time.Clock
import kotlin.time.ExperimentalTime

@OptIn(ExperimentalTime::class)
@Singleton
class AppSettingsDataSource @Inject constructor(
private val appSettingsDataStore: DataStore<AppSettings>
Expand Down Expand Up @@ -55,7 +57,7 @@ class AppSettingsDataSource @Inject constructor(
suspend fun updateAppPreferences(transform: (DomainPreferences) -> DomainPreferences) {
Timber.v("Updating App Preferences requested")
updateAppSettings {
it.copy(preferences = transform(it.preferences).copy(lastUpdate = ZonedDateTime.now()))
it.copy(preferences = transform(it.preferences).copy(lastUpdate = Clock.System.now()))
}
}
}
Loading
Loading