update, allow disconnecting

This commit is contained in:
marlon-erler
2024-07-08 13:35:26 +02:00
parent 5965ec9de0
commit afccc56b81
7 changed files with 54 additions and 5 deletions
BIN
View File
Binary file not shown.
+25 -2
View File
@@ -321,6 +321,7 @@
} }
// public methods // public methods
connect(address) { connect(address) {
this.disconnect();
this.ws = new WebSocket(address); this.ws = new WebSocket(address);
this.ws.addEventListener("open", this.connectionHandler); this.ws.addEventListener("open", this.connectionHandler);
this.ws.addEventListener("close", this.disconnectionHandler); this.ws.addEventListener("close", this.disconnectionHandler);
@@ -330,6 +331,9 @@
this.messageHandler(data); this.messageHandler(data);
}); });
} }
disconnect() {
this.ws?.close();
}
sendMessage(channel, body) { sendMessage(channel, body) {
const messageObject = { const messageObject = {
messageChannel: channel, messageChannel: channel,
@@ -366,6 +370,7 @@
serverAddress: "Server Address", serverAddress: "Server Address",
serverAddressPlaceholder: "wss://192.168.0.69:3000", serverAddressPlaceholder: "wss://192.168.0.69:3000",
connectToServer: "Connect", connectToServer: "Connect",
disconnect: "Disonnect",
primaryChannel: "Primary channel", primaryChannel: "Primary channel",
leaveChannel: "Leave", leaveChannel: "Leave",
channelPlaceholder: "my-channel", channelPlaceholder: "my-channel",
@@ -404,6 +409,7 @@
serverAddress: "Direcci\xF3n del servidor", serverAddress: "Direcci\xF3n del servidor",
serverAddressPlaceholder: "wss://192.168.0.69:3000", serverAddressPlaceholder: "wss://192.168.0.69:3000",
connectToServer: "Conectar", connectToServer: "Conectar",
disconnect: "Desconectar",
primaryChannel: "Canal principal", primaryChannel: "Canal principal",
leaveChannel: "Salir", leaveChannel: "Salir",
channelPlaceholder: "mi-canal", channelPlaceholder: "mi-canal",
@@ -440,6 +446,7 @@
serverAddress: "Serveraddresse", serverAddress: "Serveraddresse",
serverAddressPlaceholder: "wss://192.168.0.69:3000", serverAddressPlaceholder: "wss://192.168.0.69:3000",
connectToServer: "Verbinden", connectToServer: "Verbinden",
disconnect: "Trennen",
primaryChannel: "Hauptkanal", primaryChannel: "Hauptkanal",
leaveChannel: "Verlassen", leaveChannel: "Verlassen",
channelPlaceholder: "mein-kanal", channelPlaceholder: "mein-kanal",
@@ -490,6 +497,10 @@
[serverAddress], [serverAddress],
() => translation.connectedTo(serverAddress.value) () => translation.connectedTo(serverAddress.value)
); );
var cannotDisonnect = createProxyState(
[isConnected],
() => isConnected.value == false
);
var cannotConnect = createProxyState( var cannotConnect = createProxyState(
[serverAddress, currentAddress, isConnected], [serverAddress, currentAddress, isConnected],
() => serverAddress.value == "" || currentAddress.value == serverAddress.value && isConnected.value == true () => serverAddress.value == "" || currentAddress.value == serverAddress.value && isConnected.value == true
@@ -515,8 +526,8 @@
() => newSecondaryChannelName.value == "" () => newSecondaryChannelName.value == ""
); );
var cannotSendMessage = createProxyState( var cannotSendMessage = createProxyState(
[currentPrimaryChannel, messageBody, senderName], [currentPrimaryChannel, messageBody, senderName, isConnected],
() => currentPrimaryChannel.value == "" || messageBody.value == "" || senderName.value == "" () => isConnected.value == false || currentPrimaryChannel.value == "" || messageBody.value == "" || senderName.value == ""
); );
var messages = restoreListState("messages"); var messages = restoreListState("messages");
function connect() { function connect() {
@@ -525,6 +536,10 @@
isConnected.value = false; isConnected.value = false;
UDN.connect(serverAddress.value); UDN.connect(serverAddress.value);
} }
function disconnect() {
if (cannotDisonnect.value == true) return;
UDN.disconnect();
}
async function sendMessage() { async function sendMessage() {
if (cannotSendMessage.value == true) return; if (cannotSendMessage.value == true) return;
const secondaryChannelNames = [ const secondaryChannelNames = [
@@ -778,6 +793,14 @@
placeholder: translation.serverAddressPlaceholder placeholder: translation.serverAddressPlaceholder
} }
))), /* @__PURE__ */ createElement("div", { class: "flex-row width-input justify-end" }, /* @__PURE__ */ createElement( ))), /* @__PURE__ */ createElement("div", { class: "flex-row width-input justify-end" }, /* @__PURE__ */ createElement(
"button",
{
class: "danger width-50",
"on:click": disconnect,
"toggle:disabled": cannotDisonnect
},
translation.disconnect
), /* @__PURE__ */ createElement(
"button", "button",
{ {
class: "primary width-50", class: "primary width-50",
+4 -1
View File
@@ -949,7 +949,10 @@ main {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.tile, .tile {
word-break: normal;
}
.break-all { .break-all {
word-break: break-all; word-break: break-all;
} }
+1 -1
View File
@@ -2,7 +2,7 @@
"dependencies": { "dependencies": {
"bloatless-react": "^1.2.4", "bloatless-react": "^1.2.4",
"esbuild": "latest", "esbuild": "latest",
"udn-frontend": "^1.0.2" "udn-frontend": "^1.0.3"
}, },
"scripts": { "scripts": {
"build": "esbuild src/index.tsx --bundle --outdir=dist" "build": "esbuild src/index.tsx --bundle --outdir=dist"
+9
View File
@@ -2,7 +2,9 @@ import * as React from "bloatless-react";
import { import {
cannotConnect, cannotConnect,
cannotDisonnect,
connect, connect,
disconnect,
serverAddress, serverAddress,
} from "../model"; } from "../model";
@@ -23,6 +25,13 @@ export function ConnectionInputView() {
</div> </div>
</label> </label>
<div class="flex-row width-input justify-end"> <div class="flex-row width-input justify-end">
<button
class="danger width-50"
on:click={disconnect}
toggle:disabled={cannotDisonnect}
>
{translation.disconnect}
</button>
<button <button
class="primary width-50" class="primary width-50"
on:click={connect} on:click={connect}
+12 -1
View File
@@ -49,6 +49,11 @@ export const connectionMessage = React.createProxyState([serverAddress], () =>
translation.connectedTo(serverAddress.value) translation.connectedTo(serverAddress.value)
); );
export const cannotDisonnect = React.createProxyState(
[isConnected],
() => isConnected.value == false
);
export const cannotConnect = React.createProxyState( export const cannotConnect = React.createProxyState(
[serverAddress, currentAddress, isConnected], [serverAddress, currentAddress, isConnected],
() => () =>
@@ -88,8 +93,9 @@ export const cannotAddSecondaryChannel = React.createProxyState(
); );
export const cannotSendMessage = React.createProxyState( export const cannotSendMessage = React.createProxyState(
[currentPrimaryChannel, messageBody, senderName], [currentPrimaryChannel, messageBody, senderName, isConnected],
() => () =>
isConnected.value == false ||
currentPrimaryChannel.value == "" || currentPrimaryChannel.value == "" ||
messageBody.value == "" || messageBody.value == "" ||
senderName.value == "" senderName.value == ""
@@ -106,6 +112,11 @@ export function connect() {
UDN.connect(serverAddress.value); UDN.connect(serverAddress.value);
} }
export function disconnect() {
if (cannotDisonnect.value == true) return;
UDN.disconnect();
}
export async function sendMessage(): Promise<void> { export async function sendMessage(): Promise<void> {
if (cannotSendMessage.value == true) return; if (cannotSendMessage.value == true) return;
+3
View File
@@ -13,6 +13,7 @@ const englishTranslations = {
serverAddress: "Server Address", serverAddress: "Server Address",
serverAddressPlaceholder: "wss://192.168.0.69:3000", serverAddressPlaceholder: "wss://192.168.0.69:3000",
connectToServer: "Connect", connectToServer: "Connect",
disconnect: "Disonnect",
primaryChannel: "Primary channel", primaryChannel: "Primary channel",
leaveChannel: "Leave", leaveChannel: "Leave",
channelPlaceholder: "my-channel", channelPlaceholder: "my-channel",
@@ -56,6 +57,7 @@ const allTranslations: { [key: string]: typeof englishTranslations } = {
serverAddress: "Dirección del servidor", serverAddress: "Dirección del servidor",
serverAddressPlaceholder: "wss://192.168.0.69:3000", serverAddressPlaceholder: "wss://192.168.0.69:3000",
connectToServer: "Conectar", connectToServer: "Conectar",
disconnect: "Desconectar",
primaryChannel: "Canal principal", primaryChannel: "Canal principal",
leaveChannel: "Salir", leaveChannel: "Salir",
channelPlaceholder: "mi-canal", channelPlaceholder: "mi-canal",
@@ -96,6 +98,7 @@ const allTranslations: { [key: string]: typeof englishTranslations } = {
serverAddress: "Serveraddresse", serverAddress: "Serveraddresse",
serverAddressPlaceholder: "wss://192.168.0.69:3000", serverAddressPlaceholder: "wss://192.168.0.69:3000",
connectToServer: "Verbinden", connectToServer: "Verbinden",
disconnect: "Trennen",
primaryChannel: "Hauptkanal", primaryChannel: "Hauptkanal",
leaveChannel: "Verlassen", leaveChannel: "Verlassen",
channelPlaceholder: "mein-kanal", channelPlaceholder: "mein-kanal",