mirror of
https://github.com/wassname/talk.git
synced 2026-06-28 19:49:58 +08:00
66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
const {decorateWithTags} = require('./util');
|
|
|
|
const Comment = {
|
|
parent({parent_id}, _, {loaders: {Comments}}) {
|
|
if (parent_id == null) {
|
|
return null;
|
|
}
|
|
|
|
return Comments.get.load(parent_id);
|
|
},
|
|
user({author_id}, _, {loaders: {Users}}) {
|
|
return Users.getByID.load(author_id);
|
|
},
|
|
recentReplies({id}, _, {loaders: {Comments}}) {
|
|
return Comments.genRecentReplies.load(id);
|
|
},
|
|
replies({id, asset_id}, {sort, limit, excludeIgnored}, {loaders: {Comments}}) {
|
|
return Comments.getByQuery({
|
|
asset_id,
|
|
parent_id: id,
|
|
sort,
|
|
limit,
|
|
excludeIgnored,
|
|
});
|
|
},
|
|
replyCount({id}, {excludeIgnored}, {user, loaders: {Comments}}) {
|
|
|
|
// TODO: remove
|
|
if (user && excludeIgnored) {
|
|
return Comments.countByParentIDPersonalized({id, excludeIgnored});
|
|
}
|
|
return Comments.countByParentID.load(id);
|
|
},
|
|
actions({id}, _, {user, loaders: {Actions}}) {
|
|
|
|
if (user && user.can('SEARCH_ACTIONS')) {
|
|
return Actions.getByID.load(id);
|
|
}
|
|
|
|
return null;
|
|
},
|
|
action_summaries({id, action_summaries}, _, {loaders: {Actions}}) {
|
|
if (action_summaries) {
|
|
return action_summaries;
|
|
}
|
|
|
|
return Actions.getSummariesByItemID.load(id);
|
|
},
|
|
asset({asset_id}, _, {loaders: {Assets}}) {
|
|
return Assets.getByID.load(asset_id);
|
|
},
|
|
async editing(comment, _, {loaders: {Settings}}) {
|
|
const settings = await Settings.load();
|
|
const editableUntil = new Date(Number(new Date(comment.created_at)) + settings.editCommentWindowLength);
|
|
return {
|
|
edited: comment.edited,
|
|
editableUntil: editableUntil
|
|
};
|
|
}
|
|
};
|
|
|
|
// Decorate the Comment type resolver with a tags field.
|
|
decorateWithTags(Comment);
|
|
|
|
module.exports = Comment;
|