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], () =>