add clients
This commit is contained in:
parent
1352feca21
commit
91cbb73ac8
9 changed files with 334 additions and 1 deletions
|
@ -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;
|
||||
|
|
69
src/clients/Fractal.tsx
Normal file
69
src/clients/Fractal.tsx
Normal file
|
@ -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;
|
85
src/clients/Nheko.tsx
Normal file
85
src/clients/Nheko.tsx
Normal file
|
@ -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;
|
|
@ -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',
|
||||
};
|
||||
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -63,6 +63,10 @@ const ClientList: React.FC<IProps> = ({ link, rememberSelection }: IProps) => {
|
|||
showClient = false;
|
||||
}
|
||||
|
||||
if (!client.linkSupport(link)) {
|
||||
showClient = false;
|
||||
}
|
||||
|
||||
return showClient;
|
||||
};
|
||||
|
||||
|
|
BIN
src/imgs/fractal.png
Normal file
BIN
src/imgs/fractal.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.6 KiB |
155
src/imgs/nheko.svg
Normal file
155
src/imgs/nheko.svg
Normal file
|
@ -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>
|
After Width: | Height: | Size: 5.2 KiB |
Loading…
Reference in a new issue