wip: optimizations

This commit is contained in:
2026-05-23 15:28:40 +02:00
parent 5bf506af03
commit 155fe20862
89 changed files with 7431 additions and 392 deletions

View File

@@ -26,7 +26,6 @@ import {
import {
map,
mergeMap,
catchError,
withLatestFrom,
tap,
filter,
@@ -43,12 +42,9 @@ import { RealtimeSessionFacade } from '../../core/realtime';
import { DatabaseService } from '../../infrastructure/persistence';
import { DebuggingService } from '../../core/services/debugging.service';
import {
INVENTORY_LIMIT,
FULL_SYNC_LIMIT,
SYNC_POLL_FAST_MS,
SYNC_POLL_SLOW_MS,
SYNC_TIMEOUT_MS,
getLatestTimestamp
SYNC_TIMEOUT_MS
} from './messages.helpers';
@Injectable()
@@ -77,13 +73,8 @@ export class MessagesSyncEffects {
if (!room)
return EMPTY;
return from(
this.db.getMessages(room.id, FULL_SYNC_LIMIT, 0)
).pipe(
tap((messages) => {
const count = messages.length;
const lastUpdated = getLatestTimestamp(messages);
return from(this.db.getRoomMessageStats(room.id)).pipe(
tap(({ count, lastUpdated }) => {
this.webrtc.sendToPeer(peerId, {
type: 'chat-sync-summary',
roomId: room.id,
@@ -124,11 +115,8 @@ export class MessagesSyncEffects {
return EMPTY;
}
return from(this.db.getMessages(activeRoom.id, FULL_SYNC_LIMIT, 0)).pipe(
tap((messages) => {
const count = messages.length;
const lastUpdated = getLatestTimestamp(messages);
return from(this.db.getRoomMessageStats(activeRoom.id)).pipe(
tap(({ count, lastUpdated }) => {
for (const pid of peers) {
try {
this.webrtc.sendToPeer(pid, {
@@ -202,37 +190,22 @@ export class MessagesSyncEffects {
return of(MessagesActions.syncComplete());
}
return from(
this.db.getMessages(room.id, INVENTORY_LIMIT, 0)
).pipe(
map(() => {
for (const pid of peers) {
try {
this.webrtc.sendToPeer(pid, {
type: 'chat-inventory-request',
roomId: room.id
});
} catch (error) {
this.debugging.warn('messages', 'Failed to request peer inventory during sync poll', {
error,
peerId: pid,
roomId: room.id
});
}
}
return MessagesActions.startSync();
}),
catchError((error) => {
this.lastSyncClean = false;
this.debugging.warn('messages', 'Periodic sync poll failed', {
error,
for (const pid of peers) {
try {
this.webrtc.sendToPeer(pid, {
type: 'chat-inventory-request',
roomId: room.id
});
} catch (error) {
this.debugging.warn('messages', 'Failed to request peer inventory during sync poll', {
error,
peerId: pid,
roomId: room.id
});
}
}
return of(MessagesActions.syncComplete());
})
);
return of(MessagesActions.startSync());
})
)
)