summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts/admin-lookup.ts
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-05-31 12:26:07 +0100
committerdakkar <dakkar@thenautilus.net>2024-05-31 12:26:07 +0100
commit3372e0ffe153d996bdf04ae3d834633d0ba18fca (patch)
tree7a46452030b2a2ca24d1ea9158fa5f0f75000245 /packages/frontend/src/scripts/admin-lookup.ts
parentMerge branch 'develop' into future (diff)
parentBump version to 2024.5.0-rc.9 (diff)
downloadsharkey-3372e0ffe153d996bdf04ae3d834633d0ba18fca.tar.gz
sharkey-3372e0ffe153d996bdf04ae3d834633d0ba18fca.tar.bz2
sharkey-3372e0ffe153d996bdf04ae3d834633d0ba18fca.zip
Merge remote-tracking branch 'misskey/release/2024.5.0' into future
Diffstat (limited to 'packages/frontend/src/scripts/admin-lookup.ts')
-rw-r--r--packages/frontend/src/scripts/admin-lookup.ts88
1 files changed, 88 insertions, 0 deletions
diff --git a/packages/frontend/src/scripts/admin-lookup.ts b/packages/frontend/src/scripts/admin-lookup.ts
new file mode 100644
index 0000000000..1b57b853c9
--- /dev/null
+++ b/packages/frontend/src/scripts/admin-lookup.ts
@@ -0,0 +1,88 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import * as Misskey from 'misskey-js';
+import { i18n } from '@/i18n.js';
+import * as os from '@/os.js';
+import { misskeyApi } from '@/scripts/misskey-api.js';
+
+export async function lookupUser() {
+ const { canceled, result } = await os.inputText({
+ title: i18n.ts.usernameOrUserId,
+ });
+ if (canceled) return;
+
+ const show = (user) => {
+ os.pageWindow(`/admin/user/${user.id}`);
+ };
+
+ const usernamePromise = misskeyApi('users/show', Misskey.acct.parse(result));
+ const idPromise = misskeyApi('users/show', { userId: result });
+ let _notFound = false;
+ const notFound = () => {
+ if (_notFound) {
+ os.alert({
+ type: 'error',
+ text: i18n.ts.noSuchUser,
+ });
+ } else {
+ _notFound = true;
+ }
+ };
+ usernamePromise.then(show).catch(err => {
+ if (err.code === 'NO_SUCH_USER') {
+ notFound();
+ }
+ });
+ idPromise.then(show).catch(err => {
+ notFound();
+ });
+}
+
+export async function lookupUserByEmail() {
+ const { canceled, result } = await os.inputText({
+ title: i18n.ts.emailAddress,
+ type: 'email',
+ });
+ if (canceled) return;
+
+ try {
+ const user = await os.apiWithDialog('admin/accounts/find-by-email', { email: result });
+
+ os.pageWindow(`/admin/user/${user.id}`);
+ } catch (err) {
+ if (err.code === 'USER_NOT_FOUND') {
+ os.alert({
+ type: 'error',
+ text: i18n.ts.noSuchUser,
+ });
+ } else {
+ throw err;
+ }
+ }
+}
+
+export async function lookupFile() {
+ const { canceled, result: q } = await os.inputText({
+ title: i18n.ts.fileIdOrUrl,
+ minLength: 1,
+ });
+ if (canceled) return;
+
+ const show = (file) => {
+ os.pageWindow(`/admin/file/${file.id}`);
+ };
+
+ misskeyApi('admin/drive/show-file', q.startsWith('http://') || q.startsWith('https://') ? { url: q.trim() } : { fileId: q.trim() }).then(file => {
+ show(file);
+ }).catch(err => {
+ if (err.code === 'NO_SUCH_FILE') {
+ os.alert({
+ type: 'error',
+ text: i18n.ts.notFound,
+ });
+ }
+ });
+}