summaryrefslogtreecommitdiff
path: root/src/client/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/scripts')
-rw-r--r--src/client/scripts/get-user-menu.ts8
-rw-r--r--src/client/scripts/lookup-user.ts37
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();
+ });
+}