Skip to content

Commit 36ccac1

Browse files
author
Josh
committed
a few last minute changes
1 parent b32c9a1 commit 36ccac1

7 files changed

Lines changed: 33 additions & 10 deletions

File tree

app/src/main/java/net/frozendevelopment/openletters/MainActivity.kt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package net.frozendevelopment.openletters
22

3+
import android.content.ActivityNotFoundException
4+
import android.content.Intent
35
import android.os.Bundle
6+
import android.widget.Toast
47
import androidx.activity.ComponentActivity
58
import androidx.activity.compose.setContent
69
import androidx.activity.enableEdgeToEdge
@@ -27,6 +30,7 @@ import androidx.compose.runtime.remember
2730
import androidx.compose.runtime.rememberCoroutineScope
2831
import androidx.compose.ui.Modifier
2932
import androidx.compose.ui.unit.dp
33+
import androidx.core.net.toUri
3034
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
3135
import androidx.lifecycle.compose.collectAsStateWithLifecycle
3236
import androidx.navigation3.runtime.NavKey
@@ -85,7 +89,19 @@ class MainActivity : ComponentActivity() {
8589
ReminderListDestination,
8690
),
8791
)
88-
val navigator = remember { Navigator(navigationState, onBackPressedDispatcher) }
92+
val navigator = remember {
93+
Navigator(
94+
state = navigationState,
95+
backPressedDispatcher = onBackPressedDispatcher,
96+
openInBrowser = {
97+
try {
98+
startActivity(Intent(Intent.ACTION_VIEW, it.toUri()))
99+
} catch (_: ActivityNotFoundException) {
100+
Toast.makeText(this, "No browser found", Toast.LENGTH_SHORT).show()
101+
}
102+
},
103+
)
104+
}
89105
val entryProvider: EntryProvider = koinEntryProvider()
90106

91107
val windowAdaptiveInfo = currentWindowAdaptiveInfo()

app/src/main/java/net/frozendevelopment/openletters/feature/category/form/CategoryFormView.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,11 @@ fun Module.categoryFormNavigation() = navigation<CategoryFormDestination> { rout
8080
state = state,
8181
onLabelChanged = viewModel::setLabel,
8282
onColorChanged = viewModel::setColor,
83-
onBackClicked = navigator::pop,
83+
onBackClicked = navigator::onBackPressed,
8484
onSaveClicked = {
8585
coroutineScope.launch {
8686
viewModel.save()
87-
navigator.pop()
87+
navigator.onBackPressed()
8888
}
8989
},
9090
)

app/src/main/java/net/frozendevelopment/openletters/feature/letter/scan/ScanLetterView.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ fun Module.scanLetterNavigation() = navigation<ScanLetterDestination> { route ->
169169
if (viewModel.save()) {
170170
withContext(Dispatchers.Main) {
171171
if (route.canNavigateBack) {
172-
navigator.pop()
172+
navigator.onBackPressed()
173173
} else {
174174
navigator.navigate { backStack ->
175175
backStack.add(0, LetterListDestination)
@@ -180,7 +180,7 @@ fun Module.scanLetterNavigation() = navigation<ScanLetterDestination> { route ->
180180
}
181181
}
182182
},
183-
onBackClicked = navigator::pop,
183+
onBackClicked = navigator::onBackPressed,
184184
onDeleteDocumentClicked = viewModel::removeDocument,
185185
onCreateCategoryClicked = { navigator.navigate(CategoryFormDestination(CategoryFormDestination.Mode.Create)) },
186186
)

app/src/main/java/net/frozendevelopment/openletters/feature/reminder/detail/ReminderDetailView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ fun Module.reminderDetailNavigation() = navigation<ReminderDetailDestination>(
9898
ReminderDetailScreen(
9999
modifier = Modifier.fillMaxWidth(),
100100
state = state,
101-
onBackClicked = navigator::pop,
101+
onBackClicked = navigator::onBackPressed,
102102
onAcknowledgeClicked = viewModel::acknowledge,
103103
onLetterClicked = { navigator.navigate(LetterDetailDestination(it)) },
104104
)

app/src/main/java/net/frozendevelopment/openletters/feature/reminder/form/ReminderFormView.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,11 @@ fun Module.reminderFormNavigation() = navigation<ReminderFormDestination> { rout
113113
toggleLetterSelect = viewModel::toggleLetterSelect,
114114
onLetterClicked = { navigator.navigate(LetterDetailDestination(it)) },
115115
openDialog = viewModel::openDialog,
116-
onBackClicked = navigator::pop,
116+
onBackClicked = navigator::onBackPressed,
117117
onSaveClicked = {
118118
coroutineScope.launch {
119119
if (viewModel.save()) {
120-
navigator.pop()
120+
navigator.onBackPressed()
121121
}
122122
}
123123
},

app/src/main/java/net/frozendevelopment/openletters/feature/settings/SettingsView.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ fun Module.settingsNavigation() = navigation<SettingsDestination> { route ->
5353
SettingsView(
5454
modifier = Modifier.fillMaxSize(),
5555
state = state,
56-
onBackClicked = navigator::pop,
56+
onBackClicked = navigator::onBackPressed,
5757
onThemeChanged = viewModel::setTheme,
5858
onColorVariantChanged = viewModel::setVariant,
59-
onViewSourceClicked = {}, // { navigator.openUrl("https://github.com/frozenjava/OpenLetters") },
59+
onViewSourceClicked = { navigator.openUrl("https://github.com/frozenjava/OpenLetters") },
6060
)
6161
}
6262
}

app/src/main/java/net/frozendevelopment/openletters/ui/navigation/Navigator.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@ interface NavigatorType {
1616
fun pop()
1717

1818
fun onBackPressed()
19+
20+
fun openUrl(url: String)
1921
}
2022

2123
@Stable
2224
class Navigator(
2325
val state: NavigationState,
2426
val backPressedDispatcher: OnBackPressedDispatcher? = null,
27+
val openInBrowser: (url: String) -> Unit = {},
2528
) : NavigatorType {
2629
override fun navigate(route: NavKey) {
2730
if (route in state.backStacks.keys) {
@@ -53,6 +56,8 @@ class Navigator(
5356
override fun onBackPressed() {
5457
backPressedDispatcher?.onBackPressed()
5558
}
59+
60+
override fun openUrl(url: String) = openInBrowser(url)
5661
}
5762

5863
class PreviewNavigator : NavigatorType {
@@ -63,4 +68,6 @@ class PreviewNavigator : NavigatorType {
6368
override fun pop() {}
6469

6570
override fun onBackPressed() {}
71+
72+
override fun openUrl(url: String) {}
6673
}

0 commit comments

Comments
 (0)