fix: Fix multiple bugs with new authentication flow
This commit is contained in:
@@ -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', {
|
||||
|
||||
Reference in New Issue
Block a user