From cf489284c946bd4f5275002748910f5b8484bc40 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 1 Dec 2020 19:00:26 +0100 Subject: [PATCH] add weechat --- css/main.css | 3 + images/client-icons/weechat.svg | 170 ++++++++++++++++++++++++++++++++ src/RootViewModel.js | 4 +- src/client/clients/Weechat.js | 42 ++++++++ 4 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 images/client-icons/weechat.svg create mode 100644 src/client/clients/Weechat.js diff --git a/css/main.css b/css/main.css index 668224a..e9e4d2c 100644 --- a/css/main.css +++ b/css/main.css @@ -169,6 +169,9 @@ button.text:hover { background-image: url('../images/client-icons/element.svg'); } +.ClientView .icon.weechat { + background-image: url('../images/client-icons/weechat.svg'); +} button.primary, a.primary, button.secondary, a.secondary { text-decoration: none; diff --git a/images/client-icons/weechat.svg b/images/client-icons/weechat.svg new file mode 100644 index 0000000..96b92b1 --- /dev/null +++ b/images/client-icons/weechat.svg @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/RootViewModel.js b/src/RootViewModel.js index dc41435..222bd0a 100644 --- a/src/RootViewModel.js +++ b/src/RootViewModel.js @@ -18,6 +18,7 @@ import {Link} from "./Link.js"; import {ViewModel} from "./utils/ViewModel.js"; import {PreviewViewModel} from "./preview/PreviewViewModel.js"; import {Element} from "./client/clients/Element.js"; +import {Weechat} from "./client/clients/Weechat.js"; import {Platform} from "./client/Platform.js"; export class RootViewModel extends ViewModel { @@ -30,11 +31,10 @@ export class RootViewModel extends ViewModel { _updateChildVMs(oldLink) { if (this.link) { if (!oldLink || !oldLink.equals(this.link)) { - const element = new Element(); this.previewViewModel = new PreviewViewModel(this.childOptions({ link: this.link, consentedServers: this.link.servers, - clients: [element] + clients: [new Element(), new Weechat()] })); this.previewViewModel.load(); } diff --git a/src/client/clients/Weechat.js b/src/client/clients/Weechat.js new file mode 100644 index 0000000..8894e97 --- /dev/null +++ b/src/client/clients/Weechat.js @@ -0,0 +1,42 @@ +/* +Copyright 2020 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 {Maturity, Platform, LinkKind, WebsiteLink} from "../types.js"; + +/** + * Information on how to deep link to a given matrix client. + */ +export class Weechat { + /* should only contain alphanumerical and -_, no dots (needs to be usable as css class) */ + get id() { return "weechat"; } + getName(platform) { return "Weechat"; } + get platforms() { return [Platform.Windows, Platform.macOS, Platform.Linux]; } + get description() { return 'Command-line Matrix interface using Weechat'; } + getMaturity(platform) { return Maturity.Beta; } + getDeepLink(platform, link) {} + canInterceptMatrixToLinks(platform) { return false; } + + getLinkInstructions(platform, link) { + switch (link.kind) { + case LinkKind.User: return `Type /invite ${link.identifier}`; + case LinkKind.Room: return `Type /join ${link.identifier}`; + } + } + + getInstallLinks(platform) { + return [new WebsiteLink("https://github.com/poljar/weechat-matrix")]; + } +} \ No newline at end of file