diff --git a/dist/index.js b/dist/index.js
index cda1bff8..05c9162b 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -596,7 +596,7 @@
isConnected = new State(false);
isShowingConnectionModal = new State(false);
previousAddresses = new ListState();
- // toggles
+ // guards
cannotConnect = createProxyState(
[this.serverAddressInput, this.isConnected],
() => this.isConnected.value == true && this.serverAddressInput.value == this.connectionModel.address || this.serverAddressInput.value == ""
@@ -605,6 +605,10 @@
[this.isConnected],
() => this.isConnected.value == false
);
+ hasNoPreviousConnections = createProxyState(
+ [this.previousAddresses],
+ () => this.previousAddresses.value.size == 0
+ );
// handlers
connectionChangeHandler = () => {
this.isConnected.value = this.connectionModel.isConnected;
@@ -695,7 +699,8 @@
{
class: "flex justify-center",
"aria-label": translations.homePage.manageConnectionsAudioLabel,
- "on:click": connectionViewModel2.showConnectionModal
+ "on:click": connectionViewModel2.showConnectionModal,
+ "toggle:disabled": connectionViewModel2.hasNoPreviousConnections
},
/* @__PURE__ */ createElement("span", { class: "icon" }, "history")
), /* @__PURE__ */ createElement(
@@ -791,7 +796,7 @@
// state
nameInput = new State("");
firstDayOfWeekInput = new State(0);
- // toggles
+ // guards
cannotSetName = createProxyState(
[this.nameInput],
() => this.nameInput.value == "" || this.nameInput.value == this.settingsModel.username
diff --git a/src/View/homePage.tsx b/src/View/homePage.tsx
index 3c1fae89..fd009a63 100644
--- a/src/View/homePage.tsx
+++ b/src/View/homePage.tsx
@@ -51,6 +51,7 @@ export function HomePage(
class="flex justify-center"
aria-label={translations.homePage.manageConnectionsAudioLabel}
on:click={connectionViewModel.showConnectionModal}
+ toggle:disabled={connectionViewModel.hasNoPreviousConnections}
>
history
diff --git a/src/ViewModel/connectionViewModel.tsx b/src/ViewModel/connectionViewModel.tsx
index 61f1257e..987cb02c 100644
--- a/src/ViewModel/connectionViewModel.tsx
+++ b/src/ViewModel/connectionViewModel.tsx
@@ -15,7 +15,7 @@ export default class ConnectionViewModel {
previousAddresses: React.ListState = new React.ListState();
- // toggles
+ // guards
cannotConnect: React.State = React.createProxyState(
[this.serverAddressInput, this.isConnected],
() =>
@@ -27,6 +27,10 @@ export default class ConnectionViewModel {
[this.isConnected],
() => this.isConnected.value == false
);
+ hasNoPreviousConnections: React.State = React.createProxyState(
+ [this.previousAddresses],
+ () => this.previousAddresses.value.size == 0
+ );
// handlers
connectionChangeHandler = (): void => {
@@ -45,11 +49,11 @@ export default class ConnectionViewModel {
connect = (): void => {
this.connectToAddress(this.serverAddressInput.value);
};
-
+
connectToAddress = (address: string): void => {
this.connectionModel.connect(address);
- }
-
+ };
+
disconnect = (): void => {
this.connectionModel.disconnect();
};
@@ -57,7 +61,7 @@ export default class ConnectionViewModel {
removePreviousAddress = (address: string): void => {
this.connectionModel.removeAddress(address);
this.updatePreviousAddresses();
- }
+ };
// view methods
showConnectionModal = (): void => {
@@ -71,7 +75,7 @@ export default class ConnectionViewModel {
updatePreviousAddresses = (): void => {
this.previousAddresses.clear();
this.previousAddresses.add(...this.connectionModel.addresses);
- }
+ };
// init
constructor(storageModel: StorageModel) {
diff --git a/src/ViewModel/settingsViewModel.ts b/src/ViewModel/settingsViewModel.ts
index ad33262e..5d48d0ef 100644
--- a/src/ViewModel/settingsViewModel.ts
+++ b/src/ViewModel/settingsViewModel.ts
@@ -10,7 +10,7 @@ export default class SettingsViewModel {
nameInput: React.State = new React.State("");
firstDayOfWeekInput: React.State = new React.State(0);
- // toggles
+ // guards
cannotSetName: React.State = React.createProxyState(
[this.nameInput],
() =>