Clean up
This commit is contained in:
		
							parent
							
								
									7c5b9ba1d1
								
							
						
					
					
						commit
						50d56bdc25
					
				
					 3 changed files with 1 additions and 51 deletions
				
			
		| 
						 | 
					@ -47,7 +47,6 @@ type IUserBase = {
 | 
				
			||||||
	bannerId: mongo.ObjectID;
 | 
						bannerId: mongo.ObjectID;
 | 
				
			||||||
	data: any;
 | 
						data: any;
 | 
				
			||||||
	description: string;
 | 
						description: string;
 | 
				
			||||||
	latestNote: INote;
 | 
					 | 
				
			||||||
	pinnedNoteId: mongo.ObjectID;
 | 
						pinnedNoteId: mongo.ObjectID;
 | 
				
			||||||
	isSuspended: boolean;
 | 
						isSuspended: boolean;
 | 
				
			||||||
	keywords: string[];
 | 
						keywords: string[];
 | 
				
			||||||
| 
						 | 
					@ -332,9 +331,6 @@ export const pack = (
 | 
				
			||||||
	_user.id = _user._id;
 | 
						_user.id = _user._id;
 | 
				
			||||||
	delete _user._id;
 | 
						delete _user._id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Remove needless properties
 | 
					 | 
				
			||||||
	delete _user.latestNote;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (_user.host == null) {
 | 
						if (_user.host == null) {
 | 
				
			||||||
		// Remove private properties
 | 
							// Remove private properties
 | 
				
			||||||
		delete _user.keypair;
 | 
							delete _user.keypair;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -97,31 +97,7 @@ module.exports = (params, user: ILocalUser, app: IApp) => new Promise(async (res
 | 
				
			||||||
			return rej('cannot renote to renote');
 | 
								return rej('cannot renote to renote');
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Fetch recently note
 | 
					 | 
				
			||||||
		const latestNote = await Note.findOne({
 | 
					 | 
				
			||||||
			userId: user._id
 | 
					 | 
				
			||||||
		}, {
 | 
					 | 
				
			||||||
			sort: {
 | 
					 | 
				
			||||||
				_id: -1
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		isQuote = text != null || files != null;
 | 
							isQuote = text != null || files != null;
 | 
				
			||||||
 | 
					 | 
				
			||||||
		// 直近と同じRenote対象かつ引用じゃなかったらエラー
 | 
					 | 
				
			||||||
		if (latestNote &&
 | 
					 | 
				
			||||||
			latestNote.renoteId &&
 | 
					 | 
				
			||||||
			latestNote.renoteId.equals(renote._id) &&
 | 
					 | 
				
			||||||
			!isQuote) {
 | 
					 | 
				
			||||||
			return rej('cannot renote same note that already reposted in your latest note');
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// 直近がRenote対象かつ引用じゃなかったらエラー
 | 
					 | 
				
			||||||
		if (latestNote &&
 | 
					 | 
				
			||||||
			latestNote._id.equals(renote._id) &&
 | 
					 | 
				
			||||||
			!isQuote) {
 | 
					 | 
				
			||||||
			return rej('cannot renote your latest note');
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'replyId' parameter
 | 
						// Get 'replyId' parameter
 | 
				
			||||||
| 
						 | 
					@ -208,24 +184,6 @@ module.exports = (params, user: ILocalUser, app: IApp) => new Promise(async (res
 | 
				
			||||||
		return rej('text, mediaIds, renoteId or poll is required');
 | 
							return rej('text, mediaIds, renoteId or poll is required');
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 直近の投稿と重複してたらエラー
 | 
					 | 
				
			||||||
	// TODO: 直近の投稿が一日前くらいなら重複とは見なさない
 | 
					 | 
				
			||||||
	if (user.latestNote) {
 | 
					 | 
				
			||||||
		if (deepEqual({
 | 
					 | 
				
			||||||
			text: user.latestNote.text,
 | 
					 | 
				
			||||||
			reply: user.latestNote.replyId ? user.latestNote.replyId.toString() : null,
 | 
					 | 
				
			||||||
			renote: user.latestNote.renoteId ? user.latestNote.renoteId.toString() : null,
 | 
					 | 
				
			||||||
			mediaIds: (user.latestNote.mediaIds || []).map(id => id.toString())
 | 
					 | 
				
			||||||
		}, {
 | 
					 | 
				
			||||||
			text: text,
 | 
					 | 
				
			||||||
			reply: reply ? reply._id.toString() : null,
 | 
					 | 
				
			||||||
			renote: renote ? renote._id.toString() : null,
 | 
					 | 
				
			||||||
			mediaIds: (files || []).map(file => file._id.toString())
 | 
					 | 
				
			||||||
		})) {
 | 
					 | 
				
			||||||
			return rej('duplicate');
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// 投稿を作成
 | 
						// 投稿を作成
 | 
				
			||||||
	const note = await create(user, {
 | 
						const note = await create(user, {
 | 
				
			||||||
		createdAt: new Date(),
 | 
							createdAt: new Date(),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -89,14 +89,10 @@ export default async (user: IUser, data: {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	res(note);
 | 
						res(note);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	User.update({ _id: user._id }, {
 | 
					 | 
				
			||||||
	// Increment notes count
 | 
						// Increment notes count
 | 
				
			||||||
 | 
						User.update({ _id: user._id }, {
 | 
				
			||||||
		$inc: {
 | 
							$inc: {
 | 
				
			||||||
			notesCount: 1
 | 
								notesCount: 1
 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		// Update latest note
 | 
					 | 
				
			||||||
		$set: {
 | 
					 | 
				
			||||||
			latestNote: note
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue