add handlers to ConnectionViewModel

This commit is contained in:
marlon-erler
2024-07-20 22:44:23 +02:00
parent 5df6577a8e
commit 6b586224c4
4 changed files with 47 additions and 8 deletions
+19 -3
View File
@@ -1134,7 +1134,7 @@
} }
const cannotConnect = createProxyState( const cannotConnect = createProxyState(
[connectionViewModel2.isConnected], [connectionViewModel2.isConnected],
() => connectionViewModel2.connectionModel.address == address () => connectionViewModel2.isConnected.value == true && connectionViewModel2.connectionModel.address == address
); );
return DeletableListItem( return DeletableListItem(
address, address,
@@ -1295,6 +1295,10 @@
get address() { get address() {
return this.udn.ws?.url; return this.udn.ws?.url;
} }
connectionChangeHandler = () => {
};
messageHandler = () => {
};
// connection // connection
connect = (address) => { connect = (address) => {
this.udn.connect(address); this.udn.connect(address);
@@ -1303,13 +1307,16 @@
this.udn.disconnect(); this.udn.disconnect();
}; };
handleMessage = (data) => { handleMessage = (data) => {
this.messageHandler(data);
}; };
handleConnectionChange = () => { handleConnectionChange = () => {
console.log("connection status:", this.isConnected, this.address); console.log("connection status:", this.isConnected, this.address);
this.connectionChangeHandler();
if (this.isConnected == false) return; if (this.isConnected == false) return;
if (this.address) { if (this.address) {
this.storeAddress(this.address); this.storeAddress(this.address);
} }
this.sendMessagesInOutbox();
}; };
// outbox // outbox
getOutboxMessags = () => { getOutboxMessags = () => {
@@ -1323,7 +1330,7 @@
]); ]);
if (message == void 0) continue; if (message == void 0) continue;
if (checkIsValidObject(message) == false) continue; if (checkIsValidObject(message) == false) continue;
message.push(message); messages.push(message);
} }
return messages; return messages;
}; };
@@ -1370,6 +1377,13 @@
const dirPath = storageKeys.previousAddresses; const dirPath = storageKeys.previousAddresses;
return this.storageModel.list(dirPath); return this.storageModel.list(dirPath);
} }
// handlers
setConnectionChangeHandler = (handler) => {
this.connectionChangeHandler = handler;
};
setMessageHandler = (handler) => {
this.messageHandler = handler;
};
// setup // setup
constructor(storageModel2) { constructor(storageModel2) {
this.udn = new UDNFrontend(); this.udn = new UDNFrontend();
@@ -1413,8 +1427,8 @@
if (this.connectionModel.isConnected == false) return; if (this.connectionModel.isConnected == false) return;
if (this.connectionModel.address) { if (this.connectionModel.address) {
this.serverAddressInput.value = this.connectionModel.address; this.serverAddressInput.value = this.connectionModel.address;
this.previousAddresses.add(this.connectionModel.address);
} }
this.updatePreviousAddresses();
}; };
messageHandler = (data) => { messageHandler = (data) => {
}; };
@@ -1447,6 +1461,8 @@
constructor(connectionModel2) { constructor(connectionModel2) {
this.connectionModel = connectionModel2; this.connectionModel = connectionModel2;
this.updatePreviousAddresses(); this.updatePreviousAddresses();
connectionModel2.setConnectionChangeHandler(this.connectionChangeHandler);
connectionModel2.setMessageHandler(this.messageHandler);
} }
}; };
+21 -3
View File
@@ -20,6 +20,9 @@ export default class ConnectionModel {
return this.udn.ws?.url; return this.udn.ws?.url;
} }
connectionChangeHandler: () => void = () => {};
messageHandler: (data: Message) => void = () => {};
// connection // connection
connect = (address: string): void => { connect = (address: string): void => {
this.udn.connect(address); this.udn.connect(address);
@@ -29,15 +32,21 @@ export default class ConnectionModel {
this.udn.disconnect(); this.udn.disconnect();
}; };
handleMessage = (data: Message): void => {} handleMessage = (data: Message): void => {
this.messageHandler(data);
};
handleConnectionChange = (): void => { handleConnectionChange = (): void => {
console.log("connection status:", this.isConnected, this.address); console.log("connection status:", this.isConnected, this.address);
this.connectionChangeHandler();
if (this.isConnected == false) return; if (this.isConnected == false) return;
if (this.address) { if (this.address) {
this.storeAddress(this.address); this.storeAddress(this.address);
} }
this.sendMessagesInOutbox();
}; };
// outbox // outbox
@@ -54,7 +63,7 @@ export default class ConnectionModel {
if (message == undefined) continue; if (message == undefined) continue;
if (checkIsValidObject(message) == false) continue; if (checkIsValidObject(message) == false) continue;
message.push(message); messages.push(message);
} }
return messages; return messages;
@@ -115,6 +124,15 @@ export default class ConnectionModel {
return this.storageModel.list(dirPath); return this.storageModel.list(dirPath);
} }
// handlers
setConnectionChangeHandler = (handler: () => void): void => {
this.connectionChangeHandler = handler;
};
setMessageHandler = (handler: (data: Message) => void): void => {
this.messageHandler = handler;
};
// setup // setup
constructor(storageModel: StorageModel) { constructor(storageModel: StorageModel) {
// create frontend // create frontend
@@ -132,4 +150,4 @@ export default class ConnectionModel {
this.handleConnectionChange(); this.handleConnectionChange();
}; };
} }
} }
+3 -1
View File
@@ -14,7 +14,9 @@ export function ConnectionModal(connectionViewModel: ConnectionViewModel) {
const cannotConnect = React.createProxyState( const cannotConnect = React.createProxyState(
[connectionViewModel.isConnected], [connectionViewModel.isConnected],
() => connectionViewModel.connectionModel.address == address () =>
connectionViewModel.isConnected.value == true &&
connectionViewModel.connectionModel.address == address
); );
return DeletableListItem( return DeletableListItem(
+4 -1
View File
@@ -38,8 +38,8 @@ export default class ConnectionViewModel {
if (this.connectionModel.address) { if (this.connectionModel.address) {
this.serverAddressInput.value = this.connectionModel.address; this.serverAddressInput.value = this.connectionModel.address;
this.previousAddresses.add(this.connectionModel.address);
} }
this.updatePreviousAddresses();
}; };
messageHandler = (data: Message): void => {}; messageHandler = (data: Message): void => {};
@@ -80,5 +80,8 @@ export default class ConnectionViewModel {
constructor(connectionModel: ConnectionModel) { constructor(connectionModel: ConnectionModel) {
this.connectionModel = connectionModel; this.connectionModel = connectionModel;
this.updatePreviousAddresses(); this.updatePreviousAddresses();
connectionModel.setConnectionChangeHandler(this.connectionChangeHandler);
connectionModel.setMessageHandler(this.messageHandler);
} }
} }