Rebase on develop and refactoring
This commit is contained in:
parent
5ba290ae35
commit
a86ec1a8fa
10 changed files with 37 additions and 26 deletions
|
|
@ -21,4 +21,5 @@ import io.element.android.features.analytics.api.AnalyticsOptInEvents
|
||||||
data class AnalyticsPreferencesState(
|
data class AnalyticsPreferencesState(
|
||||||
val applicationName: String,
|
val applicationName: String,
|
||||||
val isEnabled: Boolean,
|
val isEnabled: Boolean,
|
||||||
|
val eventSink: (AnalyticsOptInEvents) -> Unit,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ import io.element.android.features.preferences.api.PreferencesEntryPoint
|
||||||
import io.element.android.features.preferences.impl.about.AboutNode
|
import io.element.android.features.preferences.impl.about.AboutNode
|
||||||
import io.element.android.features.preferences.impl.analytics.AnalyticsSettingsNode
|
import io.element.android.features.preferences.impl.analytics.AnalyticsSettingsNode
|
||||||
import io.element.android.features.preferences.impl.developer.DeveloperSettingsNode
|
import io.element.android.features.preferences.impl.developer.DeveloperSettingsNode
|
||||||
import io.element.android.features.preferences.impl.notifications.NotificationsSettingsNode
|
import io.element.android.features.preferences.impl.notifications.NotificationSettingsNode
|
||||||
import io.element.android.features.preferences.impl.root.PreferencesRootNode
|
import io.element.android.features.preferences.impl.root.PreferencesRootNode
|
||||||
import io.element.android.libraries.architecture.BackstackNode
|
import io.element.android.libraries.architecture.BackstackNode
|
||||||
import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler
|
import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler
|
||||||
|
|
@ -68,7 +68,7 @@ class PreferencesFlowNode @AssistedInject constructor(
|
||||||
object About : NavTarget
|
object About : NavTarget
|
||||||
|
|
||||||
@Parcelize
|
@Parcelize
|
||||||
object NotificationsSettings : NavTarget
|
object NotificationSettings : NavTarget
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {
|
override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {
|
||||||
|
|
@ -95,8 +95,8 @@ class PreferencesFlowNode @AssistedInject constructor(
|
||||||
backstack.push(NavTarget.DeveloperSettings)
|
backstack.push(NavTarget.DeveloperSettings)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOpenNotificationsSettings() {
|
override fun onOpenNotificationSettings() {
|
||||||
backstack.push(NavTarget.NotificationsSettings)
|
backstack.push(NavTarget.NotificationSettings)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
createNode<PreferencesRootNode>(buildContext, plugins = listOf(callback))
|
createNode<PreferencesRootNode>(buildContext, plugins = listOf(callback))
|
||||||
|
|
@ -110,8 +110,8 @@ class PreferencesFlowNode @AssistedInject constructor(
|
||||||
NavTarget.AnalyticsSettings -> {
|
NavTarget.AnalyticsSettings -> {
|
||||||
createNode<AnalyticsSettingsNode>(buildContext)
|
createNode<AnalyticsSettingsNode>(buildContext)
|
||||||
}
|
}
|
||||||
NavTarget.NotificationsSettings -> {
|
NavTarget.NotificationSettings -> {
|
||||||
createNode<NotificationsSettingsNode>(buildContext)
|
createNode<NotificationSettingsNode>(buildContext)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
package io.element.android.features.preferences.impl.notifications
|
package io.element.android.features.preferences.impl.notifications
|
||||||
|
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
import com.bumble.appyx.core.modality.BuildContext
|
import com.bumble.appyx.core.modality.BuildContext
|
||||||
import com.bumble.appyx.core.node.Node
|
import com.bumble.appyx.core.node.Node
|
||||||
import com.bumble.appyx.core.plugin.Plugin
|
import com.bumble.appyx.core.plugin.Plugin
|
||||||
|
|
@ -25,10 +27,18 @@ import io.element.android.anvilannotations.ContributesNode
|
||||||
import io.element.android.libraries.di.SessionScope
|
import io.element.android.libraries.di.SessionScope
|
||||||
|
|
||||||
@ContributesNode(SessionScope::class)
|
@ContributesNode(SessionScope::class)
|
||||||
class NotificationsSettingsNode @AssistedInject constructor(
|
class NotificationSettingsNode @AssistedInject constructor(
|
||||||
@Assisted buildContext: BuildContext,
|
@Assisted buildContext: BuildContext,
|
||||||
@Assisted plugins: List<Plugin>,
|
@Assisted plugins: List<Plugin>,
|
||||||
private val presenter: NotificationsSettingsPresenter,
|
private val presenter: NotificationSettingsPresenter,
|
||||||
) : Node(buildContext, plugins = plugins) {
|
) : Node(buildContext, plugins = plugins) {
|
||||||
|
@Composable
|
||||||
|
override fun View(modifier: Modifier) {
|
||||||
|
val state = presenter.present()
|
||||||
|
NotificationSettingsView(
|
||||||
|
state = state,
|
||||||
|
onBackPressed = ::navigateUp,
|
||||||
|
modifier = modifier
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -20,11 +20,11 @@ import androidx.compose.runtime.Composable
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class NotificationsSettingsPresenter @Inject constructor() : Presenter<NotificationsSettingsState> {
|
class NotificationSettingsPresenter @Inject constructor() : Presenter<NotificationSettingsState> {
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): NotificationsSettingsState {
|
override fun present(): NotificationSettingsState {
|
||||||
return NotificationsSettingsState(
|
return NotificationSettingsState(
|
||||||
isEnabled = true,
|
isEnabled = true,
|
||||||
hasSystemPermission = true,
|
hasSystemPermission = true,
|
||||||
notifyMeOnRoom = true,
|
notifyMeOnRoom = true,
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
package io.element.android.features.preferences.impl.notifications
|
package io.element.android.features.preferences.impl.notifications
|
||||||
|
|
||||||
data class NotificationsSettingsState(
|
data class NotificationSettingsState(
|
||||||
val hasSystemPermission: Boolean,
|
val hasSystemPermission: Boolean,
|
||||||
val isEnabled: Boolean,
|
val isEnabled: Boolean,
|
||||||
val notifyMeOnRoom: Boolean,
|
val notifyMeOnRoom: Boolean,
|
||||||
|
|
@ -18,14 +18,14 @@ package io.element.android.features.preferences.impl.notifications
|
||||||
|
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
|
|
||||||
open class NotificationsSettingsStateProvider : PreviewParameterProvider<NotificationsSettingsState> {
|
open class NotificationSettingsStateProvider : PreviewParameterProvider<NotificationSettingsState> {
|
||||||
override val values: Sequence<NotificationsSettingsState>
|
override val values: Sequence<NotificationSettingsState>
|
||||||
get() = sequenceOf(
|
get() = sequenceOf(
|
||||||
aNotificationsSettingsState(),
|
aNotificationSettingsState(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun aNotificationsSettingsState() = NotificationsSettingsState(
|
fun aNotificationSettingsState() = NotificationSettingsState(
|
||||||
isEnabled = true,
|
isEnabled = true,
|
||||||
hasSystemPermission = false,
|
hasSystemPermission = false,
|
||||||
notifyMeOnRoom = true,
|
notifyMeOnRoom = true,
|
||||||
|
|
@ -33,8 +33,8 @@ import io.element.android.libraries.designsystem.preview.ElementPreviewLight
|
||||||
import io.element.android.libraries.ui.strings.CommonStrings
|
import io.element.android.libraries.ui.strings.CommonStrings
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun NotificationsSettingsView(
|
fun NotificationSettingsView(
|
||||||
state: NotificationsSettingsState,
|
state: NotificationSettingsState,
|
||||||
onBackPressed: () -> Unit,
|
onBackPressed: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
|
|
@ -100,17 +100,17 @@ fun NotificationsSettingsView(
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
internal fun AboutViewLightPreview(@PreviewParameter(NotificationsSettingsStateProvider::class) state: NotificationsSettingsState) =
|
internal fun AboutViewLightPreview(@PreviewParameter(NotificationSettingsStateProvider::class) state: NotificationSettingsState) =
|
||||||
ElementPreviewLight { ContentToPreview(state) }
|
ElementPreviewLight { ContentToPreview(state) }
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
internal fun AboutViewDarkPreview(@PreviewParameter(NotificationsSettingsStateProvider::class) state: NotificationsSettingsState) =
|
internal fun AboutViewDarkPreview(@PreviewParameter(NotificationSettingsStateProvider::class) state: NotificationSettingsState) =
|
||||||
ElementPreviewDark { ContentToPreview(state) }
|
ElementPreviewDark { ContentToPreview(state) }
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun ContentToPreview(state: NotificationsSettingsState) {
|
private fun ContentToPreview(state: NotificationSettingsState) {
|
||||||
NotificationsSettingsView(
|
NotificationSettingsView(
|
||||||
state = state,
|
state = state,
|
||||||
onBackPressed = {},
|
onBackPressed = {},
|
||||||
)
|
)
|
||||||
|
|
@ -44,7 +44,7 @@ class PreferencesRootNode @AssistedInject constructor(
|
||||||
fun onOpenAnalytics()
|
fun onOpenAnalytics()
|
||||||
fun onOpenAbout()
|
fun onOpenAbout()
|
||||||
fun onOpenDeveloperSettings()
|
fun onOpenDeveloperSettings()
|
||||||
fun onOpenNotificationsSettings()
|
fun onOpenNotificationSettings()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onOpenBugReport() {
|
private fun onOpenBugReport() {
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ fun PreferencesRootView(
|
||||||
PreferenceText(
|
PreferenceText(
|
||||||
title = stringResource(id = CommonStrings.screen_notification_settings_title),
|
title = stringResource(id = CommonStrings.screen_notification_settings_title),
|
||||||
icon = Icons.Outlined.Notifications,
|
icon = Icons.Outlined.Notifications,
|
||||||
onClick = onOpenNotificationsSettings,
|
onClick = onOpenNotificationSettings,
|
||||||
)
|
)
|
||||||
PreferenceText(
|
PreferenceText(
|
||||||
title = stringResource(id = CommonStrings.action_report_bug),
|
title = stringResource(id = CommonStrings.action_report_bug),
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,8 @@ package io.element.android.features.preferences.impl.tasks
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.squareup.anvil.annotations.ContributesBinding
|
import com.squareup.anvil.annotations.ContributesBinding
|
||||||
import io.element.android.libraries.androidutils.filesize.FileSizeFormatter
|
|
||||||
import io.element.android.libraries.androidutils.file.getSizeOfFiles
|
import io.element.android.libraries.androidutils.file.getSizeOfFiles
|
||||||
|
import io.element.android.libraries.androidutils.filesize.FileSizeFormatter
|
||||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.di.ApplicationContext
|
import io.element.android.libraries.di.ApplicationContext
|
||||||
import io.element.android.libraries.di.SessionScope
|
import io.element.android.libraries.di.SessionScope
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue