@@ -48,18 +48,19 @@ import org.schabi.newpipe.ui.components.common.ScaffoldWithToolbar
4848import org.schabi.newpipe.ui.theme.AppTheme
4949import 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
5561fun 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
8180private 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:\n Request:\n Content Language:\n Content Country:\n App Language:\n Service:\n Timestamp:\n Package:\n Version:\n OS version:" ,
262256 infoValues = " Requested list\n none\n en\n US\n en_US\n YouTube\n 2026-04-17T12:00:00Z\n org.schabi.newpipe\n 0.27.5\n Android 14 - 34" ,
263257 errorDetails = " -------------------------------------\n java.lang.IllegalArgumentException: ...\n\t at 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