From e7887d4e5ae137a61d683bc748bce5d53c2af92f Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Fri, 6 Sep 2024 14:38:30 +0100 Subject: [PATCH] replicate to mobile --- .../user-photo/user-photo-local-repository.ts | 8 + .../dexie/instance/chat/schema/bold.ts | 4 +- .../dexie/instance/chat/schema/user-foto.ts | 12 + src/app/infra/database/dexie/service.ts | 7 +- ...er-photo-remote-repository.service.spec.ts | 16 + .../user-photo-remote-repository.service.ts | 15 + .../chat/component/messages/messages.page.ts | 2 - .../ui/chat/modal/messages/messages.page.html | 86 +++-- .../ui/chat/modal/messages/messages.page.scss | 25 +- .../ui/chat/modal/messages/messages.page.ts | 303 +++++++++++++++--- 10 files changed, 399 insertions(+), 79 deletions(-) create mode 100644 src/app/core/chat/repository/user-photo/user-photo-local-repository.ts create mode 100644 src/app/infra/database/dexie/instance/chat/schema/user-foto.ts create mode 100644 src/app/module/chat/data/repository/user-foto/user-photo-remote-repository.service.spec.ts create mode 100644 src/app/module/chat/data/repository/user-foto/user-photo-remote-repository.service.ts diff --git a/src/app/core/chat/repository/user-photo/user-photo-local-repository.ts b/src/app/core/chat/repository/user-photo/user-photo-local-repository.ts new file mode 100644 index 000000000..bb57cff85 --- /dev/null +++ b/src/app/core/chat/repository/user-photo/user-photo-local-repository.ts @@ -0,0 +1,8 @@ +import Dexie, { PromiseExtended } from "Dexie"; +import { UserPhotoTable } from "src/app/infra/database/dexie/instance/chat/schema/user-foto"; +import { DexieRepository } from "src/app/infra/repository/dexie/dexie-repository.service"; + + +export abstract class IUserPhotoLocalRepository extends DexieRepository implements IUserPhotoLocalRepository { + +} diff --git a/src/app/infra/database/dexie/instance/chat/schema/bold.ts b/src/app/infra/database/dexie/instance/chat/schema/bold.ts index 9f2ec07c0..d75044759 100644 --- a/src/app/infra/database/dexie/instance/chat/schema/bold.ts +++ b/src/app/infra/database/dexie/instance/chat/schema/bold.ts @@ -6,6 +6,6 @@ export const BoldTableSchema = z.object({ bold: z.number() }) -export type BoldTable = z.infer +export type BoldTable = z.infer; export type DexieBoldTable = EntityTable; -export const BoldTableColumn = 'roomId, bold' \ No newline at end of file +export const BoldTableColumn = 'roomId, bold'; diff --git a/src/app/infra/database/dexie/instance/chat/schema/user-foto.ts b/src/app/infra/database/dexie/instance/chat/schema/user-foto.ts new file mode 100644 index 000000000..fff41734b --- /dev/null +++ b/src/app/infra/database/dexie/instance/chat/schema/user-foto.ts @@ -0,0 +1,12 @@ +import { EntityTable } from 'Dexie'; +import { z } from 'zod'; + +export const UserPhotoTableSchema = z.object({ + wxUserId: z.string(), + blob: z.instanceof(Blob), + attachmentId: z.string() +}) + +export type UserPhotoTable = z.infer +export type DexieUserPhotoTable = EntityTable; +export const UserPhotoTableColumn = 'wxUserId' diff --git a/src/app/infra/database/dexie/service.ts b/src/app/infra/database/dexie/service.ts index e07c27bc1..c36720a2c 100644 --- a/src/app/infra/database/dexie/service.ts +++ b/src/app/infra/database/dexie/service.ts @@ -8,6 +8,7 @@ import { MessageEntity } from 'src/app/core/chat/entity/message'; import { AttachmentTableColumn, DexieAttachmentsTableSchema } from 'src/app/infra/database/dexie/instance/chat/schema/attachment'; import { DexieDistributionTable, DistributionTable, DistributionTableColumn } from './instance/chat/schema/destribution'; import { BoldTableColumn, DexieBoldTable } from './instance/chat/schema/bold'; +import { DexieUserPhotoTable, UserPhotoTable, UserPhotoTableColumn } from './instance/chat/schema/user-foto'; // import FDBFactory from 'fake-indexeddb/lib/FDBFactory'; // import FDBKeyRange from 'fake-indexeddb/lib/FDBKeyRange'; @@ -23,7 +24,8 @@ export const chatDatabase = new Dexie('chat-database-v1',{ typing: DexieTypingsTable, attachment: DexieAttachmentsTableSchema, distribution: DexieDistributionTable, - bold: DexieBoldTable + bold: DexieBoldTable, + userPhoto: DexieUserPhotoTable }; chatDatabase.version(1).stores({ @@ -33,7 +35,8 @@ chatDatabase.version(1).stores({ typing: TypingTableColumn, attachment: AttachmentTableColumn, distribution: DistributionTableColumn, - bold:BoldTableColumn + bold:BoldTableColumn, + userPhotoTable: UserPhotoTableColumn }); chatDatabase.message.mapToClass(MessageEntity) diff --git a/src/app/module/chat/data/repository/user-foto/user-photo-remote-repository.service.spec.ts b/src/app/module/chat/data/repository/user-foto/user-photo-remote-repository.service.spec.ts new file mode 100644 index 000000000..3d52cfe7a --- /dev/null +++ b/src/app/module/chat/data/repository/user-foto/user-photo-remote-repository.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { UserPhotoRemoteRepositoryService } from './user-photo-remote-repository.service'; + +describe('UserPhotoRemoteRepositoryService', () => { + let service: UserPhotoRemoteRepositoryService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UserPhotoRemoteRepositoryService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/module/chat/data/repository/user-foto/user-photo-remote-repository.service.ts b/src/app/module/chat/data/repository/user-foto/user-photo-remote-repository.service.ts new file mode 100644 index 000000000..437316670 --- /dev/null +++ b/src/app/module/chat/data/repository/user-foto/user-photo-remote-repository.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import Dexie, { PromiseExtended } from 'Dexie'; +import { IUserPhotoLocalRepository } from 'src/app/core/chat/repository/user-photo/user-photo-local-repository'; +import { UserPhotoTable, UserPhotoTableSchema } from 'src/app/infra/database/dexie/instance/chat/schema/user-foto'; +import { chatDatabase } from 'src/app/infra/database/dexie/service'; +import { DexieRepository } from 'src/app/infra/repository/dexie/dexie-repository.service'; + +@Injectable({ + providedIn: 'root' +}) +export class UserPhotoRemoteRepository extends DexieRepository implements IUserPhotoLocalRepository { + constructor() { + super(chatDatabase.userPhoto, UserPhotoTableSchema) + } +} diff --git a/src/app/ui/chat/component/messages/messages.page.ts b/src/app/ui/chat/component/messages/messages.page.ts index 1bd57edcc..6872132ad 100644 --- a/src/app/ui/chat/component/messages/messages.page.ts +++ b/src/app/ui/chat/component/messages/messages.page.ts @@ -518,8 +518,6 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy this.messageSendSubject = this.chatServiceService.listenToSendMessage(this.roomId).subscribe((updateMessage) => { - console.log({updateMessage}) - const index = this.messages1[this.roomId].findIndex(e => e?.requestId === updateMessage.requestId); // Use triple equals for comparison if (index !== -1) { // Check if the item was found diff --git a/src/app/ui/chat/modal/messages/messages.page.html b/src/app/ui/chat/modal/messages/messages.page.html index 97ba438e8..0236213ed 100644 --- a/src/app/ui/chat/modal/messages/messages.page.html +++ b/src/app/ui/chat/modal/messages/messages.page.html @@ -29,15 +29,19 @@ -