@@ -185,32 +185,63 @@ private fun SettingsScreen(uiState: SettingsState, onAction: (SettingsAction) ->
185185 val gitHubUrl = stringResource(R .string.prefs_github_url)
186186 val licenseUrl = stringResource(R .string.prefs_license_url)
187187 val privacyUrl = stringResource(R .string.prefs_privacy_url)
188+ val safeOpenUri: (String ) -> Unit = { url ->
189+ try { uriHandler.openUri(url) } catch (_: Exception ) {}
190+ }
188191
189192 ScreenColumn (
190193 topBar = { isVerticalLayout ->
191194 if (isVerticalLayout) {
192195 TopBar {
193- TopCard (onClick = { uriHandler.openUri(appUrl) }, version = uiState.appVersionName, modifier = Modifier .weight(1f ))
194- PrimaryIconCard (onClick = { uriHandler.openUri(donateUrl) }, resId = R .drawable.ic_pound)
196+ TopCard (
197+ onClick = { safeOpenUri(appUrl) },
198+ version = uiState.appVersionName,
199+ modifier = Modifier .weight(1f )
200+ )
201+ PrimaryIconCard (onClick = { safeOpenUri(donateUrl) }, resId = R .drawable.ic_pound)
195202 }
196203 TopBar {
197204 Row (modifier = Modifier .weight(1f ), horizontalArrangement = Arrangement .spacedBy(6 .dp)) {
198- BotCard (onClick = { uriHandler.openUri(fdroidUrl) }, R .drawable.ic_fdroid, fdroidTitle, modifier = Modifier .weight(1f ))
199- BotCard (onClick = { uriHandler.openUri(gitHubUrl) }, R .drawable.ic_github, gitHubTitle, modifier = Modifier .weight(1f ))
205+ BotCard (
206+ onClick = { safeOpenUri(fdroidUrl) },
207+ resId = R .drawable.ic_fdroid,
208+ text = fdroidTitle,
209+ modifier = Modifier .weight(1f )
210+ )
211+ BotCard (
212+ onClick = { safeOpenUri(gitHubUrl) },
213+ resId = R .drawable.ic_github,
214+ text = gitHubTitle,
215+ modifier = Modifier .weight(1f )
216+ )
200217 }
201- IconCard (action = { uriHandler.openUri (licenseUrl) }, resId = R .drawable.ic_license)
202- IconCard (action = { uriHandler.openUri (privacyUrl) }, resId = R .drawable.ic_policy)
218+ IconCard (action = { safeOpenUri (licenseUrl) }, resId = R .drawable.ic_license)
219+ IconCard (action = { safeOpenUri (privacyUrl) }, resId = R .drawable.ic_policy)
203220 }
204221 } else {
205222 TopBar {
206- PrimaryIconCard (onClick = { uriHandler.openUri(donateUrl) }, resId = R .drawable.ic_pound)
207- TopCard (onClick = { uriHandler.openUri(appUrl) }, version = uiState.appVersionName, modifier = Modifier .weight(1f ))
223+ PrimaryIconCard (onClick = { safeOpenUri(donateUrl) }, resId = R .drawable.ic_pound)
224+ TopCard (
225+ onClick = { safeOpenUri(appUrl) },
226+ version = uiState.appVersionName,
227+ modifier = Modifier .weight(1f )
228+ )
208229 Row (modifier = Modifier .weight(1f ), horizontalArrangement = Arrangement .spacedBy(6 .dp)) {
209- BotCard (onClick = { uriHandler.openUri(fdroidUrl) }, R .drawable.ic_fdroid, fdroidTitle, modifier = Modifier .weight(1f ))
210- BotCard (onClick = { uriHandler.openUri(gitHubUrl) }, R .drawable.ic_github, gitHubTitle, modifier = Modifier .weight(1f ))
230+ BotCard (
231+ onClick = { safeOpenUri(fdroidUrl) },
232+ resId = R .drawable.ic_fdroid,
233+ text = fdroidTitle,
234+ modifier = Modifier .weight(1f )
235+ )
236+ BotCard (
237+ onClick = { safeOpenUri(gitHubUrl) },
238+ resId = R .drawable.ic_github,
239+ text = gitHubTitle,
240+ modifier = Modifier .weight(1f )
241+ )
211242 }
212- IconCard (action = { uriHandler.openUri (licenseUrl) }, resId = R .drawable.ic_license)
213- IconCard (action = { uriHandler.openUri (privacyUrl) }, resId = R .drawable.ic_policy)
243+ IconCard (action = { safeOpenUri (licenseUrl) }, resId = R .drawable.ic_license)
244+ IconCard (action = { safeOpenUri (privacyUrl) }, resId = R .drawable.ic_policy)
214245 }
215246 }
216247 }
0 commit comments