fix: Fix multiple bugs with new authentication flow

This commit is contained in:
2026-06-07 15:04:21 +02:00
parent 9fc26b1ccf
commit 83456c018c
137 changed files with 4710 additions and 281 deletions

View File

@@ -46,7 +46,6 @@ import { TimeSyncService } from '../../core/services/time-sync.service';
import { PlatformService } from '../../core/platform';
import { AppI18nService } from '../../core/i18n';
import {
DELETED_MESSAGE_CONTENT,
Message,
Reaction,
Room
@@ -57,6 +56,7 @@ import { resolveRoomPermission } from '../../domains/access-control';
import { dispatchIncomingMessage, IncomingMessageContext } from './messages-incoming.handlers';
import { MessageRevisionService } from '../../domains/chat/application/services/message-revision.service';
import { materializeMessageFromRevision } from '../../domains/chat/domain/rules/message-revision.builder.rules';
import { setStoredCurrentUserId } from '../../core/storage/current-user-storage';
const INITIAL_ROOM_MESSAGE_LIMIT = 30;
/** Cap on simultaneous browser-cache prefetches for apps with many saved rooms. */
@@ -261,24 +261,11 @@ export class MessagesEffects {
});
const message = materializeMessageFromRevision(null, revision);
setStoredCurrentUserId(currentUser.id);
this.attachments.rememberMessageRoom(message.id, message.roomId);
this.trackBackgroundOperation(
this.db.saveMessage(message),
'Failed to persist outgoing chat message',
{
channelId: message.channelId,
contentLength: message.content.length,
messageId: message.id,
roomId: message.roomId
}
);
this.trackBackgroundOperation(
this.messageRevisions.persistRevision(revision),
'Failed to persist outgoing message revision',
{ messageId: message.id, revision: revision.revision }
);
await this.db.saveMessage(message);
await this.messageRevisions.persistRevision(revision);
this.customEmoji.pushEmojisInContent(content);
this.webrtc.broadcastMessage({ type: 'chat-message', message });
@@ -482,6 +469,7 @@ export class MessagesEffects {
deletedBy: currentUser.id,
deletedAt
});
this.messageRevisions.broadcastRevision(revision);
return MessagesActions.deleteMessageSuccess({ messageId });
@@ -667,7 +655,8 @@ export class MessagesEffects {
messageRevisions: this.messageRevisions,
currentUser: currentUser ?? null,
currentRoom,
savedRooms
savedRooms,
getClientInstanceId: () => this.webrtc.getClientInstanceId()
};
return dispatchIncomingMessage(event as Parameters<typeof dispatchIncomingMessage>[0], ctx).pipe(
@@ -712,6 +701,19 @@ export class MessagesEffects {
return EMPTY;
}
const chatRelayEvent = event as {
message?: Message & { clientInstanceId?: string };
clientInstanceId?: string;
fromUserId?: string;
senderId?: string;
serverId?: string;
};
const signalingMessage = chatRelayEvent.message && typeof chatRelayEvent.message === 'object'
? {
...chatRelayEvent.message,
clientInstanceId: chatRelayEvent.message.clientInstanceId ?? chatRelayEvent.clientInstanceId
}
: chatRelayEvent.message;
const ctx: IncomingMessageContext = {
db: this.db,
webrtc: this.webrtc,
@@ -720,13 +722,15 @@ export class MessagesEffects {
messageRevisions: this.messageRevisions,
currentUser: currentUser ?? null,
currentRoom,
savedRooms
savedRooms,
getClientInstanceId: () => this.webrtc.getClientInstanceId()
};
return dispatchIncomingMessage({
...event,
type: 'chat-message',
fromPeerId: event.fromUserId
fromPeerId: event.fromUserId ?? (event as { senderId?: string }).senderId,
message: signalingMessage
}, ctx).pipe(
catchError((error) => {
reportDebuggingError(this.debugging, 'messages', 'Failed to process incoming signaling chat message', {