diff options
Diffstat (limited to 'src/client/scripts')
| -rw-r--r-- | src/client/scripts/get-user-menu.ts | 8 | ||||
| -rw-r--r-- | src/client/scripts/lookup-user.ts | 37 |
2 files changed, 44 insertions, 1 deletions
diff --git a/src/client/scripts/get-user-menu.ts b/src/client/scripts/get-user-menu.ts index ceb2bfe173..9a003b5c38 100644 --- a/src/client/scripts/get-user-menu.ts +++ b/src/client/scripts/get-user-menu.ts @@ -124,7 +124,13 @@ export function getUserMenu(user) { action: () => { copyToClipboard(`@${user.username}@${user.host || host}`); } - }, { + }, ($i && ($i.isAdmin || $i.isModerator)) ? { + icon: 'fas fa-info-circle', + text: i18n.locale.info, + action: () => { + os.pageWindow(`/instance/user/${user.id}`); + } + } : { icon: 'fas fa-info-circle', text: i18n.locale.info, action: () => { diff --git a/src/client/scripts/lookup-user.ts b/src/client/scripts/lookup-user.ts new file mode 100644 index 0000000000..1bcfd8e9db --- /dev/null +++ b/src/client/scripts/lookup-user.ts @@ -0,0 +1,37 @@ +import parseAcct from '@/misc/acct/parse'; +import { i18n } from '@client/i18n'; +import * as os from '@client/os'; + +export async function lookupUser() { + const { canceled, result } = await os.dialog({ + title: i18n.locale.usernameOrUserId, + input: true + }); + if (canceled) return; + + const show = (user) => { + os.pageWindow(`/instance/user/${user.id}`); + }; + + const usernamePromise = os.api('users/show', parseAcct(result)); + const idPromise = os.api('users/show', { userId: result }); + let _notFound = false; + const notFound = () => { + if (_notFound) { + os.dialog({ + type: 'error', + text: i18n.locale.noSuchUser + }); + } else { + _notFound = true; + } + }; + usernamePromise.then(show).catch(e => { + if (e.code === 'NO_SUCH_USER') { + notFound(); + } + }); + idPromise.then(show).catch(e => { + notFound(); + }); +} |