diff --git a/images/client-icons/fractal.png b/images/client-icons/fractal.png new file mode 100644 index 0000000..e60c89c Binary files /dev/null and b/images/client-icons/fractal.png differ diff --git a/images/client-icons/nheko.svg b/images/client-icons/nheko.svg new file mode 100644 index 0000000..ce3ec40 --- /dev/null +++ b/images/client-icons/nheko.svg @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/images/flathub-badge.svg b/images/flathub-badge.svg new file mode 100644 index 0000000..ad3b04a --- /dev/null +++ b/images/flathub-badge.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/open/clients/Fractal.js b/src/open/clients/Fractal.js new file mode 100644 index 0000000..be51744 --- /dev/null +++ b/src/open/clients/Fractal.js @@ -0,0 +1,51 @@ +/* +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, FlathubLink} from "../types.js"; + +/** + * Information on how to deep link to a given matrix client. + */ +export class Fractal { + get id() { return "fractal"; } + getName(platform) { return "Fractal"; } + get icon() { return "images/client-icons/fractal.png"; } + get author() { return "Daniel Garcia Moreno"; } + get homepage() { return "https://gitlab.gnome.org/GNOME/fractal"; } + get platforms() { return [Platform.Linux]; } + get description() { return 'Fractal is a Matrix Client written in Rust'; } + getMaturity(platform) { return Maturity.Beta; } + getDeepLink(platform, link) {} + canInterceptMatrixToLinks(platform) { return false; } + + getLinkInstructions(platform, link) { + if (link.kind === LinkKind.User || link.kind === LinkKind.Room) { + return "Click the '+' button in the top right and paste the identifier"; + } + } + + getCopyString(platform, link) { + if (link.kind === LinkKind.User || link.kind === LinkKind.Room) { + return link.identifier; + } + } + + getInstallLinks(platform) { + if (platform === Platform.Linux) { + return [new FlathubLink("org.gnome.Fractal")]; + } + } +} diff --git a/src/open/clients/Nheko.js b/src/open/clients/Nheko.js new file mode 100644 index 0000000..064f6bd --- /dev/null +++ b/src/open/clients/Nheko.js @@ -0,0 +1,53 @@ +/* +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, FlathubLink} from "../types.js"; + +/** + * Information on how to deep link to a given matrix client. + */ +export class Nheko { + get id() { return "nheko"; } + getName(platform) { return "Nheko"; } + get icon() { return "images/client-icons/nheko.svg"; } + get author() { return "mujx, red_sky, deepbluev7, Konstantinos Sideris"; } + get homepage() { return "https://github.com/Nheko-Reborn/nheko"; } + get platforms() { return [Platform.Windows, Platform.macOS, Platform.Linux]; } + get description() { return 'A native desktop app for Matrix that feels more like a mainstream chat app.'; } + 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}`; + } + } + + getCopyString(platform, link) { + switch (link.kind) { + case LinkKind.User: return `/invite ${link.identifier}`; + case LinkKind.Room: return `/join ${link.identifier}`; + } + } + + getInstallLinks(platform) { + if (platform === Platform.Linux) { + return [new FlathubLink("io.github.NhekoReborn.Nheko")]; + } + } +} diff --git a/src/open/types.js b/src/open/types.js index 443d769..52472d6 100644 --- a/src/open/types.js +++ b/src/open/types.js @@ -74,6 +74,23 @@ export class FDroidLink { } } +export class FlathubLink { + constructor(appId) { + this._appId = appId; + } + + createInstallURL(link) { + return `https://flathub.org/apps/details/${encodeURIComponent(this._appId)}`; + } + + get channelId() { + return "flathub"; + } + + get description() { + return "Get it on Flathub"; + } +} export class WebsiteLink { constructor(url) { @@ -91,4 +108,4 @@ export class WebsiteLink { get description() { return `Download from ${new URL(this._url).hostname}`; } -} \ No newline at end of file +}