feat: Add emoji and alot of other fixes

This commit is contained in:
2026-06-05 05:40:18 +02:00
parent ca069e2f61
commit 6865147e8f
72 changed files with 3885 additions and 413 deletions
@@ -8,7 +8,7 @@ import {
Reaction,
BanEntry
} from '../../shared-kernel';
import type { ChatAttachmentMeta } from '../../shared-kernel';
import type { ChatAttachmentMeta, CustomEmoji } from '../../shared-kernel';
import { getStoredCurrentUserId } from '../../core/storage/current-user-storage';
import type { RoomMessageStats } from './database.service';
@@ -16,7 +16,7 @@ import type { RoomMessageStats } from './database.service';
const DATABASE_NAME = 'metoyou';
const ANONYMOUS_DATABASE_SCOPE = 'anonymous';
/** IndexedDB schema version - bump when adding/changing object stores. */
const DATABASE_VERSION = 2;
const DATABASE_VERSION = 3;
/** Names of every object store used by the application. */
const STORE_MESSAGES = 'messages';
const STORE_USERS = 'users';
@@ -25,6 +25,7 @@ const STORE_REACTIONS = 'reactions';
const STORE_BANS = 'bans';
const STORE_META = 'meta';
const STORE_ATTACHMENTS = 'attachments';
const STORE_CUSTOM_EMOJIS = 'customEmojis';
/** All object store names, used when clearing the entire database. */
const ALL_STORE_NAMES: string[] = [
STORE_MESSAGES,
@@ -33,6 +34,7 @@ const ALL_STORE_NAMES: string[] = [
STORE_REACTIONS,
STORE_BANS,
STORE_ATTACHMENTS,
STORE_CUSTOM_EMOJIS,
STORE_META
];
@@ -334,6 +336,18 @@ export class BrowserDatabaseService {
return this.getAll<ChatAttachmentMeta>(STORE_ATTACHMENTS);
}
async saveCustomEmoji(emoji: CustomEmoji): Promise<void> {
await this.put(STORE_CUSTOM_EMOJIS, emoji);
}
async getCustomEmojis(): Promise<CustomEmoji[]> {
return this.getAll<CustomEmoji>(STORE_CUSTOM_EMOJIS);
}
async deleteCustomEmoji(emojiId: string): Promise<void> {
await this.deleteRecord(STORE_CUSTOM_EMOJIS, emojiId);
}
/** Delete every attachment record for a specific message. */
async deleteAttachmentsForMessage(messageId: string): Promise<void> {
const attachments = await this.getAllFromIndex<ChatAttachmentMeta>(
@@ -459,6 +473,11 @@ export class BrowserDatabaseService {
const attachmentsStore = this.ensureStore(database, STORE_ATTACHMENTS, { keyPath: 'id' });
this.ensureIndex(attachmentsStore, 'messageId', 'messageId');
const customEmojisStore = this.ensureStore(database, STORE_CUSTOM_EMOJIS, { keyPath: 'id' });
this.ensureIndex(customEmojisStore, 'updatedAt', 'updatedAt');
this.ensureIndex(customEmojisStore, 'creatorUserId', 'creatorUserId');
}
private ensureStore(