diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 44c0838..00ecb78 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,7 +14,10 @@ plugins { android { namespace = "com.pixelized.headache" - compileSdk = 36 + + compileSdk { + version = release(36) + } signingConfigs { create("pixelized") { populatePixelizedSigningConfig() } @@ -77,27 +80,25 @@ dependencies { // Android implementation("androidx.core:core-ktx:1.17.0") - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.9.4") - implementation("androidx.activity:activity-compose:1.11.0") - implementation("androidx.compose.ui:ui:1.9.3") - implementation("androidx.compose.ui:ui-graphics:1.9.3") - implementation("androidx.compose.ui:ui-tooling:1.9.3") - implementation("androidx.compose.ui:ui-tooling-preview:1.9.3") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.10.0") + implementation("androidx.activity:activity-compose:1.12.0") + implementation("androidx.compose.ui:ui:1.9.5") + implementation("androidx.compose.ui:ui-graphics:1.9.5") + implementation("androidx.compose.ui:ui-tooling:1.9.5") + implementation("androidx.compose.ui:ui-tooling-preview:1.9.5") // Material implementation("androidx.compose.material3:material3:1.4.0") implementation("androidx.compose.material:material-icons-extended:1.7.8") implementation("androidx.compose.material3:material3-window-size-class:1.4.0") - implementation("androidx.compose.material3.adaptive:adaptive-layout:1.1.0") // Navigation - implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha11") - implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha11") - implementation("androidx.compose.material3.adaptive:adaptive-navigation3:1.0.0-SNAPSHOT") - implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-SNAPSHOT") + implementation("androidx.navigation3:navigation3-runtime:1.0.0") + implementation("androidx.navigation3:navigation3-ui:1.0.0") + implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0") // Preferences - implementation("androidx.datastore:datastore-preferences:1.1.7") + implementation("androidx.datastore:datastore-preferences:1.2.0") // Json implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0") diff --git a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/CalendarChooserDestination.kt b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/CalendarChooserDestination.kt index 4248285..7c23387 100644 --- a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/CalendarChooserDestination.kt +++ b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/CalendarChooserDestination.kt @@ -1,14 +1,13 @@ package com.pixelized.headache.ui.navigation.destination -import androidx.navigation3.runtime.EntryProviderBuilder -import androidx.navigation3.runtime.entry +import androidx.navigation3.runtime.EntryProviderScope import com.pixelized.headache.ui.navigation.main.MainDestination import com.pixelized.headache.ui.navigation.main.MainNavigator import com.pixelized.headache.ui.page.calendar.CalendarChooserPage data object CalendarChooserDestination : MainDestination -fun EntryProviderBuilder<*>.calendarChooserDestinationEntry() { +fun EntryProviderScope.calendarChooserDestinationEntry() { entry { CalendarChooserPage() } diff --git a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/EventDestination.kt b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/EventDestination.kt index 6dc19cf..64843cf 100644 --- a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/EventDestination.kt +++ b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/EventDestination.kt @@ -1,9 +1,9 @@ package com.pixelized.headache.ui.navigation.destination import android.icu.util.Calendar +import androidx.compose.runtime.Stable import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel -import androidx.navigation3.runtime.EntryProviderBuilder -import androidx.navigation3.runtime.entry +import androidx.navigation3.runtime.EntryProviderScope import com.pixelized.headache.repository.event.Event import com.pixelized.headache.ui.navigation.main.MainDestination import com.pixelized.headache.ui.navigation.main.MainNavigator @@ -18,7 +18,7 @@ data class EventDestination( val invalidFilter: Boolean, ) : MainDestination -fun EntryProviderBuilder<*>.eventDestinationEntry() { +fun EntryProviderScope.eventDestinationEntry() { entry { key -> val viewModel = hiltViewModel( creationCallback = { factory -> diff --git a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/HomeDestination.kt b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/HomeDestination.kt index d506f26..b0f09fd 100644 --- a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/HomeDestination.kt +++ b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/HomeDestination.kt @@ -1,7 +1,6 @@ package com.pixelized.headache.ui.navigation.destination -import androidx.navigation3.runtime.EntryProviderBuilder -import androidx.navigation3.runtime.entry +import androidx.navigation3.runtime.EntryProviderScope import com.pixelized.headache.ui.navigation.home.HomeNavigator import com.pixelized.headache.ui.navigation.main.MainDestination import com.pixelized.headache.ui.navigation.main.MainNavigator @@ -9,7 +8,7 @@ import com.pixelized.headache.ui.page.home.HomePage data object HomePageDestination : MainDestination -fun EntryProviderBuilder<*>.homeDestinationEntry( +fun EntryProviderScope.homeDestinationEntry( navigator: HomeNavigator, ) { entry { diff --git a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/MonthSummaryDestination.kt b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/MonthSummaryDestination.kt index 6166876..29deb53 100644 --- a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/MonthSummaryDestination.kt +++ b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/MonthSummaryDestination.kt @@ -1,14 +1,13 @@ package com.pixelized.headache.ui.navigation.destination -import androidx.navigation3.runtime.EntryProviderBuilder -import androidx.navigation3.runtime.entry +import androidx.navigation3.runtime.EntryProviderScope import com.pixelized.headache.ui.navigation.home.HomeDestination import com.pixelized.headache.ui.navigation.home.HomeNavigator import com.pixelized.headache.ui.page.summary.monthly.MonthSummaryPage data object MonthSummaryDestination : HomeDestination -fun EntryProviderBuilder<*>.monthSummaryDestinationEntry() { +fun EntryProviderScope.monthSummaryDestinationEntry() { entry { MonthSummaryPage() } diff --git a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/ReportDestination.kt b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/ReportDestination.kt index 00a7503..29512be 100644 --- a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/ReportDestination.kt +++ b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/ReportDestination.kt @@ -1,14 +1,13 @@ package com.pixelized.headache.ui.navigation.destination -import androidx.navigation3.runtime.EntryProviderBuilder -import androidx.navigation3.runtime.entry +import androidx.navigation3.runtime.EntryProviderScope import com.pixelized.headache.ui.navigation.home.HomeDestination import com.pixelized.headache.ui.navigation.home.HomeNavigator import com.pixelized.headache.ui.page.summary.report.ReportPage data object ReportDestination : HomeDestination -fun EntryProviderBuilder<*>.reportDestinationEntry() { +fun EntryProviderScope.reportDestinationEntry() { entry { ReportPage() } diff --git a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/YearSummaryDestination.kt b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/YearSummaryDestination.kt index 1218a57..a1ddc30 100644 --- a/app/src/main/java/com/pixelized/headache/ui/navigation/destination/YearSummaryDestination.kt +++ b/app/src/main/java/com/pixelized/headache/ui/navigation/destination/YearSummaryDestination.kt @@ -1,15 +1,13 @@ package com.pixelized.headache.ui.navigation.destination -import androidx.navigation3.runtime.EntryProviderBuilder -import androidx.navigation3.runtime.entry +import androidx.navigation3.runtime.EntryProviderScope import com.pixelized.headache.ui.navigation.home.HomeDestination import com.pixelized.headache.ui.navigation.home.HomeNavigator import com.pixelized.headache.ui.page.summary.yearly.YearSummaryPage - data object YearSummaryDestination : HomeDestination -fun EntryProviderBuilder<*>.yearSummaryDestinationEntry() { +fun EntryProviderScope.yearSummaryDestinationEntry() { entry { YearSummaryPage() } diff --git a/app/src/main/java/com/pixelized/headache/ui/navigation/home/HomeNavDisplay.kt b/app/src/main/java/com/pixelized/headache/ui/navigation/home/HomeNavDisplay.kt index cd8d92b..9a6538f 100644 --- a/app/src/main/java/com/pixelized/headache/ui/navigation/home/HomeNavDisplay.kt +++ b/app/src/main/java/com/pixelized/headache/ui/navigation/home/HomeNavDisplay.kt @@ -6,12 +6,8 @@ import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.Modifier import androidx.lifecycle.viewmodel.navigation3.rememberViewModelStoreNavEntryDecorator import androidx.navigation3.runtime.entryProvider -import androidx.navigation3.runtime.rememberSavedStateNavEntryDecorator +import androidx.navigation3.runtime.rememberSaveableStateHolderNavEntryDecorator import androidx.navigation3.ui.NavDisplay -import androidx.navigation3.ui.rememberSceneSetupNavEntryDecorator -import com.pixelized.headache.ui.navigation.destination.calendarChooserDestinationEntry -import com.pixelized.headache.ui.navigation.destination.eventDestinationEntry -import com.pixelized.headache.ui.navigation.destination.homeDestinationEntry import com.pixelized.headache.ui.navigation.destination.monthSummaryDestinationEntry import com.pixelized.headache.ui.navigation.destination.reportDestinationEntry import com.pixelized.headache.ui.navigation.destination.yearSummaryDestinationEntry @@ -32,8 +28,7 @@ fun HomeNavDisplay( modifier = modifier, backStack = navigator.backStack, entryDecorators = listOf( - rememberSceneSetupNavEntryDecorator(), - rememberSavedStateNavEntryDecorator(), + rememberSaveableStateHolderNavEntryDecorator(), rememberViewModelStoreNavEntryDecorator(), ), onBack = { diff --git a/app/src/main/java/com/pixelized/headache/ui/navigation/main/MainNavDisplay.kt b/app/src/main/java/com/pixelized/headache/ui/navigation/main/MainNavDisplay.kt index a1b1e3f..72fe966 100644 --- a/app/src/main/java/com/pixelized/headache/ui/navigation/main/MainNavDisplay.kt +++ b/app/src/main/java/com/pixelized/headache/ui/navigation/main/MainNavDisplay.kt @@ -5,16 +5,19 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.Modifier import androidx.lifecycle.viewmodel.navigation3.rememberViewModelStoreNavEntryDecorator +import androidx.navigation3.runtime.EntryProviderScope import androidx.navigation3.runtime.entryProvider -import androidx.navigation3.runtime.rememberSavedStateNavEntryDecorator +import androidx.navigation3.runtime.rememberSaveableStateHolderNavEntryDecorator import androidx.navigation3.ui.NavDisplay -import androidx.navigation3.ui.rememberSceneSetupNavEntryDecorator +import com.pixelized.headache.ui.navigation.destination.HomePageDestination import com.pixelized.headache.ui.navigation.destination.calendarChooserDestinationEntry import com.pixelized.headache.ui.navigation.destination.eventDestinationEntry import com.pixelized.headache.ui.navigation.destination.homeDestinationEntry import com.pixelized.headache.ui.navigation.destination.monthSummaryDestinationEntry import com.pixelized.headache.ui.navigation.destination.yearSummaryDestinationEntry import com.pixelized.headache.ui.navigation.home.HomeNavigator +import com.pixelized.headache.ui.page.home.HomePage +import dagger.hilt.android.scopes.ActivityRetainedScoped val LocalMainNavigator = staticCompositionLocalOf { error("Local Navigation no yet ready") @@ -33,14 +36,14 @@ fun MainNavDisplay( modifier = modifier, backStack = mainNavigator.backStack, entryDecorators = listOf( - rememberSceneSetupNavEntryDecorator(), - rememberSavedStateNavEntryDecorator(), + rememberSaveableStateHolderNavEntryDecorator(), rememberViewModelStoreNavEntryDecorator(), ), onBack = { mainNavigator.popBackstack() }, entryProvider = entryProvider { + homeDestinationEntry(navigator = homeNavigator) calendarChooserDestinationEntry() eventDestinationEntry() diff --git a/headache.zip b/headache.zip new file mode 100644 index 0000000..c98b708 Binary files /dev/null and b/headache.zip differ