Move receipts and view/read syncs to new syncTasks system

Co-authored-by: Scott Nonnenberg <scott@signal.org>
This commit is contained in:
automated-signal 2024-06-17 19:36:57 -05:00 committed by GitHub
parent 949104c316
commit b95dd1a70f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
33 changed files with 1242 additions and 612 deletions

View file

@ -195,6 +195,7 @@ import {
} from '../../util/deleteForMe';
import { MAX_MESSAGE_COUNT } from '../../util/deleteForMe.types';
import { isEnabled } from '../../RemoteConfig';
import type { CapabilitiesType } from '../../textsecure/WebAPI';
// State
@ -265,6 +266,7 @@ export type ConversationType = ReadonlyDeep<
firstName?: string;
profileName?: string;
profileLastUpdatedAt?: number;
capabilities?: CapabilitiesType;
username?: string;
about?: string;
aboutText?: string;
@ -1753,7 +1755,9 @@ function deleteMessages({
}
}
await window.Signal.Data.removeMessages(messageIds);
await window.Signal.Data.removeMessages(messageIds, {
singleProtoJobQueue,
});
popPanelForConversation()(dispatch, getState, undefined);
@ -1761,7 +1765,11 @@ function deleteMessages({
dispatch(scrollToMessage(conversationId, nearbyMessageId));
}
if (!isEnabled('desktop.deleteSync.send')) {
const ourConversation =
window.ConversationController.getOurConversationOrThrow();
const capable = Boolean(ourConversation.get('capabilities')?.deleteSync);
if (!capable || !isEnabled('desktop.deleteSync.send')) {
return;
}
if (messages.length === 0) {

View file

@ -69,6 +69,7 @@ import {
conversationQueueJobEnum,
} from '../../jobs/conversationJobQueue';
import { ReceiptType } from '../../types/Receipt';
import { singleProtoJobQueue } from '../../jobs/singleProtoJobQueue';
export type StoryDataType = ReadonlyDeep<
{
@ -284,7 +285,7 @@ function deleteGroupStoryReply(
messageId: string
): ThunkAction<void, RootStateType, unknown, StoryReplyDeletedActionType> {
return async dispatch => {
await window.Signal.Data.removeMessage(messageId);
await window.Signal.Data.removeMessage(messageId, { singleProtoJobQueue });
dispatch({
type: STORY_REPLY_DELETED,
payload: messageId,
@ -1408,10 +1409,7 @@ function removeAllContactStories(
log.info(`${logId}: removing ${messages.length} stories`);
await Promise.all([
messages.map(m => m.cleanup()),
await dataInterface.removeMessages(messageIds),
]);
await dataInterface.removeMessages(messageIds, { singleProtoJobQueue });
dispatch({
type: 'NOOP',

View file

@ -0,0 +1,38 @@
// Copyright 2019 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { createSelector } from 'reselect';
import { getUserACI } from './user';
import { getConversationSelector } from './conversations';
import { getRemoteConfig, isRemoteConfigFlagEnabled } from './items';
import type { AciString } from '../../types/ServiceId';
import type { ConfigMapType } from '../../RemoteConfig';
import type { GetConversationByIdType } from './conversations';
export const getDeleteSyncSendEnabled = createSelector(
getUserACI,
getConversationSelector,
getRemoteConfig,
(
aci: AciString | undefined,
conversationSelector: GetConversationByIdType,
remoteConfig: ConfigMapType
): boolean => {
if (!aci) {
return false;
}
const ourConversation = conversationSelector(aci);
if (!ourConversation) {
return false;
}
const { capabilities } = ourConversation;
if (!capabilities || !capabilities.deleteSync) {
return false;
}
return isRemoteConfigFlagEnabled(remoteConfig, 'desktop.deleteSync.send');
}
);

View file

@ -127,13 +127,6 @@ export const isInternalUser = createSelector(
}
);
export const getDeleteSyncSendEnabled = createSelector(
getRemoteConfig,
(remoteConfig: ConfigMapType): boolean => {
return isRemoteConfigFlagEnabled(remoteConfig, 'desktop.deleteSync.send');
}
);
// Note: ts/util/stories is the other place this check is done
export const getStoriesEnabled = createSelector(
getItems,

View file

@ -41,10 +41,8 @@ import {
import { getHasStoriesSelector } from '../selectors/stories2';
import { getIntl, getTheme, getUserACI } from '../selectors/user';
import { useItemsActions } from '../ducks/items';
import {
getDeleteSyncSendEnabled,
getLocalDeleteWarningShown,
} from '../selectors/items';
import { getLocalDeleteWarningShown } from '../selectors/items';
import { getDeleteSyncSendEnabled } from '../selectors/items-extra';
export type OwnProps = {
id: string;

View file

@ -17,10 +17,8 @@ import {
} from '../selectors/conversations';
import { getDeleteMessagesProps } from '../selectors/globalModals';
import { useItemsActions } from '../ducks/items';
import {
getLocalDeleteWarningShown,
getDeleteSyncSendEnabled,
} from '../selectors/items';
import { getLocalDeleteWarningShown } from '../selectors/items';
import { getDeleteSyncSendEnabled } from '../selectors/items-extra';
import { LocalDeleteWarningModal } from '../../components/LocalDeleteWarningModal';
export const SmartDeleteMessagesModal = memo(