4 Commits

Author SHA1 Message Date
dc782003b0 Improve DX for message sending
Some checks failed
Setup testing environment and test the code / build (push) Failing after 0s
Publish to NPM / build-and-publish (release) Successful in 35s
2026-04-09 16:56:11 +02:00
2af9142d6c Improve DX for message sending
Some checks failed
Setup testing environment and test the code / build (push) Failing after 1m39s
Publish to NPM / build-and-publish (release) Failing after 33s
2026-04-09 16:53:08 +02:00
40905b225c Improve DX for message sending
Some checks failed
Setup testing environment and test the code / build (push) Has been cancelled
2026-04-09 16:52:55 +02:00
77e032fdb2 HotFix
All checks were successful
Publish to NPM / build-and-publish (release) Successful in 31s
Setup testing environment and test the code / build (push) Successful in 59s
2026-04-09 12:04:42 +02:00
10 changed files with 18 additions and 15 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@chatenium/chatenium-sdk",
"version": "1.0.9",
"version": "1.0.11",
"description": "A library for interacting with the Chatenium API",
"type": "module",
"main": "dist/index.js",

View File

@@ -64,10 +64,10 @@ export class WebSocketHandler {
if (payl.action == "connectionId") {
console.log("ConnectionID received")
const data: WSConnIdPayload = JSON.parse(payl.data);
this.connectionId = data.connId;
this.listeners.forEach(listener => {
console.log(data.connId, listener)
listener.onNewConnId(data.connId)
this.connectionId = data.connId;
})
} else {
this.listeners.forEach(listener => {

View File

@@ -41,5 +41,5 @@ export interface FileData {
}
export interface FileUploadProgressListener {
fileProgressUpdate: (fileId: string, allChunks: number, chunksDone: number) => void
fileProgressUpdate: (tempMsgId: string, fileId: string, allChunks: number, chunksDone: number) => void
}

View File

@@ -23,7 +23,7 @@ describe("DmService", () => {
it('should send a new message', async () => {
const message = faker.internet.displayName()
const newMessage = await service.sendMessage(message)
const newMessage = await service.sendMessage("", message)
expect(newMessage.message).toBe(message)
});
})

View File

@@ -130,17 +130,18 @@ export class DMService {
/**
* Sends a new message to the chat
* @param tempMsgId
* @param message
* @param replyTo
* @param replyToMessage
* @param attachments
* @param progressListener
*/
async sendMessage(message: string, replyTo: string | null = null, replyToMessage: string | null = null, attachments: FileData[] | null = null, progressListener: FileUploadProgressListener | null = null): Promise<Message> {
async sendMessage(tempMsgId: string, message: string, replyTo: string | null = null, replyToMessage: string | null = null, attachments: FileData[] | null = null, progressListener: FileUploadProgressListener | null = null): Promise<Message> {
let uploadId = ""
if (attachments) {
const uploader = new FileUploadService(this.token)
uploadId = await uploader.uploadFiles(this.chatid, this.userid, attachments, progressListener!)
uploadId = await uploader.uploadFiles(tempMsgId, this.chatid, this.userid, attachments, progressListener!)
}
try {
const resp = await this.client.post<Message>("chat/dm/finishMessage", <FinishMessageReq>{

View File

@@ -4,7 +4,7 @@ import {FileUploadService} from './fileUploadService.js';
describe("fileUploadService", () => {
it('should upload files', async () => {
const service = new FileUploadService("");
const uploadId = await service.uploadFiles("", "", [], {
const uploadId = await service.uploadFiles("","", "", [], {
fileProgressUpdate: () => {}
})
expect(uploadId).toBe("MockUploadId")

View File

@@ -39,12 +39,13 @@ export class FileUploadService {
/**
* Automatically registers the upload, calculates chunksize and uploads each chunk and returns with an uploadId that must be provided when sending the message
* @param tempMsgId
* @param roomId chatid or channelId
* @param userid
* @param files
* @param listener
*/
async uploadFiles(roomId: string, userid: string, files: FileData[], listener: FileUploadProgressListener): Promise<string> {
async uploadFiles(tempMsgId: string, roomId: string, userid: string, files: FileData[], listener: FileUploadProgressListener): Promise<string> {
let registrations: FileUploadRegistration[] = [];
files.forEach(file => {
@@ -63,7 +64,7 @@ export class FileUploadService {
files: registrations,
});
for (let filesUploaded = 0; filesUploaded < files.length; filesUploaded++) {
await this.uploadFile(resp.data.uploadId, roomId, userid, files[filesUploaded], registrations[filesUploaded], listener)
await this.uploadFile(tempMsgId, resp.data.uploadId, roomId, userid, files[filesUploaded], registrations[filesUploaded], listener)
}
await this.finishUpload(roomId, userid, resp.data.uploadId)
return resp.data.uploadId
@@ -93,7 +94,7 @@ export class FileUploadService {
}
}
private async uploadFile(uploadId: string, roomId: string, userid: string, file: FileData, registration: FileUploadRegistration, listener: FileUploadProgressListener): Promise<void> {
private async uploadFile(tempMsgId: string, uploadId: string, roomId: string, userid: string, file: FileData, registration: FileUploadRegistration, listener: FileUploadProgressListener): Promise<void> {
const chunkSize = this.calculateChunkSize(file.data.size);
const totalChunks = Math.ceil(file.data.size / chunkSize);
@@ -105,7 +106,7 @@ export class FileUploadService {
const chunk = new Uint8Array(arrayBuffer.slice(start, end));
const base64 = this.uint8ToBase64(chunk);
await this.uploadChunk(uploadId, roomId, userid, registration.fileId, base64);
listener.fileProgressUpdate(file.fileId, totalChunks, i)
listener.fileProgressUpdate(tempMsgId, file.fileId, totalChunks, i)
}
}

View File

@@ -137,17 +137,18 @@ export class TextChannelServiceService {
/**
* Sends a new message to the chat
* @param tempMsgId
* @param message
* @param replyTo
* @param replyToMessage
* @param attachments
* @param progressListener
*/
async sendMessage(message: string, replyTo: string | null = null, replyToMessage: string | null = null, attachments: FileData[] | null = null, progressListener: FileUploadProgressListener | null = null): Promise<Message> {
async sendMessage(tempMsgId: string, message: string, replyTo: string | null = null, replyToMessage: string | null = null, attachments: FileData[] | null = null, progressListener: FileUploadProgressListener | null = null): Promise<Message> {
let uploadId = ""
if (attachments) {
const uploader = new FileUploadService(this.token)
uploadId = await uploader.uploadFiles(this.channelId, this.userid, attachments, progressListener!)
uploadId = await uploader.uploadFiles(tempMsgId, this.channelId, this.userid, attachments, progressListener!)
}
try {
const resp = await this.client.post<Message>("network/channel/finishMessage", <FinishMessageReq>{

View File

@@ -38,7 +38,7 @@ describe("DmService Integration Testing", () => {
it('should send a message', async () => {
const message = faker.lorem.paragraph()
const newMessage = await service.sendMessage(message)
const newMessage = await service.sendMessage("", message)
expect(newMessage.message).toBe(message)
});

View File

@@ -43,7 +43,7 @@ describe("DmService Integration Testing", () => {
it('should send a message', async () => {
const message = faker.lorem.paragraph()
const newMessage = await service.sendMessage(message)
const newMessage = await service.sendMessage("", message)
expect(newMessage.message).toBe(message)
});