make file transfer initiate automatically

This commit is contained in:
marlon-erler
2026-04-06 15:50:13 +00:00
parent 7eaf07918c
commit 3fb9785882
15 changed files with 112 additions and 53 deletions
+31 -3
View File
@@ -17,9 +17,13 @@ export default class FileTransferModel {
storageModel: StorageModel;
connectionModel: ConnectionModel;
static READY_MESSAGE = "ready";
// data
transferData: TransferData | undefined;
fileHandlerManager: HandlerManager<string> = new HandlerManager();
readyToSendHandlerManager: HandlerManager<boolean> = new HandlerManager();
direction: TransferDirections = TransferDirections.Send;
// general
generateTransferData = (): TransferData => {
@@ -31,16 +35,36 @@ export default class FileTransferModel {
return transferData;
};
prepareToReceive = (transferData: TransferData) => {
prepareToSend = (): void => {
this.direction = TransferDirections.Send;
this.connectionModel.addChannel(this.transferData.channel);
};
prepareToReceive = (transferData: TransferData): void => {
this.direction = TransferDirections.Receive;
this.connectionModel.addChannel(transferData.channel);
this.transferData = transferData;
this.connectionModel.sendPlainMessage(
transferData.channel,
FileTransferModel.READY_MESSAGE,
);
};
// handlers
handleMessage = (data: Message): void => {
console.log(this.transferData);
if (data.messageChannel != this.transferData.channel) return;
if (
data.messageBody == FileTransferModel.READY_MESSAGE &&
this.direction == TransferDirections.Send
) {
console.log("TRIGGER");
this.readyToSendHandlerManager.trigger(true);
}
if (this.transferData == undefined) return;
if (data.messageBody == undefined) return;
if (data.messageChannel != this.transferData.channel) return;
this.handleFile(data.messageBody);
};
@@ -52,7 +76,6 @@ export default class FileTransferModel {
encryptedFileData,
this.transferData.key,
);
console.log(decrypted);
const parsed: any = parse(decrypted);
const isFileData: boolean = checkMatchesObjectStructure(
@@ -131,3 +154,8 @@ export const FileDataReference: FileData = {
path: [""],
body: "",
};
export enum TransferDirections {
Send,
Receive,
}