diff options
| author | こぴなたみぽ <Syuilotan@yahoo.co.jp> | 2017-11-01 04:18:32 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-11-01 04:18:32 +0900 |
| commit | 2a00930150207c983a2f6e111d03f2db33b897b9 (patch) | |
| tree | f41dc9bcc5498ac89839057e07910b9c2d81fed3 /src/api/serializers | |
| parent | v2752 (diff) | |
| parent | v2769 (diff) | |
| download | misskey-2a00930150207c983a2f6e111d03f2db33b897b9.tar.gz misskey-2a00930150207c983a2f6e111d03f2db33b897b9.tar.bz2 misskey-2a00930150207c983a2f6e111d03f2db33b897b9.zip | |
Merge pull request #854 from syuilo/bbs
Bbs
Diffstat (limited to 'src/api/serializers')
| -rw-r--r-- | src/api/serializers/channel.ts | 44 | ||||
| -rw-r--r-- | src/api/serializers/post.ts | 8 |
2 files changed, 51 insertions, 1 deletions
diff --git a/src/api/serializers/channel.ts b/src/api/serializers/channel.ts new file mode 100644 index 0000000000..d4e16d6be3 --- /dev/null +++ b/src/api/serializers/channel.ts @@ -0,0 +1,44 @@ +/** + * Module dependencies + */ +import * as mongo from 'mongodb'; +import deepcopy = require('deepcopy'); +import { IUser } from '../models/user'; +import { default as Channel, IChannel } from '../models/channel'; + +/** + * Serialize a channel + * + * @param channel target + * @param me? serializee + * @return response + */ +export default ( + channel: string | mongo.ObjectID | IChannel, + me?: string | mongo.ObjectID | IUser +) => new Promise<any>(async (resolve, reject) => { + + let _channel: any; + + // Populate the channel if 'channel' is ID + if (mongo.ObjectID.prototype.isPrototypeOf(channel)) { + _channel = await Channel.findOne({ + _id: channel + }); + } else if (typeof channel === 'string') { + _channel = await Channel.findOne({ + _id: new mongo.ObjectID(channel) + }); + } else { + _channel = deepcopy(channel); + } + + // Rename _id to id + _channel.id = _channel._id; + delete _channel._id; + + // Remove needless properties + delete _channel.user_id; + + resolve(_channel); +}); diff --git a/src/api/serializers/post.ts b/src/api/serializers/post.ts index df917a8595..7d40df2d6a 100644 --- a/src/api/serializers/post.ts +++ b/src/api/serializers/post.ts @@ -8,6 +8,7 @@ import Reaction from '../models/post-reaction'; import { IUser } from '../models/user'; import Vote from '../models/poll-vote'; import serializeApp from './app'; +import serializeChannel from './channel'; import serializeUser from './user'; import serializeDriveFile from './drive-file'; import parse from '../common/text'; @@ -76,8 +77,13 @@ const self = ( _post.app = await serializeApp(_post.app_id); } + // Populate channel + if (_post.channel_id) { + _post.channel = await serializeChannel(_post.channel_id); + } + + // Populate media if (_post.media_ids) { - // Populate media _post.media = await Promise.all(_post.media_ids.map(async fileId => await serializeDriveFile(fileId) )); |