Skip to content

Commit 1be6cf8

Browse files
authored
fix: lock open button if Leon is default browser (#500)
1 parent 67fd46a commit 1be6cf8

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.svenjacobs.app.leon.ui.common
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import android.net.Uri
6+
7+
fun isDefaultBrowser(context: Context): Boolean {
8+
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://"))
9+
val activity = intent.resolveActivity(context.packageManager)
10+
return activity?.packageName?.startsWith("com.svenjacobs.app.leon") ?: false
11+
}

app/src/main/kotlin/com/svenjacobs/app/leon/ui/screens/main/MainScreen.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ import androidx.navigation.compose.composable
7373
import androidx.navigation.compose.rememberNavController
7474
import com.svenjacobs.app.leon.R
7575
import com.svenjacobs.app.leon.core.domain.action.ActionAfterClean
76+
import com.svenjacobs.app.leon.ui.common.isDefaultBrowser
7677
import com.svenjacobs.app.leon.ui.common.views.TopAppBar
7778
import com.svenjacobs.app.leon.ui.screens.main.model.MainScreenViewModel
7879
import com.svenjacobs.app.leon.ui.screens.main.model.MainScreenViewModel.UiState.Result
@@ -158,6 +159,10 @@ fun MainScreen(
158159
}
159160

160161
fun openUrl(result: Result.Success) {
162+
// When Leon is the system default browser we neither can open the URL in custom tabs nor
163+
// in the default browser because this would just open Leon again.
164+
if (isDefaultBrowser(context)) return
165+
161166
if (uiState.isCustomTabsEnabled) {
162167
openInCustomTabs(result)
163168
} else {
@@ -375,6 +380,7 @@ private fun SuccessBody(
375380
OutlinedButton(
376381
modifier = buttonModifier,
377382
onClick = { onOpenClick(result) },
383+
enabled = !isDefaultBrowser(LocalContext.current),
378384
) {
379385
Text(
380386
text = stringResource(R.string.open),

app/src/main/kotlin/com/svenjacobs/app/leon/ui/screens/settings/SettingsScreen.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,15 @@ import androidx.compose.runtime.saveable.rememberSaveable
4141
import androidx.compose.runtime.setValue
4242
import androidx.compose.ui.Alignment
4343
import androidx.compose.ui.Modifier
44+
import androidx.compose.ui.platform.LocalContext
4445
import androidx.compose.ui.res.stringResource
4546
import androidx.compose.ui.unit.dp
4647
import androidx.lifecycle.compose.collectAsStateWithLifecycle
4748
import androidx.lifecycle.viewmodel.compose.viewModel
4849
import com.svenjacobs.app.leon.BuildConfig
4950
import com.svenjacobs.app.leon.R
5051
import com.svenjacobs.app.leon.core.domain.action.ActionAfterClean
52+
import com.svenjacobs.app.leon.ui.common.isDefaultBrowser
5153
import com.svenjacobs.app.leon.ui.screens.settings.model.SettingsScreenViewModel
5254
import com.svenjacobs.app.leon.ui.theme.AppTheme
5355
import com.svenjacobs.app.leon.ui.tooling.DayNightPreviews
@@ -127,6 +129,7 @@ private fun Content(
127129
text = stringResource(R.string.open_in_custom_tabs),
128130
checked = customTabsEnabled,
129131
onCheckedChange = onCustomTabsSwitchCheckedChange,
132+
enabled = !isDefaultBrowser(LocalContext.current),
130133
)
131134

132135
Column(
@@ -215,6 +218,7 @@ private fun SwitchRow(
215218
checked: Boolean,
216219
onCheckedChange: (Boolean) -> Unit,
217220
modifier: Modifier = Modifier,
221+
enabled: Boolean = true,
218222
) {
219223
Row(
220224
modifier = modifier.fillMaxWidth(),
@@ -230,6 +234,7 @@ private fun SwitchRow(
230234
Switch(
231235
checked = checked,
232236
onCheckedChange = onCheckedChange,
237+
enabled = enabled,
233238
)
234239
}
235240
}

0 commit comments

Comments
 (0)