Browse Source

Always use the `latest...` fix.

pull/2264/head
Benoit Marty 8 months ago committed by Benoit Marty
parent
commit
eb51b49aef
  1. 7
      features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenView.kt
  2. 7
      features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListView.kt
  3. 9
      features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerView.kt
  4. 10
      features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/ui/LogoutActionDialog.kt
  5. 9
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt
  6. 7
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewView.kt
  7. 7
      features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/detection/RageshakeDetectionView.kt
  8. 7
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncActionView.kt
  9. 5
      libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/SoftKeyboardEffect.kt

7
features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/MigrationScreenView.kt

@ -18,6 +18,8 @@ package io.element.android.features.ftue.impl.migration @@ -18,6 +18,8 @@ package io.element.android.features.ftue.impl.migration
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import io.element.android.features.ftue.impl.R
@ -32,8 +34,9 @@ fun MigrationScreenView( @@ -32,8 +34,9 @@ fun MigrationScreenView(
modifier: Modifier = Modifier,
) {
if (migrationState.isMigrating.not()) {
LaunchedEffect(onMigrationFinished) {
onMigrationFinished()
val latestOnMigrationFinished by rememberUpdatedState(onMigrationFinished)
LaunchedEffect(Unit) {
latestOnMigrationFinished()
}
}
SunsetPage(

7
features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListView.kt

@ -28,6 +28,8 @@ import androidx.compose.material3.ExperimentalMaterial3Api @@ -28,6 +28,8 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
@ -57,8 +59,9 @@ fun InviteListView( @@ -57,8 +59,9 @@ fun InviteListView(
modifier: Modifier = Modifier,
) {
if (state.acceptedAction is AsyncData.Success) {
LaunchedEffect(state.acceptedAction, onInviteAccepted) {
onInviteAccepted(state.acceptedAction.data)
val latestOnInviteAccepted by rememberUpdatedState(onInviteAccepted)
LaunchedEffect(state.acceptedAction) {
latestOnInviteAccepted(state.acceptedAction.data)
}
}

9
features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerView.kt

@ -18,6 +18,8 @@ package io.element.android.features.login.impl.changeserver @@ -18,6 +18,8 @@ package io.element.android.features.login.impl.changeserver
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.PreviewParameter
import io.element.android.features.login.impl.dialogs.SlidingSyncNotSupportedDialog
@ -63,8 +65,11 @@ fun ChangeServerView( @@ -63,8 +65,11 @@ fun ChangeServerView(
}
}
is AsyncData.Loading -> ProgressDialog()
is AsyncData.Success -> LaunchedEffect(state.changeServerAction, onDone) {
onDone()
is AsyncData.Success -> {
val latestOnDone by rememberUpdatedState(onDone)
LaunchedEffect(state.changeServerAction) {
latestOnDone()
}
}
AsyncData.Uninitialized -> Unit
}

10
features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/ui/LogoutActionDialog.kt

@ -18,6 +18,8 @@ package io.element.android.features.logout.impl.ui @@ -18,6 +18,8 @@ package io.element.android.features.logout.impl.ui
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.res.stringResource
import io.element.android.features.logout.impl.R
import io.element.android.libraries.architecture.AsyncAction
@ -52,9 +54,11 @@ fun LogoutActionDialog( @@ -52,9 +54,11 @@ fun LogoutActionDialog(
onRetry = onForceLogoutClicked,
onDismiss = onDismissError,
)
is AsyncAction.Success ->
LaunchedEffect(state, onSuccessLogout) {
onSuccessLogout(state.data)
is AsyncAction.Success -> {
val latestOnSuccessLogout by rememberUpdatedState(onSuccessLogout)
LaunchedEffect(state) {
latestOnSuccessLogout(state.data)
}
}
}
}

9
features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt

@ -41,8 +41,10 @@ import androidx.compose.material3.MaterialTheme @@ -41,8 +41,10 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
@ -294,8 +296,11 @@ private fun AttachmentStateView( @@ -294,8 +296,11 @@ private fun AttachmentStateView(
) {
when (state) {
AttachmentsState.None -> Unit
is AttachmentsState.Previewing -> LaunchedEffect(state, onPreviewAttachments) {
onPreviewAttachments(state.attachments)
is AttachmentsState.Previewing -> {
val latestOnPreviewAttachments by rememberUpdatedState(onPreviewAttachments)
LaunchedEffect(state) {
latestOnPreviewAttachments(state.attachments)
}
}
is AttachmentsState.Sending -> {
ProgressDialog(

7
features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewView.kt

@ -24,6 +24,8 @@ import androidx.compose.foundation.layout.fillMaxWidth @@ -24,6 +24,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
@ -57,8 +59,9 @@ fun AttachmentsPreviewView( @@ -57,8 +59,9 @@ fun AttachmentsPreviewView(
}
if (state.sendActionState is SendActionState.Done) {
LaunchedEffect(state.sendActionState, onDismiss) {
onDismiss()
val latestOnDismiss by rememberUpdatedState(onDismiss)
LaunchedEffect(state.sendActionState) {
latestOnDismiss()
}
}

7
features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/detection/RageshakeDetectionView.kt

@ -18,6 +18,8 @@ package io.element.android.features.rageshake.api.detection @@ -18,6 +18,8 @@ package io.element.android.features.rageshake.api.detection
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.stringResource
@ -73,9 +75,10 @@ private fun TakeScreenshot( @@ -73,9 +75,10 @@ private fun TakeScreenshot(
onScreenshotTaken: (ImageResult) -> Unit
) {
val view = LocalView.current
LaunchedEffect(onScreenshotTaken) {
val latestOnScreenshotTaken by rememberUpdatedState(onScreenshotTaken)
LaunchedEffect(Unit) {
view.screenshot {
onScreenshotTaken(it)
latestOnScreenshotTaken(it)
}
}
}

7
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncActionView.kt

@ -18,6 +18,8 @@ package io.element.android.libraries.designsystem.components.async @@ -18,6 +18,8 @@ package io.element.android.libraries.designsystem.components.async
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.tooling.preview.PreviewParameter
import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.designsystem.components.ProgressDialog
@ -67,8 +69,9 @@ fun <T> AsyncActionView( @@ -67,8 +69,9 @@ fun <T> AsyncActionView(
}
}
is AsyncAction.Success -> {
LaunchedEffect(async, onSuccess) {
onSuccess(async.data)
val latestOnSuccess by rememberUpdatedState(onSuccess)
LaunchedEffect(async) {
latestOnSuccess(async.data)
}
}
}

5
libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/SoftKeyboardEffect.kt

@ -43,8 +43,9 @@ internal fun <T> SoftKeyboardEffect( @@ -43,8 +43,9 @@ internal fun <T> SoftKeyboardEffect(
) {
val view = LocalView.current
val latestOnRequestFocus by rememberUpdatedState(onRequestFocus)
LaunchedEffect(key, predicate) {
if (predicate(key)) {
val latestPredicate by rememberUpdatedState(predicate)
LaunchedEffect(key) {
if (latestPredicate(key)) {
// Await window focus in case returning from a dialog
view.awaitWindowFocus()

Loading…
Cancel
Save