Create link parser and formatter
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import _ from "lodash";
|
||||
|
||||
export interface Arguments {
|
||||
vias: string[];
|
||||
// Either one of the enums or a custom link
|
||||
sharer: string;
|
||||
extras: { [key: string]: string[] };
|
||||
}
|
||||
|
||||
export interface LinkContent {
|
||||
identifier: string;
|
||||
arguments: Arguments;
|
||||
originalLink: string;
|
||||
}
|
||||
|
||||
export enum LinkDiscriminator {
|
||||
Alias = "ALIAS",
|
||||
RoomId = "ROOM_ID",
|
||||
UserId = "USER_ID",
|
||||
Permalink = "PERMALINK",
|
||||
GroupId = "GROUP_ID",
|
||||
ParseFailed = "PARSE_FAILED",
|
||||
}
|
||||
|
||||
export interface Alias extends LinkContent {
|
||||
kind: LinkDiscriminator.Alias;
|
||||
}
|
||||
|
||||
export interface RoomId extends LinkContent {
|
||||
kind: LinkDiscriminator.RoomId;
|
||||
}
|
||||
|
||||
export interface UserId extends LinkContent {
|
||||
kind: LinkDiscriminator.UserId;
|
||||
}
|
||||
|
||||
export interface GroupId extends LinkContent {
|
||||
kind: LinkDiscriminator.GroupId;
|
||||
}
|
||||
|
||||
export interface Permalink extends LinkContent {
|
||||
kind: LinkDiscriminator.Permalink;
|
||||
roomKind: LinkDiscriminator.RoomId | LinkDiscriminator.Alias;
|
||||
roomLink: string;
|
||||
eventId: string;
|
||||
}
|
||||
|
||||
export interface ParseFailed {
|
||||
kind: LinkDiscriminator.ParseFailed;
|
||||
originalLink: string;
|
||||
}
|
||||
|
||||
export type SafeLink = Alias | RoomId | UserId | Permalink | GroupId;
|
||||
|
||||
export type Link = SafeLink | ParseFailed;
|
||||
Reference in New Issue
Block a user