summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2020-02-15 01:03:59 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2020-02-15 01:03:59 +0900
commit65c0b6c7da1a16c2c81d19800d9aea7b7dfae4b9 (patch)
tree7e16caf5d7e09b0a6486be2e6e961f6d0bd4b456 /src/server/api/endpoints
parentImprove doc page (diff)
downloadmisskey-65c0b6c7da1a16c2c81d19800d9aea7b7dfae4b9.tar.gz
misskey-65c0b6c7da1a16c2c81d19800d9aea7b7dfae4b9.tar.bz2
misskey-65c0b6c7da1a16c2c81d19800d9aea7b7dfae4b9.zip
Resolve #5939
Diffstat (limited to 'src/server/api/endpoints')
-rw-r--r--src/server/api/endpoints/antennas/create.ts25
-rw-r--r--src/server/api/endpoints/antennas/update.ts25
2 files changed, 46 insertions, 4 deletions
diff --git a/src/server/api/endpoints/antennas/create.ts b/src/server/api/endpoints/antennas/create.ts
index 0e00eda1a4..26915c19b3 100644
--- a/src/server/api/endpoints/antennas/create.ts
+++ b/src/server/api/endpoints/antennas/create.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
import { genId } from '../../../../misc/gen-id';
-import { Antennas, UserLists } from '../../../../models';
+import { Antennas, UserLists, UserGroupJoinings } from '../../../../models';
import { ID } from '../../../../misc/cafy-id';
import { ApiError } from '../../error';
@@ -18,13 +18,17 @@ export const meta = {
},
src: {
- validator: $.str.or(['home', 'all', 'users', 'list'])
+ validator: $.str.or(['home', 'all', 'users', 'list', 'group'])
},
userListId: {
validator: $.nullable.optional.type(ID),
},
+ userGroupId: {
+ validator: $.nullable.optional.type(ID),
+ },
+
keywords: {
validator: $.arr($.arr($.str))
},
@@ -55,12 +59,19 @@ export const meta = {
message: 'No such user list.',
code: 'NO_SUCH_USER_LIST',
id: '95063e93-a283-4b8b-9aa5-bcdb8df69a7f'
+ },
+
+ noSuchUserGroup: {
+ message: 'No such user group.',
+ code: 'NO_SUCH_USER_GROUP',
+ id: 'aa3c0b9a-8cae-47c0-92ac-202ce5906682'
}
}
};
export default define(meta, async (ps, user) => {
let userList;
+ let userGroupJoining;
if (ps.src === 'list') {
userList = await UserLists.findOne({
@@ -71,6 +82,15 @@ export default define(meta, async (ps, user) => {
if (userList == null) {
throw new ApiError(meta.errors.noSuchUserList);
}
+ } else if (ps.src === 'group') {
+ userGroupJoining = await UserGroupJoinings.findOne({
+ userGroupId: ps.userGroupId,
+ userId: user.id,
+ });
+
+ if (userGroupJoining == null) {
+ throw new ApiError(meta.errors.noSuchUserGroup);
+ }
}
const antenna = await Antennas.save({
@@ -80,6 +100,7 @@ export default define(meta, async (ps, user) => {
name: ps.name,
src: ps.src,
userListId: userList ? userList.id : null,
+ userGroupJoiningId: userGroupJoining ? userGroupJoining.id : null,
keywords: ps.keywords,
users: ps.users,
caseSensitive: ps.caseSensitive,
diff --git a/src/server/api/endpoints/antennas/update.ts b/src/server/api/endpoints/antennas/update.ts
index 28875d0f08..b4e7168888 100644
--- a/src/server/api/endpoints/antennas/update.ts
+++ b/src/server/api/endpoints/antennas/update.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '../../../../misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Antennas, UserLists } from '../../../../models';
+import { Antennas, UserLists, UserGroupJoinings } from '../../../../models';
export const meta = {
tags: ['antennas'],
@@ -21,13 +21,17 @@ export const meta = {
},
src: {
- validator: $.str.or(['home', 'all', 'users', 'list'])
+ validator: $.str.or(['home', 'all', 'users', 'list', 'group'])
},
userListId: {
validator: $.nullable.optional.type(ID),
},
+ userGroupId: {
+ validator: $.nullable.optional.type(ID),
+ },
+
keywords: {
validator: $.arr($.arr($.str))
},
@@ -64,6 +68,12 @@ export const meta = {
message: 'No such user list.',
code: 'NO_SUCH_USER_LIST',
id: '1c6b35c9-943e-48c2-81e4-2844989407f7'
+ },
+
+ noSuchUserGroup: {
+ message: 'No such user group.',
+ code: 'NO_SUCH_USER_GROUP',
+ id: '109ed789-b6eb-456e-b8a9-6059d567d385'
}
}
};
@@ -80,6 +90,7 @@ export default define(meta, async (ps, user) => {
}
let userList;
+ let userGroupJoining;
if (ps.src === 'list') {
userList = await UserLists.findOne({
@@ -90,12 +101,22 @@ export default define(meta, async (ps, user) => {
if (userList == null) {
throw new ApiError(meta.errors.noSuchUserList);
}
+ } else if (ps.src === 'group') {
+ userGroupJoining = await UserGroupJoinings.findOne({
+ userGroupId: ps.userGroupId,
+ userId: user.id,
+ });
+
+ if (userGroupJoining == null) {
+ throw new ApiError(meta.errors.noSuchUserGroup);
+ }
}
await Antennas.update(antenna.id, {
name: ps.name,
src: ps.src,
userListId: userList ? userList.id : null,
+ userGroupJoiningId: userGroupJoining ? userGroupJoining.id : null,
keywords: ps.keywords,
users: ps.users,
caseSensitive: ps.caseSensitive,