diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-12-03 22:30:10 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-12-03 22:30:10 +0900 |
| commit | 83a77f1064e47633b7b952b69e3a067a9ed7d1e9 (patch) | |
| tree | 7741fe3fa6d87c6bf0ce7976fa4156b8f4ea29b4 /packages/backend/src/server/api | |
| parent | Merge branch 'develop' (diff) | |
| parent | 12.98.0 (diff) | |
| download | misskey-83a77f1064e47633b7b952b69e3a067a9ed7d1e9.tar.gz misskey-83a77f1064e47633b7b952b69e3a067a9ed7d1e9.tar.bz2 misskey-83a77f1064e47633b7b952b69e3a067a9ed7d1e9.zip | |
Merge branch 'develop'
Diffstat (limited to 'packages/backend/src/server/api')
3 files changed, 93 insertions, 2 deletions
diff --git a/packages/backend/src/server/api/endpoints/antennas/notes.ts b/packages/backend/src/server/api/endpoints/antennas/notes.ts index 1759e95b4c..02fec2778b 100644 --- a/packages/backend/src/server/api/endpoints/antennas/notes.ts +++ b/packages/backend/src/server/api/endpoints/antennas/notes.ts @@ -33,6 +33,14 @@ export const meta = { untilId: { validator: $.optional.type(ID), }, + + sinceDate: { + validator: $.optional.num, + }, + + untilDate: { + validator: $.optional.num, + }, }, errors: { @@ -68,7 +76,8 @@ export default define(meta, async (ps, user) => { .select('joining.noteId') .where('joining.antennaId = :antennaId', { antennaId: antenna.id }); - const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId) + const query = makePaginationQuery(Notes.createQueryBuilder('note'), + ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) .andWhere(`note.id IN (${ antennaQuery.getQuery() })`) .innerJoinAndSelect('note.user', 'user') .leftJoinAndSelect('note.reply', 'reply') diff --git a/packages/backend/src/server/api/endpoints/following/invalidate.ts b/packages/backend/src/server/api/endpoints/following/invalidate.ts new file mode 100644 index 0000000000..c0e9df3652 --- /dev/null +++ b/packages/backend/src/server/api/endpoints/following/invalidate.ts @@ -0,0 +1,82 @@ +import $ from 'cafy'; +import { ID } from '@/misc/cafy-id'; +import * as ms from 'ms'; +import deleteFollowing from '@/services/following/delete'; +import define from '../../define'; +import { ApiError } from '../../error'; +import { getUser } from '../../common/getters'; +import { Followings, Users } from '@/models/index'; + +export const meta = { + tags: ['following', 'users'], + + limit: { + duration: ms('1hour'), + max: 100 + }, + + requireCredential: true as const, + + kind: 'write:following', + + params: { + userId: { + validator: $.type(ID), + } + }, + + errors: { + noSuchUser: { + message: 'No such user.', + code: 'NO_SUCH_USER', + id: '5b12c78d-2b28-4dca-99d2-f56139b42ff8' + }, + + followerIsYourself: { + message: 'Follower is yourself.', + code: 'FOLLOWER_IS_YOURSELF', + id: '07dc03b9-03da-422d-885b-438313707662' + }, + + notFollowing: { + message: 'The other use is not following you.', + code: 'NOT_FOLLOWING', + id: '5dbf82f5-c92b-40b1-87d1-6c8c0741fd09' + }, + }, + + res: { + type: 'object' as const, + optional: false as const, nullable: false as const, + ref: 'User' + } +}; + +export default define(meta, async (ps, user) => { + const followee = user; + + // Check if the follower is yourself + if (user.id === ps.userId) { + throw new ApiError(meta.errors.followerIsYourself); + } + + // Get follower + const follower = await getUser(ps.userId).catch(e => { + if (e.id === '15348ddd-432d-49c2-8a5a-8069753becff') throw new ApiError(meta.errors.noSuchUser); + throw e; + }); + + // Check not following + const exist = await Followings.findOne({ + followerId: follower.id, + followeeId: followee.id + }); + + if (exist == null) { + throw new ApiError(meta.errors.notFollowing); + } + + await deleteFollowing(follower, followee); + + return await Users.pack(followee.id, user); +}); diff --git a/packages/backend/src/server/api/endpoints/following/requests/reject.ts b/packages/backend/src/server/api/endpoints/following/requests/reject.ts index 620324361f..30d0e094c3 100644 --- a/packages/backend/src/server/api/endpoints/following/requests/reject.ts +++ b/packages/backend/src/server/api/endpoints/following/requests/reject.ts @@ -1,6 +1,6 @@ import $ from 'cafy'; import { ID } from '@/misc/cafy-id'; -import rejectFollowRequest from '@/services/following/requests/reject'; +import { rejectFollowRequest } from '@/services/following/reject'; import define from '../../../define'; import { ApiError } from '../../../error'; import { getUser } from '../../../common/getters'; |