wip
This commit is contained in:
@@ -21,7 +21,8 @@ module.exports = async (params, user) => new Promise(async (res, rej) => {
|
||||
const channel = await Channel.insert({
|
||||
created_at: new Date(),
|
||||
user_id: user._id,
|
||||
title: title
|
||||
title: title,
|
||||
index: 0
|
||||
});
|
||||
|
||||
// Response
|
||||
|
@@ -153,6 +153,16 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => {
|
||||
if (repost && !isQuote) {
|
||||
return rej('チャンネル内部では引用ではないRepostをすることはできません');
|
||||
}
|
||||
} else {
|
||||
// 返信対象の投稿がチャンネルへの投稿だったらダメ
|
||||
if (inReplyToPost && inReplyToPost.channel_id != null) {
|
||||
return rej('チャンネル外部からチャンネル内部の投稿に返信することはできません');
|
||||
}
|
||||
|
||||
// Repost対象の投稿がチャンネルへの投稿だったらダメ
|
||||
if (repost && repost.channel_id != null) {
|
||||
return rej('チャンネル外部からチャンネル内部の投稿をRepostすることはできません');
|
||||
}
|
||||
}
|
||||
|
||||
// Get 'poll' parameter
|
||||
@@ -199,6 +209,7 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => {
|
||||
const post = await Post.insert({
|
||||
created_at: new Date(),
|
||||
channel_id: channel ? channel._id : undefined,
|
||||
index: channel ? channel.index + 1 : undefined,
|
||||
media_ids: files ? files.map(file => file._id) : undefined,
|
||||
reply_to_id: inReplyToPost ? inReplyToPost._id : undefined,
|
||||
repost_id: repost ? repost._id : undefined,
|
||||
@@ -217,6 +228,12 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => {
|
||||
// -----------------------------------------------------------
|
||||
// Post processes
|
||||
|
||||
Channel.update({ _id: channel._id }, {
|
||||
$inc: {
|
||||
index: 1
|
||||
}
|
||||
});
|
||||
|
||||
User.update({ _id: user._id }, {
|
||||
$set: {
|
||||
latest_post: post
|
||||
|
@@ -10,4 +10,5 @@ export type IChannel = {
|
||||
created_at: Date;
|
||||
title: string;
|
||||
user_id: mongo.ObjectID;
|
||||
index: number;
|
||||
};
|
||||
|
@@ -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)
|
||||
));
|
||||
|
Reference in New Issue
Block a user