diff options
Diffstat (limited to 'ui/src/utils.ts')
-rw-r--r-- | ui/src/utils.ts | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/ui/src/utils.ts b/ui/src/utils.ts index 3bad5040..5ce84b39 100644 --- a/ui/src/utils.ts +++ b/ui/src/utils.ts @@ -541,7 +541,10 @@ export function setupTribute(): Tribute { { trigger: '@', selectTemplate: (item: any) => { - return `[/u/${item.original.key}](/u/${item.original.key})`; + let link = item.original.local + ? `[${item.original.key}](/u/${item.original.name})` + : `[${item.original.key}](/user/${item.original.id})`; + return link; }, values: (text: string, cb: any) => { userSearch(text, (users: any) => cb(users)); @@ -554,9 +557,12 @@ export function setupTribute(): Tribute { // Communities { - trigger: '#', + trigger: '!', selectTemplate: (item: any) => { - return `[/c/${item.original.key}](/c/${item.original.key})`; + let link = item.original.local + ? `[${item.original.key}](/c/${item.original.name})` + : `[${item.original.key}](/community/${item.original.id})`; + return link; }, values: (text: string, cb: any) => { communitySearch(text, (communities: any) => cb(communities)); @@ -599,7 +605,12 @@ function userSearch(text: string, cb: any) { if (res.op == UserOperation.Search) { let data = res.data as SearchResponse; let users = data.users.map(u => { - return { key: u.name }; + return { + key: `@${u.name}@${hostname(u.actor_id)}`, + name: u.name, + local: u.local, + id: u.id, + }; }); cb(users); this.userSub.unsubscribe(); @@ -630,8 +641,13 @@ function communitySearch(text: string, cb: any) { let res = wsJsonToRes(msg); if (res.op == UserOperation.Search) { let data = res.data as SearchResponse; - let communities = data.communities.map(u => { - return { key: u.name }; + let communities = data.communities.map(c => { + return { + key: `!${c.name}@${hostname(c.actor_id)}`, + name: c.name, + local: c.local, + id: c.id, + }; }); cb(communities); this.communitySub.unsubscribe(); @@ -882,6 +898,13 @@ export function previewLines(text: string, lines: number = 3): string { .join('\n'); } +export function hostname(url: string): string { + let cUrl = new URL(url); + return window.location.port + ? `${cUrl.hostname}:${cUrl.port}` + : `${cUrl.hostname}`; +} + function canUseWebP() { // TODO pictshare might have a webp conversion bug, try disabling this return false; |