@@ -43,6 +43,7 @@ import io.agora.flat.ui.compose.FlatDivider
4343import io.agora.flat.ui.compose.FlatHighlightTextButton
4444import io.agora.flat.ui.compose.FlatTextBodyOne
4545import io.agora.flat.ui.compose.FlatTextCaption
46+ import io.agora.flat.ui.compose.StreamCollectDialog
4647import io.agora.flat.ui.compose.UpdateDialog
4748import io.agora.flat.ui.theme.FlatTheme
4849import io.agora.flat.ui.viewmodel.SettingsUiState
@@ -59,6 +60,7 @@ fun SettingsScreen(navController: NavController, viewModel: SettingsViewModel =
5960 SettingsScreen (
6061 state = state,
6162 onDownload = viewModel::downloadApp,
63+ onAgreeStream = viewModel::setAgreeStream,
6264 onBack = { navController.popBackStack() },
6365 onLogout = {
6466 viewModel.logout()
@@ -71,6 +73,7 @@ fun SettingsScreen(navController: NavController, viewModel: SettingsViewModel =
7173fun SettingsScreen (
7274 state : SettingsUiState ,
7375 onDownload : suspend () -> Uri ,
76+ onAgreeStream : (Boolean ) -> Unit ,
7477 onBack : () -> Unit ,
7578 onLogout : () -> Unit
7679) {
@@ -80,16 +83,17 @@ fun SettingsScreen(
8083 onBackPressed = onBack
8184 )
8285 Box (Modifier .weight(1f )) {
83- SettingsList (state, onDownload)
86+ SettingsList (state, onDownload, onAgreeStream )
8487 }
8588 BottomOperateArea (onLogout = onLogout)
8689 }
8790}
8891
8992@Composable
90- private fun SettingsList (state : SettingsUiState , onDownload : suspend () -> Uri ) {
93+ private fun SettingsList (state : SettingsUiState , onDownload : suspend () -> Uri , onAgreeStream : ( Boolean ) -> Unit ) {
9194 val context = LocalContext .current
9295 var showUpdate by remember { mutableStateOf(false ) }
96+ var showCollect by remember { mutableStateOf(false ) }
9397
9498 LazyColumn {
9599 item {
@@ -117,7 +121,6 @@ private fun SettingsList(state: SettingsUiState, onDownload: suspend () -> Uri)
117121 id = R .drawable.ic_settings_dark_light,
118122 tip = stringResource(R .string.title_dark_mode),
119123 onClick = { Navigator .launchDarkModeActivity(context) })
120-
121124 Spacer (Modifier .height(12 .dp))
122125 SettingLabel (stringResource(R .string.privacy))
123126 SettingItem (
@@ -139,6 +142,15 @@ private fun SettingsList(state: SettingsUiState, onDownload: suspend () -> Uri)
139142 id = R .drawable.ic_settings_info_third_party,
140143 tip = stringResource(R .string.info_third_party),
141144 onClick = { Navigator .launchWebViewActivity(context, Constants .URL .Libraries ) })
145+ if (state.isAgreeStream != null ) {
146+ SettingItem (
147+ id = R .drawable.ic_settings_stream_analysis,
148+ tip = stringResource(R .string.stream_data_analysis),
149+ desc = if (state.isAgreeStream) stringResource(R .string.setting_on) else stringResource(R .string.setting_off),
150+ onClick = { showCollect = true }
151+ )
152+ SettingItemDivider ()
153+ }
142154
143155 Spacer (Modifier .height(12 .dp))
144156 SettingLabel (stringResource(R .string.more))
@@ -187,6 +199,22 @@ private fun SettingsList(state: SettingsUiState, onDownload: suspend () -> Uri)
187199 }
188200 )
189201 }
202+
203+ if (showCollect) {
204+ StreamCollectDialog (
205+ onOpen = {
206+ onAgreeStream(true )
207+ showCollect = false
208+ },
209+ onClose = {
210+ onAgreeStream(false )
211+ showCollect = false
212+ },
213+ onCancel = {
214+ showCollect = false
215+ }
216+ )
217+ }
190218}
191219
192220@Composable
@@ -292,6 +320,6 @@ internal fun SettingItemDivider() {
292320fun UserSettingActivityPreview () {
293321 val state = SettingsUiState ()
294322 FlatColumnPage {
295- SettingsScreen (state, { Uri .EMPTY }, {}, {})
323+ SettingsScreen (state, { Uri .EMPTY }, {}, {}, {} )
296324 }
297325}
0 commit comments