improve connection section
This commit is contained in:
Vendored
+20
-7
@@ -580,9 +580,13 @@
|
|||||||
|
|
||||||
// src/Model/model.ts
|
// src/Model/model.ts
|
||||||
var UDN = new UDNFrontend();
|
var UDN = new UDNFrontend();
|
||||||
var currentAddress = new State("");
|
|
||||||
var isConnected = new State(false);
|
var isConnected = new State(false);
|
||||||
var serverAddressInput = restoreState("socket-address", "");
|
var serverAddressInput = restoreState("socket-address", "");
|
||||||
|
var didRequestConnection = restoreState(
|
||||||
|
"did-request-connection",
|
||||||
|
false
|
||||||
|
);
|
||||||
|
var currentAddress = restoreState("current-address", "");
|
||||||
var cannotDisonnect = createProxyState(
|
var cannotDisonnect = createProxyState(
|
||||||
[isConnected],
|
[isConnected],
|
||||||
() => isConnected.value == false
|
() => isConnected.value == false
|
||||||
@@ -591,16 +595,25 @@
|
|||||||
[serverAddressInput, currentAddress, isConnected],
|
[serverAddressInput, currentAddress, isConnected],
|
||||||
() => serverAddressInput.value == "" || currentAddress.value == serverAddressInput.value && isConnected.value == true
|
() => serverAddressInput.value == "" || currentAddress.value == serverAddressInput.value && isConnected.value == true
|
||||||
);
|
);
|
||||||
|
var cannotResetAddress = createProxyState(
|
||||||
|
[serverAddressInput, currentAddress],
|
||||||
|
() => serverAddressInput.value == currentAddress.value
|
||||||
|
);
|
||||||
function connect() {
|
function connect() {
|
||||||
if (cannotConnect.value == true) return;
|
if (cannotConnect.value == true) return;
|
||||||
currentAddress.value = serverAddressInput.value;
|
currentAddress.value = serverAddressInput.value;
|
||||||
isConnected.value = false;
|
isConnected.value = false;
|
||||||
|
didRequestConnection.value = true;
|
||||||
UDN.connect(serverAddressInput.value);
|
UDN.connect(serverAddressInput.value);
|
||||||
}
|
}
|
||||||
function disconnect() {
|
function disconnect() {
|
||||||
|
didRequestConnection.value = false;
|
||||||
if (cannotDisonnect.value == true) return;
|
if (cannotDisonnect.value == true) return;
|
||||||
UDN.disconnect();
|
UDN.disconnect();
|
||||||
}
|
}
|
||||||
|
function resetAddressInput() {
|
||||||
|
serverAddressInput.value = currentAddress.value;
|
||||||
|
}
|
||||||
UDN.onconnect = () => {
|
UDN.onconnect = () => {
|
||||||
isConnected.value = true;
|
isConnected.value = true;
|
||||||
};
|
};
|
||||||
@@ -644,7 +657,7 @@
|
|||||||
var isEncryptionUnavailable = window.crypto.subtle == void 0;
|
var isEncryptionUnavailable = window.crypto.subtle == void 0;
|
||||||
var senderName = restoreState("sender-name", "");
|
var senderName = restoreState("sender-name", "");
|
||||||
var selectedChat = new State(void 0);
|
var selectedChat = new State(void 0);
|
||||||
if (serverAddressInput.value != "") {
|
if (serverAddressInput.value != "" && didRequestConnection.value == true) {
|
||||||
connect();
|
connect();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -879,7 +892,7 @@
|
|||||||
))), /* @__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",
|
"button",
|
||||||
{
|
{
|
||||||
class: "danger width-100 flex-1",
|
class: "danger width-100 flex-1 justify-center",
|
||||||
"aria-label": translation.disconnect,
|
"aria-label": translation.disconnect,
|
||||||
"on:click": disconnect,
|
"on:click": disconnect,
|
||||||
"toggle:disabled": cannotDisonnect
|
"toggle:disabled": cannotDisonnect
|
||||||
@@ -888,16 +901,16 @@
|
|||||||
), /* @__PURE__ */ createElement(
|
), /* @__PURE__ */ createElement(
|
||||||
"button",
|
"button",
|
||||||
{
|
{
|
||||||
class: "width-100 flex-1",
|
class: "width-100 flex-1 justify-center",
|
||||||
"aria-label": translation.resetAddress,
|
"aria-label": translation.resetAddress,
|
||||||
"on:click": disconnect,
|
"on:click": resetAddressInput,
|
||||||
"toggle:disabled": cannotDisonnect
|
"toggle:disabled": cannotResetAddress
|
||||||
},
|
},
|
||||||
/* @__PURE__ */ createElement("span", { class: "icon" }, "undo")
|
/* @__PURE__ */ createElement("span", { class: "icon" }, "undo")
|
||||||
), /* @__PURE__ */ createElement(
|
), /* @__PURE__ */ createElement(
|
||||||
"button",
|
"button",
|
||||||
{
|
{
|
||||||
class: "primary width-100 flex-1",
|
class: "primary width-100 flex-1 justify-center",
|
||||||
"aria-label": translation.connectToServer,
|
"aria-label": translation.connectToServer,
|
||||||
"on:click": connect,
|
"on:click": connect,
|
||||||
"toggle:disabled": cannotConnect
|
"toggle:disabled": cannotConnect
|
||||||
|
|||||||
+20
-6
@@ -8,10 +8,14 @@ export const UDN = new UDNFrontend();
|
|||||||
|
|
||||||
// CONNECTION
|
// CONNECTION
|
||||||
// state
|
// state
|
||||||
export const currentAddress = new React.State("");
|
|
||||||
export const isConnected = new React.State(false);
|
export const isConnected = new React.State(false);
|
||||||
|
|
||||||
export const serverAddressInput = React.restoreState("socket-address", "");
|
export const serverAddressInput = React.restoreState("socket-address", "");
|
||||||
|
export const didRequestConnection = React.restoreState(
|
||||||
|
"did-request-connection",
|
||||||
|
false
|
||||||
|
);
|
||||||
|
export const currentAddress = React.restoreState("current-address", "");
|
||||||
|
|
||||||
export const cannotDisonnect = React.createProxyState(
|
export const cannotDisonnect = React.createProxyState(
|
||||||
[isConnected],
|
[isConnected],
|
||||||
@@ -26,21 +30,31 @@ export const cannotConnect = React.createProxyState(
|
|||||||
isConnected.value == true)
|
isConnected.value == true)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const cannotResetAddress = React.createProxyState(
|
||||||
|
[serverAddressInput, currentAddress],
|
||||||
|
() => serverAddressInput.value == currentAddress.value
|
||||||
|
);
|
||||||
|
|
||||||
// methods
|
// methods
|
||||||
export function connect(): void {
|
export function connect(): void {
|
||||||
if (cannotConnect.value == true) return;
|
if (cannotConnect.value == true) return;
|
||||||
|
|
||||||
currentAddress.value = serverAddressInput.value;
|
currentAddress.value = serverAddressInput.value;
|
||||||
|
|
||||||
isConnected.value = false;
|
isConnected.value = false;
|
||||||
|
didRequestConnection.value = true;
|
||||||
|
|
||||||
UDN.connect(serverAddressInput.value);
|
UDN.connect(serverAddressInput.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function disconnect(): void {
|
export function disconnect(): void {
|
||||||
|
didRequestConnection.value = false;
|
||||||
if (cannotDisonnect.value == true) return;
|
if (cannotDisonnect.value == true) return;
|
||||||
UDN.disconnect();
|
UDN.disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function resetAddressInput(): void {
|
export function resetAddressInput(): void {
|
||||||
this.serverAddressInput.value = this.serverAddress.value;
|
serverAddressInput.value = currentAddress.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// listeners
|
// listeners
|
||||||
@@ -84,16 +98,16 @@ export function deleteMailbox(): void {
|
|||||||
UDN.onmailboxcreate = (id) => {
|
UDN.onmailboxcreate = (id) => {
|
||||||
mailboxId.value = id;
|
mailboxId.value = id;
|
||||||
UDN.connectMailbox(id);
|
UDN.connectMailbox(id);
|
||||||
}
|
};
|
||||||
|
|
||||||
UDN.onmailboxconnect = () => {
|
UDN.onmailboxconnect = () => {
|
||||||
isMailboxActive.value = true;
|
isMailboxActive.value = true;
|
||||||
}
|
};
|
||||||
|
|
||||||
UDN.onmailboxdelete = () => {
|
UDN.onmailboxdelete = () => {
|
||||||
isMailboxActive.value = false;
|
isMailboxActive.value = false;
|
||||||
mailboxId.value = "";
|
mailboxId.value = "";
|
||||||
}
|
};
|
||||||
|
|
||||||
// MISC
|
// MISC
|
||||||
export const isEncryptionUnavailable = window.crypto.subtle == undefined;
|
export const isEncryptionUnavailable = window.crypto.subtle == undefined;
|
||||||
@@ -102,6 +116,6 @@ export const senderName = React.restoreState("sender-name", "");
|
|||||||
export const selectedChat = new React.State<Chat | undefined>(undefined);
|
export const selectedChat = new React.State<Chat | undefined>(undefined);
|
||||||
|
|
||||||
// INIT
|
// INIT
|
||||||
if (serverAddressInput.value != "") {
|
if (serverAddressInput.value != "" && didRequestConnection.value == true) {
|
||||||
connect();
|
connect();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,10 +5,12 @@ import {
|
|||||||
cannotDeleteMailbox,
|
cannotDeleteMailbox,
|
||||||
cannotDisonnect,
|
cannotDisonnect,
|
||||||
cannotRequestMailbox,
|
cannotRequestMailbox,
|
||||||
|
cannotResetAddress,
|
||||||
connect,
|
connect,
|
||||||
deleteMailbox,
|
deleteMailbox,
|
||||||
disconnect,
|
disconnect,
|
||||||
requestMailbox,
|
requestMailbox,
|
||||||
|
resetAddressInput,
|
||||||
serverAddressInput,
|
serverAddressInput,
|
||||||
} from "../Model/model";
|
} from "../Model/model";
|
||||||
|
|
||||||
@@ -30,7 +32,7 @@ export function ConnectionSection() {
|
|||||||
</label>
|
</label>
|
||||||
<div class="flex-row width-input justify-end">
|
<div class="flex-row width-input justify-end">
|
||||||
<button
|
<button
|
||||||
class="danger width-100 flex-1"
|
class="danger width-100 flex-1 justify-center"
|
||||||
aria-label={translation.disconnect}
|
aria-label={translation.disconnect}
|
||||||
on:click={disconnect}
|
on:click={disconnect}
|
||||||
toggle:disabled={cannotDisonnect}
|
toggle:disabled={cannotDisonnect}
|
||||||
@@ -38,15 +40,15 @@ export function ConnectionSection() {
|
|||||||
<span class="icon">close</span>
|
<span class="icon">close</span>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="width-100 flex-1"
|
class="width-100 flex-1 justify-center"
|
||||||
aria-label={translation.resetAddress}
|
aria-label={translation.resetAddress}
|
||||||
on:click={disconnect}
|
on:click={resetAddressInput}
|
||||||
toggle:disabled={cannotDisonnect}
|
toggle:disabled={cannotResetAddress}
|
||||||
>
|
>
|
||||||
<span class="icon">undo</span>
|
<span class="icon">undo</span>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="primary width-100 flex-1"
|
class="primary width-100 flex-1 justify-center"
|
||||||
aria-label={translation.connectToServer}
|
aria-label={translation.connectToServer}
|
||||||
on:click={connect}
|
on:click={connect}
|
||||||
toggle:disabled={cannotConnect}
|
toggle:disabled={cannotConnect}
|
||||||
|
|||||||
Reference in New Issue
Block a user