From 34b30de288d8221d3c530799e96bf61a16f2760b Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Wed, 25 Aug 2021 14:47:42 -0700 Subject: [PATCH 1/3] Add a legal disclaimer view --- src/RootView.js | 4 ++++ src/RootViewModel.js | 13 +++++++++++++ src/disclaimer/DisclaimerView.js | 17 +++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 src/disclaimer/DisclaimerView.js diff --git a/src/RootView.js b/src/RootView.js index 315fbd9..64962b8 100644 --- a/src/RootView.js +++ b/src/RootView.js @@ -18,10 +18,12 @@ import {TemplateView} from "./utils/TemplateView.js"; import {OpenLinkView} from "./open/OpenLinkView.js"; import {CreateLinkView} from "./create/CreateLinkView.js"; import {LoadServerPolicyView} from "./policy/LoadServerPolicyView.js"; +import {DisclaimerView} from "./disclaimer/DisclaimerView.js"; export class RootView extends TemplateView { render(t, vm) { return t.div({className: "RootView"}, [ + t.mapView(vm => vm.showDisclaimer, disclaimer => disclaimer ? new DisclaimerView() : null), t.mapView(vm => vm.openLinkViewModel, vm => vm ? new OpenLinkView(vm) : null), t.mapView(vm => vm.createLinkViewModel, vm => vm ? new CreateLinkView(vm) : null), t.mapView(vm => vm.loadServerPolicyViewModel, vm => vm ? new LoadServerPolicyView(vm) : null), @@ -33,6 +35,8 @@ export class RootView extends TemplateView { t.li(externalLink(t, "https://github.com/matrix-org/matrix.to/tree/main/src/open/clients", "Add your app")), t.li({className: {hidden: vm => !vm.hasPreferences}}, t.button({className: "text", onClick: () => vm.clearPreferences()}, "Clear preferences")), + t.li( + t.button({className: "text", onClick: () => vm.openLink("/#/disclaimer/")}, "Disclaimer")), ]) ]) ]); diff --git a/src/RootViewModel.js b/src/RootViewModel.js index 6c05cc9..4a21140 100644 --- a/src/RootViewModel.js +++ b/src/RootViewModel.js @@ -29,6 +29,7 @@ export class RootViewModel extends ViewModel { this.openLinkViewModel = null; this.createLinkViewModel = null; this.loadServerPolicyViewModel = null; + this.showDisclaimer = false; this.preferences.on("canClear", () => { this.emitChange(); }); @@ -50,11 +51,23 @@ export class RootViewModel extends ViewModel { this.emitChange(); } + _showDisclaimer() { + this.showDisclaimer = true; + this.link = null; + this.openLinkViewModel = null; + this.createLinkViewModel = null; + this.loadServerPolicyViewModel = null; + this.emitChange(); + } + updateHash(hash) { + this.showDisclaimer = false; if (hash.startsWith("#/policy/")) { const server = hash.substr(9); this.loadServerPolicyViewModel = new LoadServerPolicyViewModel(this.childOptions({server})); this.loadServerPolicyViewModel.load(); + } else if (hash.startsWith("#/disclaimer/")) { + this._showDisclaimer(); } else { const oldLink = this.link; this.link = Link.parse(hash); diff --git a/src/disclaimer/DisclaimerView.js b/src/disclaimer/DisclaimerView.js new file mode 100644 index 0000000..a728162 --- /dev/null +++ b/src/disclaimer/DisclaimerView.js @@ -0,0 +1,17 @@ +import {TemplateView} from "../utils/TemplateView.js"; + +export class DisclaimerView extends TemplateView { + render(t) { + return t.div({ className: "DisclaimerView card" }, [ + t.h1("Disclaimer"), + t.p( + 'Matrix.to is a service provided by the Matrix.org Foundation ' + + 'which allows you to easily create invites to Matrix rooms and accounts, ' + + 'regardless of your Matrix homeserver. The service is provided "as is" without ' + + 'warranty of any kind, either express, implied, statutory or otherwise. ' + + 'The Matrix.org Foundation shall not be responsible or liable for the room ' + + 'and account contents shared via this service.' + ), + ]); + } +} From 725a7efb3cf053abd271859a642ae63794f576c5 Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Wed, 25 Aug 2021 15:55:10 -0700 Subject: [PATCH 2/3] Add license header I hope that 2021 is the correct year here. --- src/disclaimer/DisclaimerView.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/disclaimer/DisclaimerView.js b/src/disclaimer/DisclaimerView.js index a728162..32893fb 100644 --- a/src/disclaimer/DisclaimerView.js +++ b/src/disclaimer/DisclaimerView.js @@ -1,3 +1,19 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + import {TemplateView} from "../utils/TemplateView.js"; export class DisclaimerView extends TemplateView { From 55d60cb368492481cbd4ffd73a6ff89218c9413d Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Thu, 26 Aug 2021 10:46:04 +0200 Subject: [PATCH 3/3] make it into a link --- src/RootView.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/RootView.js b/src/RootView.js index 64962b8..5669f36 100644 --- a/src/RootView.js +++ b/src/RootView.js @@ -35,8 +35,7 @@ export class RootView extends TemplateView { t.li(externalLink(t, "https://github.com/matrix-org/matrix.to/tree/main/src/open/clients", "Add your app")), t.li({className: {hidden: vm => !vm.hasPreferences}}, t.button({className: "text", onClick: () => vm.clearPreferences()}, "Clear preferences")), - t.li( - t.button({className: "text", onClick: () => vm.openLink("/#/disclaimer/")}, "Disclaimer")), + t.li(t.a({href: "#/disclaimer/"}, "Disclaimer")), ]) ]) ]);