From 246693b8484b72048cb515b76aa5f094f5fdeb56 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 22 Apr 2021 22:29:33 +0900 Subject: インスタンス管理画面作り直し (#7473) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * wip * wip * wip * wip --- src/client/scripts/get-user-menu.ts | 8 +++++++- src/client/scripts/lookup-user.ts | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/client/scripts/lookup-user.ts (limited to 'src/client/scripts') 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(); + }); +} -- cgit v1.2.3-freya