Added attachment support
This commit is contained in:
@@ -6,11 +6,14 @@ import {IndexedDB} from '../../storage/indexed-db';
|
||||
import {Navbar} from '../elements/navbar/navbar';
|
||||
import {Oimg} from '../elements/oimg/oimg';
|
||||
import {TuiButton, TuiIcon} from '@taiga-ui/core';
|
||||
import {MessageBox} from '../elements/message-box/message-box';
|
||||
import {FileDataWithPreview, MessageBox} from '../elements/message-box/message-box';
|
||||
import {Messages} from '../elements/messages/messages';
|
||||
import {Chat} from '@chatenium/chatenium-sdk/domain/chatService.schema';
|
||||
import {Message} from '@chatenium/chatenium-sdk/domain/dmService.schema';
|
||||
import {MessageBoxViewModel} from '../elements/message-box/message-box-viewmodel';
|
||||
import {WebSocketHandler} from '@chatenium/chatenium-sdk/core/webSocketHandler';
|
||||
import {FileData, FileUploadProgressListener} from '@chatenium/chatenium-sdk/domain/fileUploadService.schema';
|
||||
import {Attachment} from '@chatenium/chatenium-sdk/domain/common.schema';
|
||||
|
||||
@Component({
|
||||
selector: 'app-dm',
|
||||
@@ -36,12 +39,56 @@ export class Dm implements OnInit {
|
||||
return this.serviceManager.dmServices()[this.chatid]
|
||||
}
|
||||
|
||||
async sendMessage(message: string) {
|
||||
await this.store.service.sendMessage(message)
|
||||
async sendMessage(message: string, files: FileDataWithPreview[] | null) {
|
||||
const session = this.serviceManager.currentSession();
|
||||
if (session != null) {
|
||||
await this.store.service.sendMessage(message, null, null, files, <FileUploadProgressListener>{
|
||||
fileProgressUpdate: (fileId, allChunks, chunksDone) => {
|
||||
this.uploadProgressUpdate(fileId, allChunks, chunksDone)
|
||||
}
|
||||
})
|
||||
|
||||
let attachments: Attachment[] = []
|
||||
files?.forEach(file => {
|
||||
attachments.push({
|
||||
fileName: file.name,
|
||||
fileId: file.fileId,
|
||||
type: file.type,
|
||||
format: file.extension,
|
||||
path: file.preview,
|
||||
height: file.height,
|
||||
width: file.width,
|
||||
})
|
||||
})
|
||||
|
||||
this.store.messages.update(value => [...value, {
|
||||
message: message,
|
||||
chatid: this.chatid,
|
||||
files: attachments,
|
||||
replyTo: "",
|
||||
author: session.userData.userid,
|
||||
seen: false,
|
||||
msgid: "",
|
||||
forwardedFrom: "",
|
||||
isEdited: false,
|
||||
sent_at: {T: 0, I: 0},
|
||||
replyToId: "",
|
||||
forwardedFromName: ""
|
||||
}])
|
||||
}
|
||||
}
|
||||
|
||||
uploadProgressUpdate(fileId: string, allChunks: number, chunksDone: number) {
|
||||
console.log(fileId, allChunks, chunksDone)
|
||||
}
|
||||
|
||||
onWsListen(action: string, message: string) {
|
||||
console.log(action, message)
|
||||
switch (action) {
|
||||
case "newMessage": {
|
||||
this.store.messages.update(messages => [...messages, JSON.parse(message)])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
@@ -67,12 +114,13 @@ export class Dm implements OnInit {
|
||||
chatData: signal<Chat>(chatData),
|
||||
messages: signal<Message[]>([]),
|
||||
messageBox: new MessageBoxViewModel(
|
||||
(msg) => this.sendMessage(msg),
|
||||
(msg, files) => this.sendMessage(msg, files),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
this.store.messages.set(await this.serviceManager.dmServices()[chatid].service.get())
|
||||
console.log(WebSocketHandler.getInstance().connId)
|
||||
await this.store.service.joinWebSocketRoom()
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user