add button to connect to previous connection

This commit is contained in:
marlon-erler
2024-07-20 03:39:47 +02:00
parent bc34e4d7fe
commit f1574c2e54
5 changed files with 80 additions and 28 deletions
+31 -13
View File
@@ -238,8 +238,9 @@
addChatButton: "Add chat" addChatButton: "Add chat"
}, },
connectionModal: { connectionModal: {
connectionModalHeadline: "Manage Connections" connectionModalHeadline: "Manage Connections",
/// ///
connectButtonAudioLabel: "connect"
} }
}; };
var allTranslations = { var allTranslations = {
@@ -249,8 +250,8 @@
var translations = allTranslations[language] || allTranslations.en; var translations = allTranslations[language] || allTranslations.en;
// src/View/Components/deletableListItem.tsx // src/View/Components/deletableListItem.tsx
function DeletableListItem(text, ondelete) { function DeletableListItem(text, primaryButton, ondelete) {
return /* @__PURE__ */ createElement("div", { class: "tile flex-row justify-apart align-center padding-0" }, /* @__PURE__ */ createElement("span", { class: "padding-h" }, text), /* @__PURE__ */ createElement( return /* @__PURE__ */ createElement("div", { class: "tile flex-row justify-apart align-center padding-0" }, /* @__PURE__ */ createElement("span", { class: "padding-h" }, text), /* @__PURE__ */ createElement("div", { class: "flex-row justify-end" }, primaryButton, /* @__PURE__ */ createElement(
"button", "button",
{ {
class: "danger", class: "danger",
@@ -258,15 +259,35 @@
"on:click": ondelete "on:click": ondelete
}, },
/* @__PURE__ */ createElement("span", { class: "icon" }, "delete") /* @__PURE__ */ createElement("span", { class: "icon" }, "delete")
)); )));
} }
// src/View/Modals/connectionModal.tsx // src/View/Modals/connectionModal.tsx
function ConnectionModal(connectionViewModel2) { function ConnectionModal(connectionViewModel2) {
const previousAddressConverter = (address) => { const previousAddressConverter = (address) => {
return DeletableListItem(address, () => { function connnect() {
connectionViewModel2.connectToAddress(address);
}
const cannotConnect = createProxyState(
[connectionViewModel2.isConnected],
() => connectionViewModel2.connectionModel.address == address
);
return DeletableListItem(
address,
/* @__PURE__ */ createElement(
"button",
{
class: "primary",
"on:click": connnect,
"toggle:disabled": cannotConnect,
"aria-label": translations.connectionModal.connectButtonAudioLabel
},
/* @__PURE__ */ createElement("span", { class: "icon" }, "link")
),
() => {
connectionViewModel2.removePreviousAddress(address); connectionViewModel2.removePreviousAddress(address);
}); }
);
}; };
return /* @__PURE__ */ createElement( return /* @__PURE__ */ createElement(
"div", "div",
@@ -597,7 +618,10 @@
}; };
// methods // methods
connect = () => { connect = () => {
this.connectionModel.connect(this.serverAddressInput.value); this.connectToAddress(this.serverAddressInput.value);
};
connectToAddress = (address) => {
this.connectionModel.connect(address);
}; };
disconnect = () => { disconnect = () => {
this.connectionModel.disconnect(); this.connectionModel.disconnect();
@@ -791,13 +815,7 @@
}; };
// src/index.tsx // src/index.tsx
localStorage.clear();
var storageModel = new StorageModel(); var storageModel = new StorageModel();
storageModel.store(["a", "b", "b1"], "");
storageModel.store(["a", "b", "b2"], "");
console.log(JSON.stringify(storageModel.storageEntryTree, null, 4));
storageModel.remove(["a", "b", "b2"]);
console.log(JSON.stringify(storageModel.storageEntryTree, null, 4));
var settingsViewModel = new SettingsViewModel(storageModel); var settingsViewModel = new SettingsViewModel(storageModel);
var connectionViewModel = new ConnectionViewModel(storageModel); var connectionViewModel = new ConnectionViewModel(storageModel);
document.querySelector("main").append( document.querySelector("main").append(
+9 -1
View File
@@ -2,11 +2,18 @@ import * as React from "bloatless-react";
import { translations } from "../translations"; import { translations } from "../translations";
export function DeletableListItem(text: string, ondelete: () => void) { export function DeletableListItem(
text: string,
primaryButton: HTMLElement,
ondelete: () => void
) {
return ( return (
<div class="tile flex-row justify-apart align-center padding-0"> <div class="tile flex-row justify-apart align-center padding-0">
<span class="padding-h">{text}</span> <span class="padding-h">{text}</span>
<div class="flex-row justify-end">
{primaryButton}
<button <button
class="danger" class="danger"
aria-label={translations.general.deleteItemButtonAudioLabel} aria-label={translations.general.deleteItemButtonAudioLabel}
@@ -15,5 +22,6 @@ export function DeletableListItem(text: string, ondelete: () => void) {
<span class="icon">delete</span> <span class="icon">delete</span>
</button> </button>
</div> </div>
</div>
); );
} }
+22 -2
View File
@@ -8,9 +8,29 @@ export function ConnectionModal(connectionViewModel: ConnectionViewModel) {
const previousAddressConverter: React.StateItemConverter<string> = ( const previousAddressConverter: React.StateItemConverter<string> = (
address: string address: string
) => { ) => {
return DeletableListItem(address, () => { function connnect() {
connectionViewModel.connectToAddress(address);
}
const cannotConnect = React.createProxyState(
[connectionViewModel.isConnected],
() => connectionViewModel.connectionModel.address == address
);
return DeletableListItem(
address,
<button
class="primary"
on:click={connnect}
toggle:disabled={cannotConnect}
aria-label={translations.connectionModal.connectButtonAudioLabel}
>
<span class="icon">link</span>
</button>,
() => {
connectionViewModel.removePreviousAddress(address); connectionViewModel.removePreviousAddress(address);
}); }
);
}; };
return ( return (
+2
View File
@@ -69,6 +69,8 @@ const englishTranslations = {
connectionModalHeadline: "Manage Connections", connectionModalHeadline: "Manage Connections",
/// ///
connectButtonAudioLabel: "connect",
}, },
}; };
+5 -1
View File
@@ -43,9 +43,13 @@ export default class ConnectionViewModel {
// methods // methods
connect = (): void => { connect = (): void => {
this.connectionModel.connect(this.serverAddressInput.value); this.connectToAddress(this.serverAddressInput.value);
}; };
connectToAddress = (address: string): void => {
this.connectionModel.connect(address);
}
disconnect = (): void => { disconnect = (): void => {
this.connectionModel.disconnect(); this.connectionModel.disconnect();
}; };