change code to pretty

This commit is contained in:
Peter Maquiran
2024-08-07 20:23:33 +01:00
parent 159eb8d350
commit d6057c77c4
9 changed files with 32 additions and 56 deletions
@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
import { RoomListItemOutPutDTO, RoomListOutPutDTO } from '../../dto/room/roomListOutputDTO';
import { Dexie, EntityTable, liveQuery, Observable } from 'Dexie';
import { liveQuery, Observable } from 'Dexie';
import { err, ok, Result } from 'neverthrow';
import { z } from 'zod';
import { ValidateSchema } from 'src/app/services/decorators/validate-schema.decorator';
@@ -8,8 +8,6 @@ import { MemberListUPdateStatusInputDTO } from '../../../domain/use-case/socket/
import { MemberTable } from '../../../infra/database/dexie/schema/members';
import { chatDatabase } from '../../../infra/database/dexie/service';
import { RoomTable, RoomTableSchema } from '../../../infra/database/dexie/schema/room';
import { TypingTableSchema } from '../../../infra/database/dexie/schema/typing';
@Injectable({
providedIn: 'root'
@@ -19,15 +17,6 @@ export class RoomLocalDataSourceService {
constructor() {}
@ValidateSchema(TypingTableSchema)
async addUserTyping(data: any) {
try {
const result = await chatDatabase.typing.add(data)
return ok(result)
} catch (e) {
return err(false)
}
}
async removeUserTyping() {
@@ -2,29 +2,10 @@ import { Injectable } from '@angular/core';
import { z } from 'zod';
import { Dexie, EntityTable, liveQuery, Observable } from 'Dexie';
import { err, ok } from 'neverthrow';
export const TypingSchema = z.object({
id: z.string().optional(),
userId: z.string().optional(),
userName: z.string(),
chatRoomId: z.string(),
entryDate: z.string()
})
export type TypingList = z.infer<typeof TypingSchema>
export type UserTypingList = z.infer<typeof TypingSchema>
import { chatDatabase } from '../../../infra/database/dexie/service';
import { TypingTable } from '../../../infra/database/dexie/schema/typing';
// Database declaration (move this to its own module also)
export const TypingDataSource = new Dexie('UserTyping') as Dexie & {
TypingList: EntityTable<TypingList, 'id'>;
}
TypingDataSource.version(1).stores({
TypingList: 'id, userId, userName, chatRoomId, entryDate'
});
@Injectable({
providedIn: 'root'
@@ -34,21 +15,22 @@ export class UserTypingLocalDataSourceService {
constructor() { }
async addUserTyping(data: TypingList) {
async addUserTyping(data: TypingTable) {
data.id = data.chatRoomId + '@' + data.userName
try {
const result = await TypingDataSource.TypingList.add(data)
const result = await chatDatabase.typing.add(data)
return ok(result)
} catch (e) {
return err(false)
}
}
async removeUserTyping(data: TypingList) {
async removeUserTyping(data: TypingTable) {
const id = data.chatRoomId + '@' + data.userName
try {
const result = await TypingDataSource.TypingList.delete(id)
const result = await chatDatabase.typing.delete(id)
return ok(result)
} catch (e) {
return err(false)
@@ -57,7 +39,7 @@ export class UserTypingLocalDataSourceService {
getUserTypingLive() {
return liveQuery(() => TypingDataSource.TypingList.toArray());
return liveQuery(() => chatDatabase.typing.toArray());
}
}
@@ -1,22 +1,22 @@
import { createAction, createFeatureSelector, createReducer, createSelector, on, props } from '@ngrx/store';
import { TypingList } from './user-typing-local-data-source.service';
import { TypingTable } from '../../../infra/database/dexie/schema/typing';
export const addUserTyping = createAction(
'[Typing] Add User Typing',
props<{ data: TypingList }>()
props<{ data: TypingTable }>()
);
export const removeUserTyping = createAction(
'[Typing] Remove User Typing',
props<{ data: TypingList }>()
props<{ data: TypingTable }>()
);
export const loadUserTyping = createAction('[Typing] Load User Typing');
export const loadUserTypingSuccess = createAction(
'[Typing] Load User Typing Success',
props<{ data: TypingList[] }>()
props<{ data: TypingTable[] }>()
);
export const loadUserTypingFailure = createAction(
@@ -26,7 +26,7 @@ export const loadUserTypingFailure = createAction(
export interface TypingState {
typingList: TypingList[];
typingList: TypingTable[];
error: any;
}
@@ -64,7 +64,7 @@ export const selectAllUserSource = createSelector(
(state: TypingState) => state.typingList
);
export const selectUserTypingList = () => createSelector(
export const selectUserTypingTable = () => createSelector(
selectAllUserSource,
(typingList) => typingList
);
@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { TypingList, UserTypingLocalDataSourceService } from '../data-source/userTyping/user-typing-local-data-source.service';
import { UserTypingLocalDataSourceService } from '../data-source/userTyping/user-typing-local-data-source.service';
import { UserTypingLiveDataSourceService } from '../data-source/userTyping/user-typing-live-data-source.service';
import { SessionStore } from 'src/app/store/session.service';
import { TypingTable } from '../../infra/database/dexie/schema/typing';
@Injectable({
providedIn: 'root'
@@ -17,7 +17,7 @@ export class UserTypingServiceRepository {
return await this.liveDataSource.sendTyping(ChatRoomId)
}
async removeUserTyping(data: TypingList) {
async removeUserTyping(data: TypingTable) {
return await this.localDataSource.removeUserTyping(data)
}
@@ -24,7 +24,7 @@ export class SocketMessageUpdateUseCaseService {
// delete data.chatRoomId
if(result.isOk()) {
console.log('message exist')
console.log('message exist', result.value)
return this.messageLocalDataSourceService.update(result.value.$id, incomingMessage)
} else {
console.log('message else')
@@ -28,4 +28,5 @@ export const MessageTable = z.object({
export type MessageTable = z.infer<typeof MessageTable>
export type DexieMessageTable = EntityTable<MessageTable, '$id'>;
export const messageTableColumn = '++id, roomId, senderId, message, messageType, canEdit, oneShot, requireUnlock'
export const messageTableColumn = '++$id, id, roomId, senderId, message, messageType, canEdit, oneShot, requireUnlock'
@@ -3,11 +3,12 @@ import { EntityTable } from 'Dexie';
export const TypingTableSchema = z.object({
id: z.string().optional(),
userId: z.string(),
roomId: z.string(),
userId: z.string().optional(),
userName: z.string(),
chatRoomId: z.string(),
entryDate: z.string()
})
export type TypingTable = z.infer<typeof TypingTableSchema>
export type DexieTypingsTableSchema = EntityTable<TypingTable, 'id'>;
export const TypingTableColumn = '++id, userId, roomId, entryDate'
export const TypingTableColumn = 'id, userId, userName, chatRoomId, entryDate'
@@ -4,9 +4,10 @@ import { DexieMessageTable, messageTableColumn, MessageTable } from './schema/me
import { DexieMembersTableSchema, MemberTableColumn } from './schema/members';
import { DexieRoomsTableSchema, RoomTableColumn } from './schema/room';
import { DexieTypingsTableSchema, TypingTableColumn } from './schema/typing';
import { MessageEntity } from '../../../domain/entity/message';
// Database declaration (move this to its own module also)
export const chatDatabase = new Dexie('chat-database') as Dexie & {
export const chatDatabase = new Dexie('chat-database-infra') as Dexie & {
message: DexieMessageTable,
members: DexieMembersTableSchema,
room: DexieRoomsTableSchema,
@@ -19,3 +20,5 @@ chatDatabase.version(1).stores({
room: RoomTableColumn,
typing: TypingTableColumn
});
chatDatabase.message.mapToClass(MessageEntity)