summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/admin
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-01-13 00:47:05 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-01-13 00:47:05 +0900
commit1f2dab0a839f9ee6d754243881d949988af7df55 (patch)
tree324baa70b1ab39fe8b65f4145c81f7703991c72f /packages/backend/src/server/api/endpoints/admin
parentFix The unauthenticated git protocol on port 9418 is no longer supported. (#8... (diff)
downloadsharkey-1f2dab0a839f9ee6d754243881d949988af7df55.tar.gz
sharkey-1f2dab0a839f9ee6d754243881d949988af7df55.tar.bz2
sharkey-1f2dab0a839f9ee6d754243881d949988af7df55.zip
feat: multiple emojis editing
Diffstat (limited to 'packages/backend/src/server/api/endpoints/admin')
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts39
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts37
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/delete.ts (renamed from packages/backend/src/server/api/endpoints/admin/emoji/remove.ts)2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts21
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts39
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts35
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts35
7 files changed, 207 insertions, 1 deletions
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts
new file mode 100644
index 0000000000..ef0f315022
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/add-aliases-bulk.ts
@@ -0,0 +1,39 @@
+import $ from 'cafy';
+import define from '../../../define';
+import { ID } from '@/misc/cafy-id';
+import { Emojis } from '@/models/index';
+import { getConnection, In } from 'typeorm';
+import { ApiError } from '../../../error';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true as const,
+ requireModerator: true,
+
+ params: {
+ ids: {
+ validator: $.arr($.type(ID)),
+ },
+
+ aliases: {
+ validator: $.arr($.str),
+ },
+ },
+};
+
+// eslint-disable-next-line import/no-default-export
+export default define(meta, async (ps) => {
+ const emojis = await Emojis.find({
+ id: In(ps.ids),
+ });
+
+ for (const emoji of emojis) {
+ await Emojis.update(emoji.id, {
+ updatedAt: new Date(),
+ aliases: [...new Set(emoji.aliases.concat(ps.aliases))],
+ });
+ }
+
+ await getConnection().queryResultCache!.remove(['meta_emojis']);
+});
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts
new file mode 100644
index 0000000000..a99cd3c978
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts
@@ -0,0 +1,37 @@
+import $ from 'cafy';
+import define from '../../../define';
+import { ID } from '@/misc/cafy-id';
+import { Emojis } from '@/models/index';
+import { getConnection, In } from 'typeorm';
+import { insertModerationLog } from '@/services/insert-moderation-log';
+import { ApiError } from '../../../error';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true as const,
+ requireModerator: true,
+
+ params: {
+ ids: {
+ validator: $.arr($.type(ID)),
+ },
+ },
+};
+
+// eslint-disable-next-line import/no-default-export
+export default define(meta, async (ps, me) => {
+ const emojis = await Emojis.find({
+ id: In(ps.ids),
+ });
+
+ for (const emoji of emojis) {
+ await Emojis.delete(emoji.id);
+
+ await getConnection().queryResultCache!.remove(['meta_emojis']);
+
+ insertModerationLog(me, 'deleteEmoji', {
+ emoji: emoji,
+ });
+ }
+});
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/remove.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts
index 440c1008c7..870245ac92 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/remove.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts
@@ -37,7 +37,7 @@ export default define(meta, async (ps, me) => {
await getConnection().queryResultCache!.remove(['meta_emojis']);
- insertModerationLog(me, 'removeEmoji', {
+ insertModerationLog(me, 'deleteEmoji', {
emoji: emoji,
});
});
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts b/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts
new file mode 100644
index 0000000000..04895b8f20
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts
@@ -0,0 +1,21 @@
+import $ from 'cafy';
+import define from '../../../define';
+import { createImportCustomEmojisJob } from '@/queue/index';
+import ms from 'ms';
+import { ID } from '@/misc/cafy-id';
+
+export const meta = {
+ secure: true,
+ requireCredential: true as const,
+ requireModerator: true,
+ params: {
+ fileId: {
+ validator: $.type(ID),
+ },
+ },
+};
+
+// eslint-disable-next-line import/no-default-export
+export default define(meta, async (ps, user) => {
+ createImportCustomEmojisJob(user, ps.fileId);
+});
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts
new file mode 100644
index 0000000000..4c771b4e42
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts
@@ -0,0 +1,39 @@
+import $ from 'cafy';
+import define from '../../../define';
+import { ID } from '@/misc/cafy-id';
+import { Emojis } from '@/models/index';
+import { getConnection, In } from 'typeorm';
+import { ApiError } from '../../../error';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true as const,
+ requireModerator: true,
+
+ params: {
+ ids: {
+ validator: $.arr($.type(ID)),
+ },
+
+ aliases: {
+ validator: $.arr($.str),
+ },
+ },
+};
+
+// eslint-disable-next-line import/no-default-export
+export default define(meta, async (ps) => {
+ const emojis = await Emojis.find({
+ id: In(ps.ids),
+ });
+
+ for (const emoji of emojis) {
+ await Emojis.update(emoji.id, {
+ updatedAt: new Date(),
+ aliases: emoji.aliases.filter(x => !ps.aliases.includes(x)),
+ });
+ }
+
+ await getConnection().queryResultCache!.remove(['meta_emojis']);
+});
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts
new file mode 100644
index 0000000000..33dccbc642
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/set-aliases-bulk.ts
@@ -0,0 +1,35 @@
+import $ from 'cafy';
+import define from '../../../define';
+import { ID } from '@/misc/cafy-id';
+import { Emojis } from '@/models/index';
+import { getConnection, In } from 'typeorm';
+import { ApiError } from '../../../error';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true as const,
+ requireModerator: true,
+
+ params: {
+ ids: {
+ validator: $.arr($.type(ID)),
+ },
+
+ aliases: {
+ validator: $.arr($.str),
+ },
+ },
+};
+
+// eslint-disable-next-line import/no-default-export
+export default define(meta, async (ps) => {
+ await Emojis.update({
+ id: In(ps.ids),
+ }, {
+ updatedAt: new Date(),
+ aliases: ps.aliases,
+ });
+
+ await getConnection().queryResultCache!.remove(['meta_emojis']);
+});
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts
new file mode 100644
index 0000000000..d40ed52da7
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/set-category-bulk.ts
@@ -0,0 +1,35 @@
+import $ from 'cafy';
+import define from '../../../define';
+import { ID } from '@/misc/cafy-id';
+import { Emojis } from '@/models/index';
+import { getConnection, In } from 'typeorm';
+import { ApiError } from '../../../error';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true as const,
+ requireModerator: true,
+
+ params: {
+ ids: {
+ validator: $.arr($.type(ID)),
+ },
+
+ category: {
+ validator: $.optional.nullable.str,
+ },
+ },
+};
+
+// eslint-disable-next-line import/no-default-export
+export default define(meta, async (ps) => {
+ await Emojis.update({
+ id: In(ps.ids),
+ }, {
+ updatedAt: new Date(),
+ category: ps.category,
+ });
+
+ await getConnection().queryResultCache!.remove(['meta_emojis']);
+});