Re-pin a conversation after undoing archival

Fixes #6968.
This commit is contained in:
Vincent 2024-08-09 00:02:43 +02:00
parent faea93e5ce
commit 606103be8d
No known key found for this signature in database
4 changed files with 19 additions and 5 deletions

View file

@ -52,7 +52,10 @@ function getToast(toastType: ToastType): AnyToast {
case ToastType.ConversationArchived:
return {
toastType: ToastType.ConversationArchived,
parameters: { conversationId: 'some-conversation-id' },
parameters: {
conversationId: 'some-conversation-id',
wasPinned: false,
},
};
case ToastType.ConversationMarkedUnread:
return { toastType: ToastType.ConversationMarkedUnread };

View file

@ -23,7 +23,10 @@ export type PropsType = {
openFileInFolder: (target: string) => unknown;
OS: string;
onShowDebugLog: () => unknown;
onUndoArchive: (conversaetionId: string) => unknown;
onUndoArchive: (
conversationId: string,
options?: { wasPinned?: boolean }
) => unknown;
toast?: AnyToast;
megaphone?: AnyActionableMegaphone;
centerToast?: boolean;
@ -166,7 +169,9 @@ export function renderToast({
toastAction={{
label: i18n('icu:conversationArchivedUndo'),
onClick: () => {
onUndoArchive(String(toast.parameters.conversationId));
onUndoArchive(String(toast.parameters.conversationId), {
wasPinned: toast.parameters.wasPinned,
});
},
}}
>

View file

@ -1201,6 +1201,7 @@ function onArchive(
throw new Error('onArchive: Conversation not found!');
}
const wasPinned = conversation.attributes.isPinned ?? false;
conversation.setArchived(true);
onConversationClosed(conversationId, 'archive')(
@ -1215,13 +1216,15 @@ function onArchive(
toastType: ToastType.ConversationArchived,
parameters: {
conversationId,
wasPinned,
},
},
});
};
}
function onUndoArchive(
conversationId: string
conversationId: string,
options: { wasPinned?: boolean } = {}
): ThunkAction<
void,
RootStateType,
@ -1235,6 +1238,9 @@ function onUndoArchive(
}
conversation.setArchived(false);
if (options.wasPinned) {
conversation.pin();
}
showConversation({
conversationId,
})(dispatch, getState, null);

View file

@ -89,7 +89,7 @@ export type AnyToast =
| { toastType: ToastType.CaptchaSolved }
| {
toastType: ToastType.ConversationArchived;
parameters: { conversationId: string };
parameters: { conversationId: string; wasPinned: boolean };
}
| { toastType: ToastType.ConversationMarkedUnread }
| { toastType: ToastType.ConversationRemoved; parameters: { title: string } }