Add shortcuts for forward/delete selected/targeted messages
This commit is contained in:
parent
dd16be13b0
commit
d0f17a1398
9 changed files with 106 additions and 35 deletions
|
@ -29,6 +29,9 @@ import type { ShowToastActionType } from './toast';
|
|||
|
||||
// State
|
||||
|
||||
export type ConfirmDeleteForMeModalProps = ReadonlyDeep<{
|
||||
count: number;
|
||||
}>;
|
||||
export type ForwardMessagePropsType = ReadonlyDeep<
|
||||
Omit<PropsForMessage, 'renderingContext' | 'menu' | 'contextMenu'>
|
||||
>;
|
||||
|
@ -60,6 +63,7 @@ export type GlobalModalsStateType = ReadonlyDeep<{
|
|||
};
|
||||
forwardMessagesProps?: ForwardMessagesPropsType;
|
||||
gv2MigrationProps?: MigrateToGV2PropsType;
|
||||
hasConfirmationModal: boolean;
|
||||
isProfileEditorVisible: boolean;
|
||||
isSignalConnectionsVisible: boolean;
|
||||
isShortcutGuideModalVisible: boolean;
|
||||
|
@ -105,6 +109,7 @@ const SHOW_ERROR_MODAL = 'globalModals/SHOW_ERROR_MODAL';
|
|||
const CLOSE_SHORTCUT_GUIDE_MODAL = 'globalModals/CLOSE_SHORTCUT_GUIDE_MODAL';
|
||||
const SHOW_SHORTCUT_GUIDE_MODAL = 'globalModals/SHOW_SHORTCUT_GUIDE_MODAL';
|
||||
const SHOW_AUTH_ART_CREATOR = 'globalModals/SHOW_AUTH_ART_CREATOR';
|
||||
const TOGGLE_CONFIRMATION_MODAL = 'globalModals/TOGGLE_CONFIRMATION_MODAL';
|
||||
const CANCEL_AUTH_ART_CREATOR = 'globalModals/CANCEL_AUTH_ART_CREATOR';
|
||||
const CONFIRM_AUTH_ART_CREATOR_PENDING =
|
||||
'globalModals/CONFIRM_AUTH_ART_CREATOR_PENDING';
|
||||
|
@ -180,6 +185,11 @@ type ToggleSignalConnectionsModalActionType = ReadonlyDeep<{
|
|||
type: typeof TOGGLE_SIGNAL_CONNECTIONS_MODAL;
|
||||
}>;
|
||||
|
||||
type ToggleConfirmationModalActionType = ReadonlyDeep<{
|
||||
type: typeof TOGGLE_CONFIRMATION_MODAL;
|
||||
payload: boolean;
|
||||
}>;
|
||||
|
||||
type ShowStoriesSettingsActionType = ReadonlyDeep<{
|
||||
type: typeof SHOW_STORIES_SETTINGS;
|
||||
}>;
|
||||
|
@ -283,6 +293,7 @@ export type GlobalModalsActionType = ReadonlyDeep<
|
|||
| ToggleSafetyNumberModalActionType
|
||||
| ToggleAddUserToAnotherGroupModalActionType
|
||||
| ToggleSignalConnectionsModalActionType
|
||||
| ToggleConfirmationModalActionType
|
||||
>;
|
||||
|
||||
// Action Creators
|
||||
|
@ -304,6 +315,7 @@ export const actions = {
|
|||
toggleSafetyNumberModal,
|
||||
toggleAddUserToAnotherGroupModal,
|
||||
toggleSignalConnectionsModal,
|
||||
toggleConfirmationModal,
|
||||
showGV2MigrationDialog,
|
||||
closeGV2MigrationDialog,
|
||||
showStickerPackPreview,
|
||||
|
@ -500,6 +512,15 @@ function toggleSignalConnectionsModal(): ToggleSignalConnectionsModalActionType
|
|||
};
|
||||
}
|
||||
|
||||
function toggleConfirmationModal(
|
||||
isOpen: boolean
|
||||
): ToggleConfirmationModalActionType {
|
||||
return {
|
||||
type: TOGGLE_CONFIRMATION_MODAL,
|
||||
payload: isOpen,
|
||||
};
|
||||
}
|
||||
|
||||
function showBlockingSafetyNumberChangeDialog(
|
||||
untrustedByConversation: RecipientsByConversation,
|
||||
explodedPromise: ExplodePromiseResultType<boolean>,
|
||||
|
@ -663,6 +684,7 @@ export function confirmAuthorizeArtCreator(): ThunkAction<
|
|||
|
||||
export function getEmptyState(): GlobalModalsStateType {
|
||||
return {
|
||||
hasConfirmationModal: false,
|
||||
isProfileEditorVisible: false,
|
||||
isShortcutGuideModalVisible: false,
|
||||
isSignalConnectionsVisible: false,
|
||||
|
@ -776,6 +798,13 @@ export function reducer(
|
|||
};
|
||||
}
|
||||
|
||||
if (action.type === TOGGLE_CONFIRMATION_MODAL) {
|
||||
return {
|
||||
...state,
|
||||
hasConfirmationModal: action.payload,
|
||||
};
|
||||
}
|
||||
|
||||
if (action.type === SHOW_SEND_ANYWAY_DIALOG) {
|
||||
const { promiseUuid, source } = action.payload;
|
||||
|
||||
|
|
|
@ -48,13 +48,21 @@ export function SmartConversationView(): JSX.Element {
|
|||
const { processAttachments } = useComposerActions();
|
||||
const i18n = useSelector(getIntl);
|
||||
|
||||
const isForwardModalOpen = useSelector((state: StateType) => {
|
||||
return state.globalModals.forwardMessagesProps != null;
|
||||
const hasOpenModal = useSelector((state: StateType) => {
|
||||
return (
|
||||
state.globalModals.forwardMessagesProps != null ||
|
||||
state.globalModals.hasConfirmationModal
|
||||
);
|
||||
});
|
||||
|
||||
return (
|
||||
<ConversationView
|
||||
conversationId={conversationId}
|
||||
hasOpenModal={hasOpenModal}
|
||||
isSelectMode={isSelectMode}
|
||||
onExitSelectMode={() => {
|
||||
toggleSelectMode(false);
|
||||
}}
|
||||
processAttachments={processAttachments}
|
||||
renderCompositionArea={() => <SmartCompositionArea id={conversationId} />}
|
||||
renderConversationHeader={() => (
|
||||
|
@ -179,11 +187,6 @@ export function SmartConversationView(): JSX.Element {
|
|||
|
||||
return undefined;
|
||||
}}
|
||||
isSelectMode={isSelectMode}
|
||||
isForwardModalOpen={isForwardModalOpen}
|
||||
onExitSelectMode={() => {
|
||||
toggleSelectMode(false);
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue