mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-05-24 08:39:07 +01:00
Remove group send endorsement toasts
This commit is contained in:
@@ -159,8 +159,6 @@ function getToast(toastType: ToastType): AnyToast {
|
||||
return { toastType: ToastType.FailedToFetchPhoneNumber };
|
||||
case ToastType.FailedToFetchUsername:
|
||||
return { toastType: ToastType.FailedToFetchUsername };
|
||||
case ToastType.FailedToSendWithEndorsements:
|
||||
return { toastType: ToastType.FailedToSendWithEndorsements };
|
||||
case ToastType.FailedToImportBackup:
|
||||
return { toastType: ToastType.FailedToImportBackup };
|
||||
case ToastType.FileSaved:
|
||||
|
||||
@@ -540,20 +540,6 @@ function renderToast({
|
||||
);
|
||||
}
|
||||
|
||||
if (toastType === ToastType.FailedToSendWithEndorsements) {
|
||||
return (
|
||||
<Toast
|
||||
onClose={hideToast}
|
||||
toastAction={{
|
||||
label: i18n('icu:Toast__ActionLabel--SubmitLog'),
|
||||
onClick: onShowDebugLog,
|
||||
}}
|
||||
>
|
||||
{i18n('icu:Toast--FailedToSendWithEndorsements')}
|
||||
</Toast>
|
||||
);
|
||||
}
|
||||
|
||||
if (toastType === ToastType.FailedToImportBackup) {
|
||||
return (
|
||||
<Toast
|
||||
|
||||
@@ -49,10 +49,7 @@ import {
|
||||
} from '../Crypto.node.ts';
|
||||
import type { ConversationLastProfileType } from '../model-types.d.ts';
|
||||
import type { GroupSendToken } from '../types/GroupSendEndorsements.std.ts';
|
||||
import {
|
||||
maybeCreateGroupSendEndorsementState,
|
||||
onFailedToSendWithEndorsements,
|
||||
} from '../util/groupSendEndorsements.preload.ts';
|
||||
import { maybeCreateGroupSendEndorsementState } from '../util/groupSendEndorsements.preload.ts';
|
||||
import { ProfileDecryptError } from '../types/errors.std.ts';
|
||||
import { signalProtocolStore } from '../SignalProtocolStore.preload.ts';
|
||||
import { itemStorage } from '../textsecure/Storage.preload.ts';
|
||||
@@ -558,10 +555,6 @@ async function doGetProfile(
|
||||
|
||||
// Unauthorized/Forbidden
|
||||
if (error.code === 401 || error.code === 403) {
|
||||
if (request.groupSendToken != null) {
|
||||
onFailedToSendWithEndorsements(error);
|
||||
}
|
||||
|
||||
// Step #: Retries for unauthorized access keys and group send tokens
|
||||
if (!isMe(c.attributes)) {
|
||||
// Fallback from failed unauth (access key) request
|
||||
|
||||
@@ -28,7 +28,6 @@ import { createLogger } from '../logging/log.std.ts';
|
||||
import { isRecord } from '../util/isRecord.std.ts';
|
||||
import type { GroupSendToken } from '../types/GroupSendEndorsements.std.ts';
|
||||
import { HTTPError } from '../types/HTTPError.std.ts';
|
||||
import { onFailedToSendWithEndorsements } from '../util/groupSendEndorsements.preload.ts';
|
||||
import { signalProtocolStore } from '../SignalProtocolStore.preload.ts';
|
||||
import { itemStorage } from './Storage.preload.ts';
|
||||
|
||||
@@ -115,8 +114,6 @@ async function getServerKeys(
|
||||
} catch (error) {
|
||||
if (!isUnauthorizedError(error)) {
|
||||
throw error;
|
||||
} else {
|
||||
onFailedToSendWithEndorsements(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,6 @@ export enum ToastType {
|
||||
FailedToDeleteUsername = 'FailedToDeleteUsername',
|
||||
FailedToFetchPhoneNumber = 'FailedToFetchPhoneNumber',
|
||||
FailedToFetchUsername = 'FailedToFetchUsername',
|
||||
FailedToSendWithEndorsements = 'FailedToSendWithEndorsements',
|
||||
FailedToImportBackup = 'FailedToImportBackup',
|
||||
FileSaved = 'FileSaved',
|
||||
FileSize = 'FileSize',
|
||||
@@ -181,7 +180,6 @@ export type AnyToast =
|
||||
| { toastType: ToastType.FailedToDeleteUsername }
|
||||
| { toastType: ToastType.FailedToFetchPhoneNumber }
|
||||
| { toastType: ToastType.FailedToFetchUsername }
|
||||
| { toastType: ToastType.FailedToSendWithEndorsements }
|
||||
| { toastType: ToastType.FailedToImportBackup }
|
||||
| {
|
||||
toastType: ToastType.FileSaved;
|
||||
|
||||
@@ -10,7 +10,7 @@ const log = createLogger('assert');
|
||||
/**
|
||||
* In development, starts the debugger.
|
||||
*/
|
||||
export function devDebugger(): void {
|
||||
function devDebugger(): void {
|
||||
if (getEnvironment() === Environment.Development) {
|
||||
debugger; // oxlint-disable-line no-debugger
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import { Aci } from '@signalapp/libsignal-client';
|
||||
import lodash from 'lodash';
|
||||
import {
|
||||
groupSendEndorsementsDataSchema,
|
||||
toGroupSendToken,
|
||||
@@ -12,7 +11,7 @@ import type {
|
||||
GroupSendToken,
|
||||
GroupSendEndorsementsData,
|
||||
} from '../types/GroupSendEndorsements.std.ts';
|
||||
import { devDebugger, strictAssert } from './assert.std.ts';
|
||||
import { strictAssert } from './assert.std.ts';
|
||||
import {
|
||||
GroupSecretParams,
|
||||
GroupSendEndorsement,
|
||||
@@ -23,11 +22,7 @@ import type { ServiceIdString } from '../types/ServiceId.std.ts';
|
||||
import { fromAciObject } from '../types/ServiceId.std.ts';
|
||||
import { createLogger } from '../logging/log.std.ts';
|
||||
import type { GroupV2MemberType } from '../model-types.d.ts';
|
||||
import { DurationInSeconds, MINUTE } from './durations/index.std.ts';
|
||||
import { ToastType } from '../types/Toast.dom.tsx';
|
||||
import * as Errors from '../types/errors.std.ts';
|
||||
import { isTestOrMockEnvironment } from '../environment.std.ts';
|
||||
import { isNightly } from './version.std.ts';
|
||||
import { DurationInSeconds } from './durations/index.std.ts';
|
||||
import { parseStrict } from './schemas.std.ts';
|
||||
import { DataReader } from '../sql/Client.preload.ts';
|
||||
import { maybeUpdateGroup } from '../groups.preload.ts';
|
||||
@@ -35,8 +30,6 @@ import * as Bytes from '../Bytes.std.ts';
|
||||
import { isGroupV2 } from './whatTypeOfConversation.dom.ts';
|
||||
import { itemStorage } from '../textsecure/Storage.preload.ts';
|
||||
|
||||
const { throttle } = lodash;
|
||||
|
||||
const log = createLogger('groupSendEndorsements');
|
||||
|
||||
export function decodeGroupSendEndorsementsResponse({
|
||||
@@ -321,37 +314,11 @@ export class GroupSendEndorsementState {
|
||||
return this.#combineMemberEndorsements(serviceIds);
|
||||
}
|
||||
|
||||
buildToken(serviceIds: Set<ServiceIdString>): GroupSendToken | null {
|
||||
try {
|
||||
return this.#toToken(this.#buildToken(new Set(serviceIds)));
|
||||
} catch (error) {
|
||||
onFailedToSendWithEndorsements(error);
|
||||
}
|
||||
return null;
|
||||
buildToken(serviceIds: Set<ServiceIdString>): GroupSendToken {
|
||||
return this.#toToken(this.#buildToken(new Set(serviceIds)));
|
||||
}
|
||||
}
|
||||
|
||||
const showFailedToSendWithEndorsementsToast = throttle(
|
||||
() => {
|
||||
window.reduxActions.toast.showToast({
|
||||
toastType: ToastType.FailedToSendWithEndorsements,
|
||||
});
|
||||
},
|
||||
5 * MINUTE,
|
||||
{ trailing: false }
|
||||
);
|
||||
|
||||
export function onFailedToSendWithEndorsements(error: Error): void {
|
||||
log.error('onFailedToSendWithEndorsements', Errors.toLogFormat(error));
|
||||
if (isTestOrMockEnvironment() || isNightly(window.getVersion())) {
|
||||
showFailedToSendWithEndorsementsToast();
|
||||
}
|
||||
if (window.SignalCI) {
|
||||
window.SignalCI.handleEvent('fatalTestError', error);
|
||||
}
|
||||
devDebugger();
|
||||
}
|
||||
|
||||
type MaybeCreateGroupSendEndorsementStateResult =
|
||||
| { state: GroupSendEndorsementState; didRefreshGroupState: false }
|
||||
| { state: null; didRefreshGroupState: boolean };
|
||||
@@ -437,19 +404,9 @@ export async function maybeCreateGroupSendEndorsementState(
|
||||
|
||||
// If we've already refreshed the group state, we should log and move on.
|
||||
if (alreadyRefreshedGroupState) {
|
||||
onFailedToSendWithEndorsements(
|
||||
new Error(
|
||||
`${logId}: Endorsements invalid after refreshing group: ${result.reason}`
|
||||
)
|
||||
);
|
||||
return { state: null, didRefreshGroupState: false };
|
||||
}
|
||||
if (conversation.isBlocked()) {
|
||||
onFailedToSendWithEndorsements(
|
||||
new Error(
|
||||
`${logId}: Group is blocked and endorsements are invalid: ${result.reason}`
|
||||
)
|
||||
);
|
||||
return { state: null, didRefreshGroupState: false };
|
||||
}
|
||||
|
||||
|
||||
@@ -84,10 +84,7 @@ import { strictAssert } from './assert.std.ts';
|
||||
import { createLogger } from '../logging/log.std.ts';
|
||||
import { waitForAll } from './waitForAll.std.ts';
|
||||
import type { GroupSendEndorsementState } from './groupSendEndorsements.preload.ts';
|
||||
import {
|
||||
maybeCreateGroupSendEndorsementState,
|
||||
onFailedToSendWithEndorsements,
|
||||
} from './groupSendEndorsements.preload.ts';
|
||||
import { maybeCreateGroupSendEndorsementState } from './groupSendEndorsements.preload.ts';
|
||||
import type { GroupSendToken } from '../types/GroupSendEndorsements.std.ts';
|
||||
import { isAciString } from './isAciString.std.ts';
|
||||
import { safeParseStrict, safeParseUnknown } from './schemas.std.ts';
|
||||
@@ -749,11 +746,9 @@ async function sendToGroupViaSenderKey(
|
||||
}
|
||||
|
||||
if (error.code === UNKNOWN_RECIPIENT) {
|
||||
onFailedToSendWithEndorsements(error);
|
||||
throw new UnknownRecipientError();
|
||||
}
|
||||
if (error.code === INCORRECT_AUTH_KEY) {
|
||||
onFailedToSendWithEndorsements(error);
|
||||
throw new IncorrectSenderKeyAuthError();
|
||||
}
|
||||
|
||||
@@ -790,13 +785,6 @@ async function sendToGroupViaSenderKey(
|
||||
}
|
||||
}
|
||||
|
||||
if (groupSendEndorsementState != null) {
|
||||
// Ignore server errors
|
||||
if (!(error instanceof HTTPError && error.code === 500)) {
|
||||
onFailedToSendWithEndorsements(error);
|
||||
}
|
||||
}
|
||||
|
||||
log.error(
|
||||
`${logId}: Returned unexpected error code: ${
|
||||
error.code
|
||||
@@ -1381,11 +1369,6 @@ function isValidSenderKeyRecipient(
|
||||
|
||||
if (groupSendEndorsementState != null) {
|
||||
if (!groupSendEndorsementState.hasMember(serviceId)) {
|
||||
onFailedToSendWithEndorsements(
|
||||
new Error(
|
||||
`isValidSenderKeyRecipient: Sending to ${serviceId}, missing endorsement`
|
||||
)
|
||||
);
|
||||
return false;
|
||||
}
|
||||
} else if (!getAccessKey(memberConversation.attributes, { story })) {
|
||||
@@ -1588,12 +1571,6 @@ async function fetchKeysForServiceId(
|
||||
await markServiceIdUnregistered(serviceId);
|
||||
return;
|
||||
}
|
||||
if (useGroupSendEndorsement) {
|
||||
// Ignore untrusted identity key errors
|
||||
if (!(error instanceof OutgoingIdentityKeyError)) {
|
||||
onFailedToSendWithEndorsements(error as Error);
|
||||
}
|
||||
}
|
||||
log.error(
|
||||
`${logId}: Error fetching ${devices?.join(', ') || 'all'} devices`,
|
||||
Errors.toLogFormat(error)
|
||||
|
||||
Reference in New Issue
Block a user