Skip to content

Commit 43d8ba2

Browse files
committed
clean up arguments in the ErrorReportScreen
1 parent b412c9c commit 43d8ba2

File tree

2 files changed

+42
-45
lines changed

2 files changed

+42
-45
lines changed

app/src/main/java/org/schabi/newpipe/navigation/NavDisplay.kt

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import org.schabi.newpipe.MainActivity
2424
import org.schabi.newpipe.R
2525
import org.schabi.newpipe.error.ErrorInfo
2626
import org.schabi.newpipe.error.ErrorReportHelper
27+
import org.schabi.newpipe.ui.screens.ErrorReportEvent
2728
import org.schabi.newpipe.ui.screens.ErrorReportScreen
2829
import org.schabi.newpipe.ui.screens.settings.debug.DebugScreen
2930
import org.schabi.newpipe.ui.screens.settings.home.SettingsHomeScreen
@@ -79,21 +80,26 @@ fun NavDisplay(startDestination: NavKey) {
7980

8081
ErrorReportScreen(
8182
errorInfo = errorInfo,
82-
onBackClick = ::onNavigateUp,
83-
onReportViaEmail = { comment ->
84-
ErrorReportHelper.sendErrorEmail(context, errorInfo, comment)
85-
},
86-
onCopyForGitHub = { comment ->
87-
ErrorReportHelper.copyForGitHub(context, errorInfo, comment)
88-
},
89-
onReportOnGitHub = {
90-
ErrorReportHelper.openGitHubIssues(context)
91-
},
92-
onReadPrivacyPolicy = {
93-
ErrorReportHelper.openPrivacyPolicy(context)
94-
},
95-
onShareError = { comment ->
96-
ErrorReportHelper.shareError(context, errorInfo, comment)
83+
onEvent = { event ->
84+
when (event) {
85+
is ErrorReportEvent.ReportViaEmail ->
86+
ErrorReportHelper.sendErrorEmail(context, errorInfo, event.comment)
87+
88+
is ErrorReportEvent.CopyForGitHub ->
89+
ErrorReportHelper.copyForGitHub(context, errorInfo, event.comment)
90+
91+
is ErrorReportEvent.ReportOnGitHub ->
92+
ErrorReportHelper.openGitHubIssues(context)
93+
94+
is ErrorReportEvent.ReadPrivacyPolicy ->
95+
ErrorReportHelper.openPrivacyPolicy(context)
96+
97+
is ErrorReportEvent.ShareError ->
98+
ErrorReportHelper.shareError(context, errorInfo, event.comment)
99+
100+
is ErrorReportEvent.NavigateUp ->
101+
onNavigateUp()
102+
}
97103
}
98104
)
99105
}

app/src/main/java/org/schabi/newpipe/ui/screens/ErrorReportScreen.kt

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,19 @@ import org.schabi.newpipe.ui.components.common.ScaffoldWithToolbar
4848
import org.schabi.newpipe.ui.theme.AppTheme
4949
import org.schabi.newpipe.util.Localization
5050

51-
private const val ACTION_EMAIL = "EMAIL"
52-
private const val ACTION_GITHUB = "GITHUB"
51+
sealed interface ErrorReportEvent {
52+
data class ReportViaEmail(val comment: String) : ErrorReportEvent
53+
data class CopyForGitHub(val comment: String) : ErrorReportEvent
54+
data object ReportOnGitHub : ErrorReportEvent
55+
data object ReadPrivacyPolicy : ErrorReportEvent
56+
data class ShareError(val comment: String) : ErrorReportEvent
57+
data object NavigateUp : ErrorReportEvent
58+
}
5359

5460
@Composable
5561
fun ErrorReportScreen(
5662
errorInfo: ErrorInfo,
57-
onBackClick: () -> Unit,
58-
onReportViaEmail: (comment: String) -> Unit,
59-
onCopyForGitHub: (comment: String) -> Unit,
60-
onReportOnGitHub: () -> Unit,
61-
onReadPrivacyPolicy: () -> Unit = {},
62-
onShareError: (comment: String) -> Unit = {}
63+
onEvent: (ErrorReportEvent) -> Unit
6364
) {
6465
val context = LocalContext.current
6566

@@ -68,27 +69,20 @@ fun ErrorReportScreen(
6869
infoLabels = stringResource(R.string.info_labels),
6970
infoValues = buildInfoString(context, errorInfo),
7071
errorDetails = formErrorText(errorInfo.stackTraces),
71-
onBackClick = onBackClick,
72-
onReportViaEmail = onReportViaEmail,
73-
onCopyForGitHub = onCopyForGitHub,
74-
onReportOnGitHub = onReportOnGitHub,
75-
onReadPrivacyPolicy = onReadPrivacyPolicy,
76-
onShareError = onShareError
72+
onEvent = onEvent
7773
)
7874
}
7975

76+
private const val ACTION_EMAIL = "EMAIL"
77+
private const val ACTION_GITHUB = "GITHUB"
78+
8079
@Composable
8180
private fun ErrorReportContent(
8281
errorMessage: String,
8382
infoLabels: String,
8483
infoValues: String,
8584
errorDetails: String,
86-
onBackClick: () -> Unit,
87-
onReportViaEmail: (comment: String) -> Unit,
88-
onCopyForGitHub: (comment: String) -> Unit,
89-
onReportOnGitHub: () -> Unit,
90-
onReadPrivacyPolicy: () -> Unit = {},
91-
onShareError: (comment: String) -> Unit = {}
85+
onEvent: (ErrorReportEvent) -> Unit
9286
) {
9387
var comment by rememberSaveable { mutableStateOf("") }
9488
var privacyDialogAction by rememberSaveable { mutableStateOf<String?>(null) }
@@ -98,20 +92,20 @@ private fun ErrorReportContent(
9892
onAccept = {
9993
privacyDialogAction = null
10094
when (action) {
101-
ACTION_EMAIL -> onReportViaEmail(comment)
102-
ACTION_GITHUB -> onReportOnGitHub()
95+
ACTION_EMAIL -> onEvent(ErrorReportEvent.ReportViaEmail(comment))
96+
ACTION_GITHUB -> onEvent(ErrorReportEvent.ReportOnGitHub)
10397
}
10498
},
10599
onDecline = { privacyDialogAction = null },
106-
onReadPrivacyPolicy = onReadPrivacyPolicy
100+
onReadPrivacyPolicy = { onEvent(ErrorReportEvent.ReadPrivacyPolicy) }
107101
)
108102
}
109103

110104
ScaffoldWithToolbar(
111105
title = stringResource(R.string.error_report_title),
112-
onBackClick = onBackClick,
106+
onBackClick = { onEvent(ErrorReportEvent.NavigateUp) },
113107
actions = {
114-
IconButton(onClick = { onShareError(comment) }) {
108+
IconButton(onClick = { onEvent(ErrorReportEvent.ShareError(comment)) }) {
115109
Icon(
116110
painter = painterResource(R.drawable.ic_share),
117111
contentDescription = stringResource(R.string.share)
@@ -208,7 +202,7 @@ private fun ErrorReportContent(
208202

209203
// Copy for GitHub button
210204
Button(
211-
onClick = { onCopyForGitHub(comment) },
205+
onClick = { onEvent(ErrorReportEvent.CopyForGitHub(comment)) },
212206
modifier = Modifier.fillMaxWidth()
213207
) {
214208
Text(text = stringResource(R.string.copy_for_github))
@@ -261,10 +255,7 @@ private fun ErrorReportScreenPreview() {
261255
infoLabels = "What:\nRequest:\nContent Language:\nContent Country:\nApp Language:\nService:\nTimestamp:\nPackage:\nVersion:\nOS version:",
262256
infoValues = "Requested list\nnone\nen\nUS\nen_US\nYouTube\n2026-04-17T12:00:00Z\norg.schabi.newpipe\n0.27.5\nAndroid 14 - 34",
263257
errorDetails = "-------------------------------------\njava.lang.IllegalArgumentException: ...\n\tat org.schabi.newpipe.SomeClass.method(SomeClass.kt:42)\n-------------------------------------",
264-
onBackClick = {},
265-
onReportViaEmail = {},
266-
onCopyForGitHub = {},
267-
onReportOnGitHub = {}
258+
onEvent = {}
268259
)
269260
}
270261
}

0 commit comments

Comments
 (0)