diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2020-08-18 22:44:21 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-18 22:44:21 +0900 |
| commit | 9855405b8989713b81709fc1700e2ead97423467 (patch) | |
| tree | 54254d2159378d1903e962f0fb37c799bb0f4464 /src/server/api/endpoints/notes | |
| parent | Sign (request-target) Fix #6652 (#6656) (diff) | |
| download | misskey-9855405b8989713b81709fc1700e2ead97423467.tar.gz misskey-9855405b8989713b81709fc1700e2ead97423467.tar.bz2 misskey-9855405b8989713b81709fc1700e2ead97423467.zip | |
Channel (#6621)
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wop
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* add notes
* wip
* wip
* wip
* wip
* sound
* wip
* add kick_gaba2
* wip
Diffstat (limited to 'src/server/api/endpoints/notes')
| -rw-r--r-- | src/server/api/endpoints/notes/create.ts | 32 | ||||
| -rw-r--r-- | src/server/api/endpoints/notes/global-timeline.ts | 1 | ||||
| -rw-r--r-- | src/server/api/endpoints/notes/hybrid-timeline.ts | 2 | ||||
| -rw-r--r-- | src/server/api/endpoints/notes/local-timeline.ts | 2 | ||||
| -rw-r--r-- | src/server/api/endpoints/notes/timeline.ts | 2 |
5 files changed, 35 insertions, 4 deletions
diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts index 5076dad82a..b8c4900af7 100644 --- a/src/server/api/endpoints/notes/create.ts +++ b/src/server/api/endpoints/notes/create.ts @@ -7,11 +7,12 @@ import { fetchMeta } from '../../../../misc/fetch-meta'; import { ApiError } from '../../error'; import { ID } from '../../../../misc/cafy-id'; import { User } from '../../../../models/entities/user'; -import { Users, DriveFiles, Notes } from '../../../../models'; +import { Users, DriveFiles, Notes, Channels } from '../../../../models'; import { DriveFile } from '../../../../models/entities/drive-file'; import { Note } from '../../../../models/entities/note'; import { DB_MAX_NOTE_TEXT_LENGTH } from '../../../../misc/hard-limits'; import { noteVisibilities } from '../../../../types'; +import { Channel } from '../../../../models/entities/channel'; let maxNoteTextLength = 500; @@ -128,19 +129,26 @@ export const meta = { }, replyId: { - validator: $.optional.type(ID), + validator: $.optional.nullable.type(ID), desc: { 'ja-JP': '返信対象' } }, renoteId: { - validator: $.optional.type(ID), + validator: $.optional.nullable.type(ID), desc: { 'ja-JP': 'Renote対象' } }, + channelId: { + validator: $.optional.nullable.type(ID), + desc: { + 'ja-JP': 'チャンネル' + } + }, + poll: { validator: $.optional.obj({ choices: $.arr($.str) @@ -206,7 +214,13 @@ export const meta = { message: 'Poll is already expired.', code: 'CANNOT_CREATE_ALREADY_EXPIRED_POLL', id: '04da457d-b083-4055-9082-955525eda5a5' - } + }, + + noSuchChannel: { + message: 'No such channel.', + code: 'NO_SUCH_CHANNEL', + id: 'b1653923-5453-4edc-b786-7c4f39bb0bbb' + }, } }; @@ -269,6 +283,15 @@ export default define(meta, async (ps, user) => { throw new ApiError(meta.errors.contentRequired); } + let channel: Channel | undefined; + if (ps.channelId != null) { + channel = await Channels.findOne(ps.channelId); + + if (channel == null) { + throw new ApiError(meta.errors.noSuchChannel); + } + } + // 投稿を作成 const note = await create(user, { createdAt: new Date(), @@ -286,6 +309,7 @@ export default define(meta, async (ps, user) => { localOnly: ps.localOnly, visibility: ps.visibility, visibleUsers, + channel, apMentions: ps.noExtractMentions ? [] : undefined, apHashtags: ps.noExtractHashtags ? [] : undefined, apEmojis: ps.noExtractEmojis ? [] : undefined, diff --git a/src/server/api/endpoints/notes/global-timeline.ts b/src/server/api/endpoints/notes/global-timeline.ts index 5e61c17841..6d99f1fdbc 100644 --- a/src/server/api/endpoints/notes/global-timeline.ts +++ b/src/server/api/endpoints/notes/global-timeline.ts @@ -80,6 +80,7 @@ export default define(meta, async (ps, user) => { const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) .andWhere('note.visibility = \'public\'') + .andWhere('note.channelId IS NULL') .leftJoinAndSelect('note.user', 'user'); generateRepliesQuery(query, user); diff --git a/src/server/api/endpoints/notes/hybrid-timeline.ts b/src/server/api/endpoints/notes/hybrid-timeline.ts index fab4e9f4e5..2b91b8c67b 100644 --- a/src/server/api/endpoints/notes/hybrid-timeline.ts +++ b/src/server/api/endpoints/notes/hybrid-timeline.ts @@ -13,6 +13,7 @@ import { generateRepliesQuery } from '../../common/generate-replies-query'; import { injectPromo } from '../../common/inject-promo'; import { injectFeatured } from '../../common/inject-featured'; import { generateMutedNoteQuery } from '../../common/generate-muted-note-query'; +import { generateChannelQuery } from '../../common/generate-channel-query'; export const meta = { desc: { @@ -131,6 +132,7 @@ export default define(meta, async (ps, user) => { .leftJoinAndSelect('note.user', 'user') .setParameters(followingQuery.getParameters()); + generateChannelQuery(query, user); generateRepliesQuery(query, user); generateVisibilityQuery(query, user); generateMutedUserQuery(query, user); diff --git a/src/server/api/endpoints/notes/local-timeline.ts b/src/server/api/endpoints/notes/local-timeline.ts index 38ec1d4727..51e35e6241 100644 --- a/src/server/api/endpoints/notes/local-timeline.ts +++ b/src/server/api/endpoints/notes/local-timeline.ts @@ -13,6 +13,7 @@ import { generateRepliesQuery } from '../../common/generate-replies-query'; import { injectPromo } from '../../common/inject-promo'; import { injectFeatured } from '../../common/inject-featured'; import { generateMutedNoteQuery } from '../../common/generate-muted-note-query'; +import { generateChannelQuery } from '../../common/generate-channel-query'; export const meta = { desc: { @@ -99,6 +100,7 @@ export default define(meta, async (ps, user) => { .andWhere('(note.visibility = \'public\') AND (note.userHost IS NULL)') .leftJoinAndSelect('note.user', 'user'); + generateChannelQuery(query, user); generateRepliesQuery(query, user); generateVisibilityQuery(query, user); if (user) generateMutedUserQuery(query, user); diff --git a/src/server/api/endpoints/notes/timeline.ts b/src/server/api/endpoints/notes/timeline.ts index 657739820b..f09f3d1733 100644 --- a/src/server/api/endpoints/notes/timeline.ts +++ b/src/server/api/endpoints/notes/timeline.ts @@ -11,6 +11,7 @@ import { generateRepliesQuery } from '../../common/generate-replies-query'; import { injectPromo } from '../../common/inject-promo'; import { injectFeatured } from '../../common/inject-featured'; import { generateMutedNoteQuery } from '../../common/generate-muted-note-query'; +import { generateChannelQuery } from '../../common/generate-channel-query'; export const meta = { desc: { @@ -124,6 +125,7 @@ export default define(meta, async (ps, user) => { .leftJoinAndSelect('note.user', 'user') .setParameters(followingQuery.getParameters()); + generateChannelQuery(query, user); generateRepliesQuery(query, user); generateVisibilityQuery(query, user); generateMutedUserQuery(query, user); |