Skip to content
Snippets Groups Projects
Commit 4921513e authored by Jorik Schellekens's avatar Jorik Schellekens
Browse files

Automaitcally copy invite information

parent 154f82f7
No related branches found
No related tags found
No related merge requests found
...@@ -57,6 +57,17 @@ const Weechat: TextClient = { ...@@ -57,6 +57,17 @@ const Weechat: TextClient = {
return <span>Weechat doesn't support this kind of link</span>; return <span>Weechat 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 '';
}
},
description: 'Commandline Matrix interface using Weechat', description: 'Commandline Matrix interface using Weechat',
}; };
......
...@@ -81,6 +81,7 @@ export interface LinkedClient extends ClientDescription { ...@@ -81,6 +81,7 @@ export interface LinkedClient extends ClientDescription {
export interface TextClient extends ClientDescription { export interface TextClient extends ClientDescription {
kind: ClientKind.TEXT_CLIENT; kind: ClientKind.TEXT_CLIENT;
toInviteString(parsedLink: SafeLink): JSX.Element; toInviteString(parsedLink: SafeLink): JSX.Element;
copyString(parsedLink: SafeLink): string;
} }
/* /*
......
...@@ -42,7 +42,16 @@ const ClientTile: React.FC<IProps> = ({ client, link }: IProps) => { ...@@ -42,7 +42,16 @@ const ClientTile: React.FC<IProps> = ({ client, link }: IProps) => {
const inviteButton = const inviteButton =
client.kind === ClientKind.LINKED_CLIENT ? ( client.kind === ClientKind.LINKED_CLIENT ? (
<Button>Accept invite</Button> <Button>Accept invite</Button>
) : null; ) : (
<Button
onClick={() =>
navigator.clipboard.writeText(client.copyString(link))
}
flashChildren="Invite copied"
>
Copy invite
</Button>
);
let clientTile = ( let clientTile = (
<Tile className={className}> <Tile className={className}>
......
...@@ -61,6 +61,7 @@ const InviteTile: React.FC<IProps> = ({ children, client, link }: IProps) => { ...@@ -61,6 +61,7 @@ const InviteTile: React.FC<IProps> = ({ children, client, link }: IProps) => {
case ClientKind.TEXT_CLIENT: case ClientKind.TEXT_CLIENT:
// TODO: copy to clipboard // TODO: copy to clipboard
invite = <p>{client.toInviteString(link)}</p>; invite = <p>{client.toInviteString(link)}</p>;
navigator.clipboard.writeText(client.copyString(link));
inviteUseString = `These are instructions for ${client.name}.`; inviteUseString = `These are instructions for ${client.name}.`;
break; break;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment