From 91cbb73ac87618bd13c333f7c612fa7bc817697e Mon Sep 17 00:00:00 2001 From: Jorik Schellekens <joriksch@gmail.com> Date: Wed, 16 Sep 2020 14:28:29 +0100 Subject: [PATCH] add clients --- src/clients/Element.io.ts | 2 + src/clients/Fractal.tsx | 69 +++++++++++++++ src/clients/Nheko.tsx | 85 +++++++++++++++++++ src/clients/Weechat.tsx | 11 +++ src/clients/index.ts | 6 +- src/clients/types.ts | 3 + src/components/ClientList.tsx | 4 + src/imgs/fractal.png | Bin 0 -> 8796 bytes src/imgs/nheko.svg | 155 ++++++++++++++++++++++++++++++++++ 9 files changed, 334 insertions(+), 1 deletion(-) create mode 100644 src/clients/Fractal.tsx create mode 100644 src/clients/Nheko.tsx create mode 100644 src/imgs/fractal.png create mode 100644 src/imgs/nheko.svg diff --git a/src/clients/Element.io.ts b/src/clients/Element.io.ts index 6d4f6c1..8a346ae 100644 --- a/src/clients/Element.io.ts +++ b/src/clients/Element.io.ts @@ -56,6 +56,7 @@ const Element: LinkedClient = { ); } }, + linkSupport: () => true, }; export const ElementDevelop: LinkedClient = { @@ -90,5 +91,6 @@ export const ElementDevelop: LinkedClient = { ); } }, + linkSupport: () => true, }; export default Element; diff --git a/src/clients/Fractal.tsx b/src/clients/Fractal.tsx new file mode 100644 index 0000000..a0caaac --- /dev/null +++ b/src/clients/Fractal.tsx @@ -0,0 +1,69 @@ +/* +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 React from 'react'; + +import { TextClient, Maturity, ClientKind, ClientId, Platform } from './types'; + +import { LinkKind } from '../parser/types'; + +import logo from '../imgs/fractal.png'; + +const Fractal: TextClient = { + kind: ClientKind.TEXT_CLIENT, + name: 'Fractal', + logo: logo, + author: 'Daniel Garcia Moreno', + homepage: 'https://github.com/poljar/weechat-matrix', + maturity: Maturity.BETA, + experimental: false, + platform: Platform.Desktop, + clientId: ClientId.Fractal, + toInviteString: (link) => { + switch (link.kind) { + case LinkKind.Alias: + case LinkKind.RoomId: + case LinkKind.UserId: + return <span>Click the '+' button in the top right</span>; + default: + return <span>Weechat doesn't support this kind of link</span>; + } + }, + copyString: (link) => { + switch (link.kind) { + case LinkKind.Alias: + case LinkKind.RoomId: + case LinkKind.UserId: + return `${link.identifier}`; + default: + return ''; + } + }, + linkSupport: (link) => { + switch (link.kind) { + case LinkKind.Alias: + case LinkKind.RoomId: + case LinkKind.UserId: + return true; + default: + return false; + } + }, + + description: 'Command-line Matrix interface using Weechat', +}; + +export default Fractal; diff --git a/src/clients/Nheko.tsx b/src/clients/Nheko.tsx new file mode 100644 index 0000000..a0954d1 --- /dev/null +++ b/src/clients/Nheko.tsx @@ -0,0 +1,85 @@ +/* +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 React from 'react'; + +import { TextClient, Maturity, ClientKind, ClientId, Platform } from './types'; + +import { LinkKind } from '../parser/types'; + +import logo from '../imgs/nheko.svg'; + +const Nheko: TextClient = { + kind: ClientKind.TEXT_CLIENT, + name: 'Nheko', + logo: logo, + author: 'mujx, red_sky, deepbluev7, Konstantinos Sideris', + homepage: 'https://github.com/Nheko-Reborn/nheko', + maturity: Maturity.BETA, + experimental: false, + platform: Platform.Desktop, + clientId: ClientId.Nheko, + toInviteString: (link) => { + switch (link.kind) { + case LinkKind.Alias: + case LinkKind.RoomId: + return ( + <span> + Type{' '} + <code> + /join <b>{link.identifier}</b> + </code> + </span> + ); + case LinkKind.UserId: + return ( + <span> + Type{' '} + <code> + /invite <b>{link.identifier}</b> + </code> + </span> + ); + default: + return <span>Nheko doesn't support this kind of link</span>; + } + }, + copyString: (link) => { + switch (link.kind) { + case LinkKind.Alias: + case LinkKind.RoomId: + return `/join ${link.identifier}`; + case LinkKind.UserId: + return `/invite ${link.identifier}`; + default: + return ''; + } + }, + linkSupport: (link) => { + switch (link.kind) { + case LinkKind.Alias: + case LinkKind.RoomId: + case LinkKind.UserId: + return true; + default: + return false; + } + }, + description: + 'A native desktop app for Matrix that feels more like a mainstream chat app.', +}; + +export default Nheko; diff --git a/src/clients/Weechat.tsx b/src/clients/Weechat.tsx index ff6b528..cd15769 100644 --- a/src/clients/Weechat.tsx +++ b/src/clients/Weechat.tsx @@ -68,6 +68,17 @@ const Weechat: TextClient = { return ''; } }, + linkSupport: (link) => { + switch (link.kind) { + case LinkKind.Alias: + case LinkKind.RoomId: + case LinkKind.UserId: + return true; + default: + return false; + } + }, + description: 'Command-line Matrix interface using Weechat', }; diff --git a/src/clients/index.ts b/src/clients/index.ts index ba39676..c3686bb 100644 --- a/src/clients/index.ts +++ b/src/clients/index.ts @@ -18,11 +18,13 @@ import { Client } from './types'; import Element, { ElementDevelop } from './Element.io'; import Weechat from './Weechat'; +import Nheko from './Nheko'; +import Fractal from './Fractal'; /* * All the supported clients of matrix.to */ -const clients: Client[] = [Element, Weechat, ElementDevelop]; +const clients: Client[] = [Element, Weechat, Nheko, Fractal, ElementDevelop]; /* * A map from sharer string to client. @@ -33,6 +35,8 @@ export const clientMap: { [key: string]: Client } = { [Element.clientId]: Element, [Weechat.clientId]: Weechat, [ElementDevelop.clientId]: ElementDevelop, + [Nheko.clientId]: Nheko, + [Fractal.clientId]: Fractal, }; /* diff --git a/src/clients/types.ts b/src/clients/types.ts index cdaed27..5a93f15 100644 --- a/src/clients/types.ts +++ b/src/clients/types.ts @@ -49,6 +49,8 @@ export enum ClientId { Element = 'element.io', ElementDevelop = 'develop.element.io', WeeChat = 'weechat', + Nheko = 'nheko', + Fractal = 'fractal', } /* @@ -64,6 +66,7 @@ export interface ClientDescription { maturity: Maturity; clientId: ClientId; experimental: boolean; + linkSupport: (link: SafeLink) => boolean; } /* diff --git a/src/components/ClientList.tsx b/src/components/ClientList.tsx index fbef28f..4d23d37 100644 --- a/src/components/ClientList.tsx +++ b/src/components/ClientList.tsx @@ -63,6 +63,10 @@ const ClientList: React.FC<IProps> = ({ link, rememberSelection }: IProps) => { showClient = false; } + if (!client.linkSupport(link)) { + showClient = false; + } + return showClient; }; diff --git a/src/imgs/fractal.png b/src/imgs/fractal.png new file mode 100644 index 0000000000000000000000000000000000000000..e60c89c98878256859f41e0667183cccf6de2d68 GIT binary patch literal 8796 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 literal 0 HcmV?d00001 diff --git a/src/imgs/nheko.svg b/src/imgs/nheko.svg new file mode 100644 index 0000000..ce3ec40 --- /dev/null +++ b/src/imgs/nheko.svg @@ -0,0 +1,155 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1024" + height="1024" + viewBox="0 0 270.93333 270.93333" + version="1.1" + id="svg8" + inkscape:version="0.92.4 5da689c313, 2019-01-14" + sodipodi:docname="nheko.svg" + inkscape:export-filename="/home/nicolas/Dokumente/devel/open-source/nheko/resources/nheko-rebuild-round-corners.svg.png" + inkscape:export-xdpi="130.048" + inkscape:export-ydpi="130.048"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35355339" + inkscape:cx="852.07808" + inkscape:cy="-60.410565" + inkscape:document-units="mm" + inkscape:current-layer="layer2" + showgrid="true" + inkscape:window-width="1920" + inkscape:window-height="1019" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + showguides="true" + inkscape:snap-grids="true" + gridtolerance="10" + inkscape:snap-bbox="false" + inkscape:bbox-paths="true" + inkscape:snap-global="true" + inkscape:bbox-nodes="true" + inkscape:lockguides="false" + units="px"> + <sodipodi:guide + position="0,0" + orientation="0,793.70079" + id="guide4797" + inkscape:locked="false" /> + <sodipodi:guide + position="0,297" + orientation="1122.5197,0" + id="guide4803" + inkscape:locked="false" /> + <inkscape:grid + type="axonomgrid" + id="grid4805" + units="px" + empspacing="2" + snapvisiblegridlinesonly="true" + spacingy="1.0583333" /> + <sodipodi:guide + position="0,0" + orientation="0,755.90551" + id="guide4807" + inkscape:locked="false" /> + <sodipodi:guide + position="200,0" + orientation="-755.90551,0" + id="guide4809" + inkscape:locked="false" /> + <sodipodi:guide + position="200,200" + orientation="0,-755.90551" + id="guide4811" + inkscape:locked="false" /> + <inkscape:grid + type="xygrid" + id="grid871" + empspacing="2" + color="#d43fff" + opacity="0.1254902" + empcolor="#cf3fff" + empopacity="0.25098039" + units="px" + spacingx="1.0583333" + spacingy="1.0583333" + enabled="false" /> + </sodipodi:namedview> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Logo" + style="display:inline" + transform="translate(0,-26.066668)"> + <circle + id="path3792" + cx="135.46666" + cy="161.53333" + style="display:inline;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.3584221" + inkscape:transform-center-x="-57.929751" + inkscape:transform-center-y="532.03976" + inkscape:export-xdpi="96.000008" + inkscape:export-ydpi="96.000008" + r="135.46666" /> + <path + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.32663074px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 48.965212,110.73276 H 239.52342 c 4.88824,0 4.88824,0 0,8.46688 L 180.59519,221.2662 c -4.6188,8.00001 -4.6188,8.00001 -9.50702,8.00001 h -19.55294 c -4.88824,0 -4.88824,0 -0.26944,-8.00001 l 44.2635,-76.66608 h -29.41224 l -43.91123,76.19952 c -4.88823,8.46657 -4.88823,8.46657 -9.77646,8.46657 H 29.329398 l 49.299816,-84.66609 h -49.29982 z" + id="path4834" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccc" + inkscape:export-xdpi="96.000008" + inkscape:export-ydpi="96.000008" /> + <path + style="fill:#c0def5;fill-opacity:1;stroke:none;stroke-width:0.3584221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 97.764652,110.73276 H 127.09406 L 58.658797,229.26621 H 29.329398 Z" + id="path4836" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + inkscape:export-xdpi="96.000008" + inkscape:export-ydpi="96.000008" /> + <path + style="fill:#87aade;fill-opacity:1;stroke:none;stroke-width:0.3584221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 58.658797,229.26621 127.09406,110.73276 h 29.3294 L 87.988193,229.26621 Z" + id="path4838" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + inkscape:export-xdpi="96.000008" + inkscape:export-ydpi="96.000008" /> + </g> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + style="display:inline" + transform="translate(0,-26.066668)" /> +</svg> -- GitLab