summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/messaging/messages.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
commit0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch)
tree40874799472fa07416f17b50a398ac33b7771905 /src/server/api/endpoints/messaging/messages.ts
parentupdate deps (diff)
downloadmisskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz
misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2
misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip
refactoring
Resolve #7779
Diffstat (limited to 'src/server/api/endpoints/messaging/messages.ts')
-rw-r--r--src/server/api/endpoints/messaging/messages.ts148
1 files changed, 0 insertions, 148 deletions
diff --git a/src/server/api/endpoints/messaging/messages.ts b/src/server/api/endpoints/messaging/messages.ts
deleted file mode 100644
index 6baa24609e..0000000000
--- a/src/server/api/endpoints/messaging/messages.ts
+++ /dev/null
@@ -1,148 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
-import { MessagingMessages, UserGroups, UserGroupJoinings, Users } from '@/models/index';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Brackets } from 'typeorm';
-import { readUserMessagingMessage, readGroupMessagingMessage, deliverReadActivity } from '../../common/read-messaging-message';
-
-export const meta = {
- tags: ['messaging'],
-
- requireCredential: true as const,
-
- kind: 'read:messaging',
-
- params: {
- userId: {
- validator: $.optional.type(ID),
- },
-
- groupId: {
- validator: $.optional.type(ID),
- },
-
- limit: {
- validator: $.optional.num.range(1, 100),
- default: 10
- },
-
- sinceId: {
- validator: $.optional.type(ID),
- },
-
- untilId: {
- validator: $.optional.type(ID),
- },
-
- markAsRead: {
- validator: $.optional.bool,
- default: true
- }
- },
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'MessagingMessage',
- }
- },
-
- errors: {
- noSuchUser: {
- message: 'No such user.',
- code: 'NO_SUCH_USER',
- id: '11795c64-40ea-4198-b06e-3c873ed9039d'
- },
-
- noSuchGroup: {
- message: 'No such group.',
- code: 'NO_SUCH_GROUP',
- id: 'c4d9f88c-9270-4632-b032-6ed8cee36f7f'
- },
-
- groupAccessDenied: {
- message: 'You can not read messages of groups that you have not joined.',
- code: 'GROUP_ACCESS_DENIED',
- id: 'a053a8dd-a491-4718-8f87-50775aad9284'
- },
- }
-};
-
-export default define(meta, async (ps, user) => {
- if (ps.userId != null) {
- // Fetch recipient (user)
- const recipient = await getUser(ps.userId).catch(e => {
- if (e.id === '15348ddd-432d-49c2-8a5a-8069753becff') throw new ApiError(meta.errors.noSuchUser);
- throw e;
- });
-
- const query = makePaginationQuery(MessagingMessages.createQueryBuilder('message'), ps.sinceId, ps.untilId)
- .andWhere(new Brackets(qb => { qb
- .where(new Brackets(qb => { qb
- .where('message.userId = :meId')
- .andWhere('message.recipientId = :recipientId');
- }))
- .orWhere(new Brackets(qb => { qb
- .where('message.userId = :recipientId')
- .andWhere('message.recipientId = :meId');
- }));
- }))
- .setParameter('meId', user.id)
- .setParameter('recipientId', recipient.id);
-
- const messages = await query.take(ps.limit!).getMany();
-
- // Mark all as read
- if (ps.markAsRead) {
- readUserMessagingMessage(user.id, recipient.id, messages.filter(m => m.recipientId === user.id).map(x => x.id));
-
- // リモートユーザーとのメッセージだったら既読配信
- if (Users.isLocalUser(user) && Users.isRemoteUser(recipient)) {
- deliverReadActivity(user, recipient, messages);
- }
- }
-
- return await Promise.all(messages.map(message => MessagingMessages.pack(message, user, {
- populateRecipient: false
- })));
- } else if (ps.groupId != null) {
- // Fetch recipient (group)
- const recipientGroup = await UserGroups.findOne(ps.groupId);
-
- if (recipientGroup == null) {
- throw new ApiError(meta.errors.noSuchGroup);
- }
-
- // check joined
- const joining = await UserGroupJoinings.findOne({
- userId: user.id,
- userGroupId: recipientGroup.id
- });
-
- if (joining == null) {
- throw new ApiError(meta.errors.groupAccessDenied);
- }
-
- const query = makePaginationQuery(MessagingMessages.createQueryBuilder('message'), ps.sinceId, ps.untilId)
- .andWhere(`message.groupId = :groupId`, { groupId: recipientGroup.id });
-
- const messages = await query.take(ps.limit!).getMany();
-
- // Mark all as read
- if (ps.markAsRead) {
- readGroupMessagingMessage(user.id, recipientGroup.id, messages.map(x => x.id));
- }
-
- return await Promise.all(messages.map(message => MessagingMessages.pack(message, user, {
- populateGroup: false
- })));
- } else {
- throw new Error();
- }
-});