Remove edit message/formatting onboarding

Co-authored-by: Scott Nonnenberg <scott@signal.org>
This commit is contained in:
Fedor Indutny 2024-04-29 20:05:44 +02:00 committed by GitHub
parent d64f77627c
commit bef5fd6b34
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 33 additions and 319 deletions

View file

@ -3096,19 +3096,19 @@
}, },
"icu:SendEdit--dialog--title2": { "icu:SendEdit--dialog--title2": {
"messageformat": "Edit Message", "messageformat": "Edit Message",
"description": "Title of the modal shown before sending your first edit message" "description": "(Deleted 2024/04/29) Title of the modal shown before sending your first edit message"
}, },
"icu:SendEdit--dialog--body2": { "icu:SendEdit--dialog--body2": {
"messageformat": "If you edit a message, it will only be visible to people who are on the latest versions of Signal. They will be able to see you edited a message.", "messageformat": "If you edit a message, it will only be visible to people who are on the latest versions of Signal. They will be able to see you edited a message.",
"description": "Body text of the modal shown before sending your first edit message" "description": "(Deleted 2024/04/29) Body text of the modal shown before sending your first edit message"
}, },
"icu:SendFormatting--dialog--title": { "icu:SendFormatting--dialog--title": {
"messageformat": "Sending formatted text", "messageformat": "Sending formatted text",
"description": "Title of the modal shown before sending your first formatting message" "description": "(Deleted 2024/04/29) Title of the modal shown before sending your first formatting message"
}, },
"icu:SendFormatting--dialog--body": { "icu:SendFormatting--dialog--body": {
"messageformat": "Some people may be using a version of Signal that doesnt support formatted text. They will not be able to see the formatting changes youve made to your message.", "messageformat": "Some people may be using a version of Signal that doesnt support formatted text. They will not be able to see the formatting changes youve made to your message.",
"description": "Body text of the modal shown before sending your first formatting message" "description": "(Deleted 2024/04/29) Body text of the modal shown before sending your first formatting message"
}, },
"icu:AuthArtCreator--dialog--message": { "icu:AuthArtCreator--dialog--message": {
"messageformat": "Would you like to open Signal Sticker Pack Creator?", "messageformat": "Would you like to open Signal Sticker Pack Creator?",

View file

@ -867,17 +867,6 @@ export async function startApp(): Promise<void> {
}); });
} }
if (window.isBeforeVersion(lastVersion, '6.22.0-alpha')) {
const formattingWarningShown = window.storage.get(
'formattingWarningShown',
false
);
log.info(
`Clearing formattingWarningShown. Previous value was ${formattingWarningShown}`
);
await window.storage.put('formattingWarningShown', false);
}
if (window.isBeforeVersion(lastVersion, 'v1.29.2-beta.1')) { if (window.isBeforeVersion(lastVersion, 'v1.29.2-beta.1')) {
// Stickers flags // Stickers flags
await Promise.all([ await Promise.all([
@ -946,6 +935,11 @@ export async function startApp(): Promise<void> {
await window.storage.remove('lastHeartbeat'); await window.storage.remove('lastHeartbeat');
await window.storage.remove('lastStartup'); await window.storage.remove('lastStartup');
} }
if (window.isBeforeVersion(lastVersion, 'v7.8.0-beta.1')) {
await window.storage.remove('sendEditWarningShown');
await window.storage.remove('formattingWarningShown');
}
} }
setAppLoadingScreenMessage( setAppLoadingScreenMessage(

View file

@ -1,38 +0,0 @@
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import React from 'react';
import type { LocalizerType } from '../types/Util';
import { ConfirmationDialog } from './ConfirmationDialog';
type PropsType = {
i18n: LocalizerType;
onSendAnyway: () => void;
onCancel: () => void;
};
export function FormattingWarningModal({
i18n,
onSendAnyway,
onCancel,
}: PropsType): JSX.Element | null {
return (
<ConfirmationDialog
actions={[
{
action: onSendAnyway,
autoClose: true,
style: 'affirmative',
text: i18n('icu:sendAnyway'),
},
]}
dialogName="FormattingWarningModal"
i18n={i18n}
onCancel={onCancel}
onClose={onCancel}
title={i18n('icu:SendFormatting--dialog--title')}
>
{i18n('icu:SendFormatting--dialog--body')}
</ConfirmationDialog>
);
}

View file

@ -8,22 +8,17 @@ import type {
DeleteMessagesPropsType, DeleteMessagesPropsType,
EditHistoryMessagesType, EditHistoryMessagesType,
EditNicknameAndNoteModalPropsType, EditNicknameAndNoteModalPropsType,
FormattingWarningDataType,
ForwardMessagesPropsType, ForwardMessagesPropsType,
MessageRequestActionsConfirmationPropsType, MessageRequestActionsConfirmationPropsType,
SafetyNumberChangedBlockingDataType, SafetyNumberChangedBlockingDataType,
SendEditWarningDataType,
UserNotFoundModalStateType, UserNotFoundModalStateType,
} from '../state/ducks/globalModals'; } from '../state/ducks/globalModals';
import type { LocalizerType, ThemeType } from '../types/Util'; import type { LocalizerType, ThemeType } from '../types/Util';
import { UsernameOnboardingState } from '../types/globalModals'; import { UsernameOnboardingState } from '../types/globalModals';
import type { ExplodePromiseResultType } from '../util/explodePromise';
import { missingCaseError } from '../util/missingCaseError'; import { missingCaseError } from '../util/missingCaseError';
import { ButtonVariant } from './Button'; import { ButtonVariant } from './Button';
import { ConfirmationDialog } from './ConfirmationDialog'; import { ConfirmationDialog } from './ConfirmationDialog';
import { FormattingWarningModal } from './FormattingWarningModal';
import { SendEditWarningModal } from './SendEditWarningModal';
import { SignalConnectionsModal } from './SignalConnectionsModal'; import { SignalConnectionsModal } from './SignalConnectionsModal';
import { WhatsNewModal } from './WhatsNewModal'; import { WhatsNewModal } from './WhatsNewModal';
@ -56,11 +51,6 @@ export type PropsType = {
// DeleteMessageModal // DeleteMessageModal
deleteMessagesProps: DeleteMessagesPropsType | undefined; deleteMessagesProps: DeleteMessagesPropsType | undefined;
renderDeleteMessagesModal: () => JSX.Element; renderDeleteMessagesModal: () => JSX.Element;
// FormattingWarningModal
showFormattingWarningModal: (
explodedPromise: ExplodePromiseResultType<boolean> | undefined
) => void;
formattingWarningData: FormattingWarningDataType | undefined;
// ForwardMessageModal // ForwardMessageModal
forwardMessagesProps: ForwardMessagesPropsType | undefined; forwardMessagesProps: ForwardMessagesPropsType | undefined;
renderForwardMessagesModal: () => JSX.Element; renderForwardMessagesModal: () => JSX.Element;
@ -76,11 +66,6 @@ export type PropsType = {
// SafetyNumberModal // SafetyNumberModal
safetyNumberModalContactId: string | undefined; safetyNumberModalContactId: string | undefined;
renderSafetyNumber: () => JSX.Element; renderSafetyNumber: () => JSX.Element;
// SendEditWarningModal
showSendEditWarningModal: (
explodedPromise: ExplodePromiseResultType<boolean> | undefined
) => void;
sendEditWarningData: SendEditWarningDataType | undefined;
// ShortcutGuideModal // ShortcutGuideModal
isShortcutGuideModalVisible: boolean; isShortcutGuideModalVisible: boolean;
renderShortcutGuideModal: () => JSX.Element; renderShortcutGuideModal: () => JSX.Element;
@ -138,9 +123,6 @@ export function GlobalModalContainer({
// DeleteMessageModal // DeleteMessageModal
deleteMessagesProps, deleteMessagesProps,
renderDeleteMessagesModal, renderDeleteMessagesModal,
// FormattingWarningModal
showFormattingWarningModal,
formattingWarningData,
// ForwardMessageModal // ForwardMessageModal
forwardMessagesProps, forwardMessagesProps,
renderForwardMessagesModal, renderForwardMessagesModal,
@ -156,9 +138,6 @@ export function GlobalModalContainer({
// SafetyNumberModal // SafetyNumberModal
safetyNumberModalContactId, safetyNumberModalContactId,
renderSafetyNumber, renderSafetyNumber,
// SendEditWarningDataType
showSendEditWarningModal,
sendEditWarningData,
// ShortcutGuideModal // ShortcutGuideModal
isShortcutGuideModalVisible, isShortcutGuideModalVisible,
renderShortcutGuideModal, renderShortcutGuideModal,
@ -226,23 +205,6 @@ export function GlobalModalContainer({
return renderDeleteMessagesModal(); return renderDeleteMessagesModal();
} }
if (formattingWarningData) {
const { resolve } = formattingWarningData.explodedPromise;
return (
<FormattingWarningModal
i18n={i18n}
onSendAnyway={() => {
showFormattingWarningModal(undefined);
resolve(true);
}}
onCancel={() => {
showFormattingWarningModal(undefined);
resolve(false);
}}
/>
);
}
if (forwardMessagesProps) { if (forwardMessagesProps) {
return renderForwardMessagesModal(); return renderForwardMessagesModal();
} }
@ -259,23 +221,6 @@ export function GlobalModalContainer({
return renderProfileEditor(); return renderProfileEditor();
} }
if (sendEditWarningData) {
const { resolve } = sendEditWarningData.explodedPromise;
return (
<SendEditWarningModal
i18n={i18n}
onSendAnyway={() => {
showSendEditWarningModal(undefined);
resolve(true);
}}
onCancel={() => {
showSendEditWarningModal(undefined);
resolve(false);
}}
/>
);
}
if (isShortcutGuideModalVisible) { if (isShortcutGuideModalVisible) {
return renderShortcutGuideModal(); return renderShortcutGuideModal();
} }

View file

@ -1,38 +0,0 @@
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import React from 'react';
import type { LocalizerType } from '../types/Util';
import { ConfirmationDialog } from './ConfirmationDialog';
type PropsType = {
i18n: LocalizerType;
onSendAnyway: () => void;
onCancel: () => void;
};
export function SendEditWarningModal({
i18n,
onSendAnyway,
onCancel,
}: PropsType): JSX.Element | null {
return (
<ConfirmationDialog
actions={[
{
action: onSendAnyway,
autoClose: true,
style: 'affirmative',
text: i18n('icu:sendAnyway'),
},
]}
dialogName="SendEditWarningModal"
i18n={i18n}
onCancel={onCancel}
onClose={onCancel}
title={i18n('icu:SendEdit--dialog--title2')}
>
{i18n('icu:SendEdit--dialog--body2')}
</ConfirmationDialog>
);
}

View file

@ -20,7 +20,6 @@ import {
} from '../../types/Attachment'; } from '../../types/Attachment';
import type { BoundActionCreatorsMapObject } from '../../hooks/useBoundActions'; import type { BoundActionCreatorsMapObject } from '../../hooks/useBoundActions';
import type { DraftBodyRanges } from '../../types/BodyRange'; import type { DraftBodyRanges } from '../../types/BodyRange';
import { BodyRange } from '../../types/BodyRange';
import type { LinkPreviewType } from '../../types/message/LinkPreviews'; import type { LinkPreviewType } from '../../types/message/LinkPreviews';
import type { MessageAttributesType } from '../../model-types.d'; import type { MessageAttributesType } from '../../model-types.d';
import type { NoopActionType } from './noop'; import type { NoopActionType } from './noop';
@ -90,8 +89,6 @@ import { drop } from '../../util/drop';
import { strictAssert } from '../../util/assert'; import { strictAssert } from '../../util/assert';
import { makeQuote } from '../../util/makeQuote'; import { makeQuote } from '../../util/makeQuote';
import { sendEditedMessage as doSendEditedMessage } from '../../util/sendEditedMessage'; import { sendEditedMessage as doSendEditedMessage } from '../../util/sendEditedMessage';
import { maybeBlockSendForFormattingModal } from '../../util/maybeBlockSendForFormattingModal';
import { maybeBlockSendForEditWarningModal } from '../../util/maybeBlockSendForEditWarningModal';
import { Sound, SoundType } from '../../util/Sound'; import { Sound, SoundType } from '../../util/Sound';
import { import {
isImageTypeSupported, isImageTypeSupported,
@ -390,9 +387,7 @@ export function handleLeaveConversation(
// eslint-disable-next-line local-rules/type-alias-readonlydeep // eslint-disable-next-line local-rules/type-alias-readonlydeep
type WithPreSendChecksOptions = Readonly<{ type WithPreSendChecksOptions = Readonly<{
bodyRanges?: DraftBodyRanges;
message?: string; message?: string;
isEditedMessage?: boolean;
voiceNoteAttachment?: InMemoryAttachmentDraftType; voiceNoteAttachment?: InMemoryAttachmentDraftType;
}>; }>;
@ -416,7 +411,7 @@ async function withPreSendChecks(
conversation.attributes, conversation.attributes,
]); ]);
const { bodyRanges, isEditedMessage, message, voiceNoteAttachment } = options; const { message, voiceNoteAttachment } = options;
try { try {
dispatch(setComposerDisabledState(conversationId, true)); dispatch(setComposerDisabledState(conversationId, true));
@ -438,45 +433,6 @@ async function withPreSendChecks(
return; return;
} }
try {
const hasFormatting = bodyRanges?.some(BodyRange.isFormatting);
if (hasFormatting && !window.storage.get('formattingWarningShown')) {
const sendAnyway = await maybeBlockSendForFormattingModal();
if (!sendAnyway) {
dispatch(setComposerDisabledState(conversationId, false));
return;
}
drop(window.storage.put('formattingWarningShown', true));
}
} catch (error) {
log.error(
'withPreSendChecks block for formatting modal:',
Errors.toLogFormat(error)
);
return;
}
try {
if (
isEditedMessage &&
!window.storage.get('sendEditWarningShown') &&
!window.SignalCI
) {
const sendAnyway = await maybeBlockSendForEditWarningModal();
if (!sendAnyway) {
dispatch(setComposerDisabledState(conversationId, false));
return;
}
drop(window.storage.put('sendEditWarningShown', true));
}
} catch (error) {
log.error(
'withPreSendChecks block for send edit warning modal:',
Errors.toLogFormat(error)
);
return;
}
const toast = shouldShowInvalidMessageToast(conversation.attributes); const toast = shouldShowInvalidMessageToast(conversation.attributes);
if (toast != null) { if (toast != null) {
dispatch({ dispatch({
@ -510,6 +466,7 @@ async function withPreSendChecks(
function sendEditedMessage( function sendEditedMessage(
conversationId: string, conversationId: string,
options: WithPreSendChecksOptions & { options: WithPreSendChecksOptions & {
bodyRanges?: DraftBodyRanges;
targetMessageId: string; targetMessageId: string;
quoteAuthorAci?: AciString; quoteAuthorAci?: AciString;
quoteSentAt?: number; quoteSentAt?: number;
@ -534,39 +491,35 @@ function sendEditedMessage(
targetMessageId, targetMessageId,
} = options; } = options;
await withPreSendChecks( await withPreSendChecks(conversationId, options, dispatch, async () => {
conversationId, try {
{ ...options, isEditedMessage: true }, await doSendEditedMessage(conversationId, {
dispatch, body: message,
async () => { bodyRanges,
try { preview: getLinkPreviewForSend(message),
await doSendEditedMessage(conversationId, { quoteAuthorAci,
body: message, quoteSentAt,
bodyRanges, targetMessageId,
preview: getLinkPreviewForSend(message), });
quoteAuthorAci, } catch (error) {
quoteSentAt, log.error('sendEditedMessage', Errors.toLogFormat(error));
targetMessageId, if (error.toastType) {
dispatch({
type: SHOW_TOAST,
payload: {
toastType: error.toastType,
},
}); });
} catch (error) {
log.error('sendEditedMessage', Errors.toLogFormat(error));
if (error.toastType) {
dispatch({
type: SHOW_TOAST,
payload: {
toastType: error.toastType,
},
});
}
} }
} }
); });
}; };
} }
function sendMultiMediaMessage( function sendMultiMediaMessage(
conversationId: string, conversationId: string,
options: WithPreSendChecksOptions & { options: WithPreSendChecksOptions & {
bodyRanges?: DraftBodyRanges;
draftAttachments?: ReadonlyArray<AttachmentDraftType>; draftAttachments?: ReadonlyArray<AttachmentDraftType>;
timestamp?: number; timestamp?: number;
} }

View file

@ -73,12 +73,6 @@ export type SafetyNumberChangedBlockingDataType = ReadonlyDeep<{
promiseUuid: SingleServePromise.SingleServePromiseIdString; promiseUuid: SingleServePromise.SingleServePromiseIdString;
source?: SafetyNumberChangeSource; source?: SafetyNumberChangeSource;
}>; }>;
export type FormattingWarningDataType = ReadonlyDeep<{
explodedPromise: ExplodePromiseResultType<boolean>;
}>;
export type SendEditWarningDataType = ReadonlyDeep<{
explodedPromise: ExplodePromiseResultType<boolean>;
}>;
export type AuthorizeArtCreatorDataType = export type AuthorizeArtCreatorDataType =
ReadonlyDeep<AuthorizeArtCreatorOptionsType>; ReadonlyDeep<AuthorizeArtCreatorOptionsType>;
@ -103,7 +97,6 @@ export type GlobalModalsStateType = ReadonlyDeep<{
description?: string; description?: string;
title?: string; title?: string;
}; };
formattingWarningData?: FormattingWarningDataType;
forwardMessagesProps?: ForwardMessagesPropsType; forwardMessagesProps?: ForwardMessagesPropsType;
gv2MigrationProps?: MigrateToGV2PropsType; gv2MigrationProps?: MigrateToGV2PropsType;
hasConfirmationModal: boolean; hasConfirmationModal: boolean;
@ -120,7 +113,6 @@ export type GlobalModalsStateType = ReadonlyDeep<{
profileEditorInitialEditState: ProfileEditorEditState | undefined; profileEditorInitialEditState: ProfileEditorEditState | undefined;
safetyNumberChangedBlockingData?: SafetyNumberChangedBlockingDataType; safetyNumberChangedBlockingData?: SafetyNumberChangedBlockingDataType;
safetyNumberModalContactId?: string; safetyNumberModalContactId?: string;
sendEditWarningData?: SendEditWarningDataType;
stickerPackPreviewId?: string; stickerPackPreviewId?: string;
userNotFoundModalState?: UserNotFoundModalStateType; userNotFoundModalState?: UserNotFoundModalStateType;
}>; }>;
@ -163,10 +155,6 @@ const TOGGLE_EDIT_NICKNAME_AND_NOTE_MODAL =
'globalModals/TOGGLE_EDIT_NICKNAME_AND_NOTE_MODAL'; 'globalModals/TOGGLE_EDIT_NICKNAME_AND_NOTE_MODAL';
const TOGGLE_MESSAGE_REQUEST_ACTIONS_CONFIRMATION = const TOGGLE_MESSAGE_REQUEST_ACTIONS_CONFIRMATION =
'globalModals/TOGGLE_MESSAGE_REQUEST_ACTIONS_CONFIRMATION'; 'globalModals/TOGGLE_MESSAGE_REQUEST_ACTIONS_CONFIRMATION';
const SHOW_FORMATTING_WARNING_MODAL =
'globalModals/SHOW_FORMATTING_WARNING_MODAL';
const SHOW_SEND_EDIT_WARNING_MODAL =
'globalModals/SHOW_SEND_EDIT_WARNING_MODAL';
const CLOSE_SHORTCUT_GUIDE_MODAL = 'globalModals/CLOSE_SHORTCUT_GUIDE_MODAL'; const CLOSE_SHORTCUT_GUIDE_MODAL = 'globalModals/CLOSE_SHORTCUT_GUIDE_MODAL';
const SHOW_SHORTCUT_GUIDE_MODAL = 'globalModals/SHOW_SHORTCUT_GUIDE_MODAL'; const SHOW_SHORTCUT_GUIDE_MODAL = 'globalModals/SHOW_SHORTCUT_GUIDE_MODAL';
const SHOW_AUTH_ART_CREATOR = 'globalModals/SHOW_AUTH_ART_CREATOR'; const SHOW_AUTH_ART_CREATOR = 'globalModals/SHOW_AUTH_ART_CREATOR';
@ -280,20 +268,6 @@ type ShowStoriesSettingsActionType = ReadonlyDeep<{
type: typeof SHOW_STORIES_SETTINGS; type: typeof SHOW_STORIES_SETTINGS;
}>; }>;
type ShowFormattingWarningModalActionType = ReadonlyDeep<{
type: typeof SHOW_FORMATTING_WARNING_MODAL;
payload: {
explodedPromise: ExplodePromiseResultType<boolean> | undefined;
};
}>;
type ShowSendEditWarningModalActionType = ReadonlyDeep<{
type: typeof SHOW_SEND_EDIT_WARNING_MODAL;
payload: {
explodedPromise: ExplodePromiseResultType<boolean> | undefined;
};
}>;
type HideStoriesSettingsActionType = ReadonlyDeep<{ type HideStoriesSettingsActionType = ReadonlyDeep<{
type: typeof HIDE_STORIES_SETTINGS; type: typeof HIDE_STORIES_SETTINGS;
}>; }>;
@ -409,9 +383,7 @@ export type GlobalModalsActionType = ReadonlyDeep<
| ShowErrorModalActionType | ShowErrorModalActionType
| ToggleEditNicknameAndNoteModalActionType | ToggleEditNicknameAndNoteModalActionType
| ToggleMessageRequestActionsConfirmationActionType | ToggleMessageRequestActionsConfirmationActionType
| ShowFormattingWarningModalActionType
| ShowSendAnywayDialogActionType | ShowSendAnywayDialogActionType
| ShowSendEditWarningModalActionType
| ShowShortcutGuideModalActionType | ShowShortcutGuideModalActionType
| ShowStickerPackPreviewActionType | ShowStickerPackPreviewActionType
| ShowStoriesSettingsActionType | ShowStoriesSettingsActionType
@ -453,8 +425,6 @@ export const actions = {
showErrorModal, showErrorModal,
toggleEditNicknameAndNoteModal, toggleEditNicknameAndNoteModal,
toggleMessageRequestActionsConfirmation, toggleMessageRequestActionsConfirmation,
showFormattingWarningModal,
showSendEditWarningModal,
showGV2MigrationDialog, showGV2MigrationDialog,
showShortcutGuideModal, showShortcutGuideModal,
showStickerPackPreview, showStickerPackPreview,
@ -532,18 +502,6 @@ function showStoriesSettings(): ShowStoriesSettingsActionType {
return { type: SHOW_STORIES_SETTINGS }; return { type: SHOW_STORIES_SETTINGS };
} }
function showFormattingWarningModal(
explodedPromise: ExplodePromiseResultType<boolean> | undefined
): ShowFormattingWarningModalActionType {
return { type: SHOW_FORMATTING_WARNING_MODAL, payload: { explodedPromise } };
}
function showSendEditWarningModal(
explodedPromise: ExplodePromiseResultType<boolean> | undefined
): ShowSendEditWarningModalActionType {
return { type: SHOW_SEND_EDIT_WARNING_MODAL, payload: { explodedPromise } };
}
function showGV2MigrationDialog( function showGV2MigrationDialog(
conversationId: string conversationId: string
): ThunkAction<void, RootStateType, unknown, StartMigrationToGV2ActionType> { ): ThunkAction<void, RootStateType, unknown, StartMigrationToGV2ActionType> {
@ -1161,36 +1119,6 @@ export function reducer(
}; };
} }
if (action.type === SHOW_FORMATTING_WARNING_MODAL) {
const { explodedPromise } = action.payload;
if (!explodedPromise) {
return {
...state,
formattingWarningData: undefined,
};
}
return {
...state,
formattingWarningData: { explodedPromise },
};
}
if (action.type === SHOW_SEND_EDIT_WARNING_MODAL) {
const { explodedPromise } = action.payload;
if (!explodedPromise) {
return {
...state,
sendEditWarningData: undefined,
};
}
return {
...state,
sendEditWarningData: { explodedPromise },
};
}
if (action.type === SHOW_STICKER_PACK_PREVIEW) { if (action.type === SHOW_STICKER_PACK_PREVIEW) {
return { return {
...state, ...state,

View file

@ -96,7 +96,6 @@ export const SmartGlobalModalContainer = memo(
editHistoryMessages, editHistoryMessages,
editNicknameAndNoteModalProps, editNicknameAndNoteModalProps,
errorModalProps, errorModalProps,
formattingWarningData,
forwardMessagesProps, forwardMessagesProps,
messageRequestActionsConfirmationProps, messageRequestActionsConfirmationProps,
notePreviewModalProps, notePreviewModalProps,
@ -109,7 +108,6 @@ export const SmartGlobalModalContainer = memo(
usernameOnboardingState, usernameOnboardingState,
safetyNumberChangedBlockingData, safetyNumberChangedBlockingData,
safetyNumberModalContactId, safetyNumberModalContactId,
sendEditWarningData,
stickerPackPreviewId, stickerPackPreviewId,
userNotFoundModalState, userNotFoundModalState,
} = useSelector(getGlobalModalsState); } = useSelector(getGlobalModalsState);
@ -120,8 +118,6 @@ export const SmartGlobalModalContainer = memo(
confirmAuthorizeArtCreator, confirmAuthorizeArtCreator,
hideUserNotFoundModal, hideUserNotFoundModal,
hideWhatsNewModal, hideWhatsNewModal,
showFormattingWarningModal,
showSendEditWarningModal,
toggleSignalConnectionsModal, toggleSignalConnectionsModal,
} = useGlobalModalActions(); } = useGlobalModalActions();
@ -181,7 +177,6 @@ export const SmartGlobalModalContainer = memo(
editNicknameAndNoteModalProps={editNicknameAndNoteModalProps} editNicknameAndNoteModalProps={editNicknameAndNoteModalProps}
errorModalProps={errorModalProps} errorModalProps={errorModalProps}
deleteMessagesProps={deleteMessagesProps} deleteMessagesProps={deleteMessagesProps}
formattingWarningData={formattingWarningData}
forwardMessagesProps={forwardMessagesProps} forwardMessagesProps={forwardMessagesProps}
messageRequestActionsConfirmationProps={ messageRequestActionsConfirmationProps={
messageRequestActionsConfirmationProps messageRequestActionsConfirmationProps
@ -218,9 +213,6 @@ export const SmartGlobalModalContainer = memo(
renderStoriesSettings={renderStoriesSettings} renderStoriesSettings={renderStoriesSettings}
safetyNumberChangedBlockingData={safetyNumberChangedBlockingData} safetyNumberChangedBlockingData={safetyNumberChangedBlockingData}
safetyNumberModalContactId={safetyNumberModalContactId} safetyNumberModalContactId={safetyNumberModalContactId}
sendEditWarningData={sendEditWarningData}
showFormattingWarningModal={showFormattingWarningModal}
showSendEditWarningModal={showSendEditWarningModal}
stickerPackPreviewId={stickerPackPreviewId} stickerPackPreviewId={stickerPackPreviewId}
theme={theme} theme={theme}
toggleSignalConnectionsModal={toggleSignalConnectionsModal} toggleSignalConnectionsModal={toggleSignalConnectionsModal}

View file

@ -67,7 +67,6 @@ export type StorageAccessType = {
customColors: CustomColorsItemType; customColors: CustomColorsItemType;
device_name: string; device_name: string;
existingOnboardingStoryMessageIds: ReadonlyArray<string> | undefined; existingOnboardingStoryMessageIds: ReadonlyArray<string> | undefined;
formattingWarningShown: boolean;
hasRegisterSupportForUnauthenticatedDelivery: boolean; hasRegisterSupportForUnauthenticatedDelivery: boolean;
hasSetMyStoriesPrivacy: boolean; hasSetMyStoriesPrivacy: boolean;
hasCompletedUsernameOnboarding: boolean; hasCompletedUsernameOnboarding: boolean;
@ -92,7 +91,6 @@ export type StorageAccessType = {
regionCode: string; regionCode: string;
registrationIdMap: Record<ServiceIdString, number>; registrationIdMap: Record<ServiceIdString, number>;
remoteBuildExpiration: number; remoteBuildExpiration: number;
sendEditWarningShown: boolean;
sessionResets: SessionResetsType; sessionResets: SessionResetsType;
showStickerPickerHint: boolean; showStickerPickerHint: boolean;
showStickersIntroduction: boolean; showStickersIntroduction: boolean;
@ -175,6 +173,8 @@ export type StorageAccessType = {
signedKeyRotationRejected: number; signedKeyRotationRejected: number;
lastHeartbeat: never; lastHeartbeat: never;
lastStartup: never; lastStartup: never;
sendEditWarningShown: never;
formattingWarningShown: never;
}; };
export type StorageInterface = { export type StorageInterface = {

View file

@ -20,7 +20,6 @@ export const STORAGE_UI_KEYS: ReadonlyArray<keyof StorageAccessType> = [
'customColors', 'customColors',
'defaultConversationColor', 'defaultConversationColor',
'existingOnboardingStoryMessageIds', 'existingOnboardingStoryMessageIds',
'formattingWarningShown',
'hasCompletedSafetyNumberOnboarding', 'hasCompletedSafetyNumberOnboarding',
'hasCompletedUsernameLinkOnboarding', 'hasCompletedUsernameLinkOnboarding',
'hide-menu-bar', 'hide-menu-bar',
@ -34,7 +33,6 @@ export const STORAGE_UI_KEYS: ReadonlyArray<keyof StorageAccessType> = [
'preferred-video-input-device', 'preferred-video-input-device',
'preferredLeftPaneWidth', 'preferredLeftPaneWidth',
'preferredReactionEmoji', 'preferredReactionEmoji',
'sendEditWarningShown',
'sent-media-quality', 'sent-media-quality',
'showStickerPickerHint', 'showStickerPickerHint',
'showStickersIntroduction', 'showStickersIntroduction',

View file

@ -1,10 +0,0 @@
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { explodePromise } from './explodePromise';
export async function maybeBlockSendForEditWarningModal(): Promise<boolean> {
const explodedPromise = explodePromise<boolean>();
window.reduxActions.globalModals.showSendEditWarningModal(explodedPromise);
return explodedPromise.promise;
}

View file

@ -1,10 +0,0 @@
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { explodePromise } from './explodePromise';
export async function maybeBlockSendForFormattingModal(): Promise<boolean> {
const explodedPromise = explodePromise<boolean>();
window.reduxActions.globalModals.showFormattingWarningModal(explodedPromise);
return explodedPromise.promise;
}