change (accept invite) : updates the error title/content dialog for accept/decline actions

This commit is contained in:
ganfra 2025-06-20 16:40:52 +02:00
parent f710b28dc5
commit cee279fd44
3 changed files with 38 additions and 6 deletions

View file

@ -1,14 +1,18 @@
/* /*
* Copyright 2024 New Vector Ltd. * Copyright 2025 New Vector Ltd.
* *
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
* Please see LICENSE files in the repository root for full details. * Please see LICENSE files in the repository root for full details.
*/ */
package io.element.android.features.invite.api.acceptdecline package io.element.android.features.invite.impl.acceptdecline
import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.features.invite.api.InviteData import io.element.android.features.invite.api.InviteData
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteState
import io.element.android.features.invite.api.acceptdecline.ConfirmingDeclineInvite
import io.element.android.features.invite.impl.AcceptInvite
import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
@ -18,26 +22,37 @@ open class AcceptDeclineInviteStateProvider : PreviewParameterProvider<AcceptDec
anAcceptDeclineInviteState(), anAcceptDeclineInviteState(),
anAcceptDeclineInviteState( anAcceptDeclineInviteState(
declineAction = ConfirmingDeclineInvite( declineAction = ConfirmingDeclineInvite(
InviteData(roomId = RoomId("!room:matrix.org"), isDm = true, roomName = "Alice"), InviteData(
roomId = RoomId("!room:matrix.org"),
isDm = true,
roomName = "Alice"
),
blockUser = false, blockUser = false,
), ),
), ),
anAcceptDeclineInviteState( anAcceptDeclineInviteState(
declineAction = ConfirmingDeclineInvite( declineAction = ConfirmingDeclineInvite(
InviteData(roomId = RoomId("!room:matrix.org"), isDm = true, roomName = "Alice"), InviteData(
roomId = RoomId("!room:matrix.org"),
isDm = true,
roomName = "Alice"
),
blockUser = true, blockUser = true,
), ),
), ),
anAcceptDeclineInviteState( anAcceptDeclineInviteState(
acceptAction = AsyncAction.Failure(RuntimeException("Error while accepting invite")), acceptAction = AsyncAction.Failure(RuntimeException("Error while accepting invite")),
), ),
anAcceptDeclineInviteState(
acceptAction = AsyncAction.Failure(AcceptInvite.Failures.InvalidInvite),
),
anAcceptDeclineInviteState( anAcceptDeclineInviteState(
declineAction = AsyncAction.Failure(RuntimeException("Error while declining invite")), declineAction = AsyncAction.Failure(RuntimeException("Error while declining invite")),
), ),
) )
} }
fun anAcceptDeclineInviteState( private fun anAcceptDeclineInviteState(
acceptAction: AsyncAction<RoomId> = AsyncAction.Uninitialized, acceptAction: AsyncAction<RoomId> = AsyncAction.Uninitialized,
declineAction: AsyncAction<RoomId> = AsyncAction.Uninitialized, declineAction: AsyncAction<RoomId> = AsyncAction.Uninitialized,
eventSink: (AcceptDeclineInviteEvents) -> Unit = {} eventSink: (AcceptDeclineInviteEvents) -> Unit = {}

View file

@ -15,8 +15,8 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import io.element.android.features.invite.api.InviteData import io.element.android.features.invite.api.InviteData
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteState import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteState
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteStateProvider
import io.element.android.features.invite.api.acceptdecline.ConfirmingDeclineInvite import io.element.android.features.invite.api.acceptdecline.ConfirmingDeclineInvite
import io.element.android.features.invite.impl.AcceptInvite
import io.element.android.features.invite.impl.R import io.element.android.features.invite.impl.R
import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.async.AsyncActionView
import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog
@ -39,6 +39,16 @@ fun AcceptDeclineInviteView(
onErrorDismiss = { onErrorDismiss = {
state.eventSink(InternalAcceptDeclineInviteEvents.DismissAcceptError) state.eventSink(InternalAcceptDeclineInviteEvents.DismissAcceptError)
}, },
errorTitle = {
stringResource(CommonStrings.common_something_went_wrong)
},
errorMessage = { error ->
if (error is AcceptInvite.Failures.InvalidInvite) {
stringResource(CommonStrings.error_invalid_invite)
} else {
stringResource(CommonStrings.error_network_or_server_issue)
}
}
) )
AsyncActionView( AsyncActionView(
async = state.declineAction, async = state.declineAction,
@ -46,6 +56,12 @@ fun AcceptDeclineInviteView(
onErrorDismiss = { onErrorDismiss = {
state.eventSink(InternalAcceptDeclineInviteEvents.DismissDeclineError) state.eventSink(InternalAcceptDeclineInviteEvents.DismissDeclineError)
}, },
errorTitle = {
stringResource(CommonStrings.common_something_went_wrong)
},
errorMessage = {
stringResource(CommonStrings.error_network_or_server_issue)
},
confirmationDialog = { confirming -> confirmationDialog = { confirming ->
// Note: confirming will always be of type ConfirmingDeclineInvite. // Note: confirming will always be of type ConfirmingDeclineInvite.
if (confirming is ConfirmingDeclineInvite) { if (confirming is ConfirmingDeclineInvite) {

View file

@ -333,6 +333,7 @@ Are you sure you want to continue?"</string>
<string name="error_failed_loading_messages">"Failed loading messages"</string> <string name="error_failed_loading_messages">"Failed loading messages"</string>
<string name="error_failed_locating_user">"%1$s could not access your location. Please try again later."</string> <string name="error_failed_locating_user">"%1$s could not access your location. Please try again later."</string>
<string name="error_failed_uploading_voice_message">"Failed to upload your voice message."</string> <string name="error_failed_uploading_voice_message">"Failed to upload your voice message."</string>
<string name="error_invalid_invite">"The room no longer exists or the invite is no longer valid."</string>
<string name="error_message_not_found">"Message not found"</string> <string name="error_message_not_found">"Message not found"</string>
<string name="error_missing_location_auth_android">"%1$s does not have permission to access your location. You can enable access in Settings."</string> <string name="error_missing_location_auth_android">"%1$s does not have permission to access your location. You can enable access in Settings."</string>
<string name="error_missing_location_rationale_android">"%1$s does not have permission to access your location. Enable access below."</string> <string name="error_missing_location_rationale_android">"%1$s does not have permission to access your location. Enable access below."</string>