mirror of
https://git.joinsharkey.org/Sharkey/Sharkey.git
synced 2024-11-27 12:13:09 +02:00
Add excludeNsfw option
This commit is contained in:
parent
5da18ba535
commit
afdacf14b7
5 changed files with 29 additions and 0 deletions
|
@ -187,6 +187,7 @@ export default Vue.extend({
|
|||
|
||||
(this as any).api('notes/local-timeline', {
|
||||
fileType: image,
|
||||
excludeNsfw: true,
|
||||
limit: 6
|
||||
}).then((notes: any[]) => {
|
||||
const files = concat(notes.map((n: any): any[] => n.files));
|
||||
|
|
|
@ -111,6 +111,7 @@ export default Vue.extend({
|
|||
|
||||
(this as any).api('notes/local-timeline', {
|
||||
fileType: image,
|
||||
excludeNsfw: true,
|
||||
limit: 6
|
||||
}).then((notes: any[]) => {
|
||||
const files = concat(notes.map((n: any): any[] => n.files));
|
||||
|
|
|
@ -20,6 +20,7 @@ Note.createIndex('userId');
|
|||
Note.createIndex('mentions');
|
||||
Note.createIndex('visibleUserIds');
|
||||
Note.createIndex('tagsLower');
|
||||
Note.createIndex('_files._id');
|
||||
Note.createIndex('_files.contentType');
|
||||
Note.createIndex({
|
||||
createdAt: -1
|
||||
|
|
|
@ -4,6 +4,7 @@ import DriveFile, { validateFileName, pack } from '../../../../../models/drive-f
|
|||
import { publishDriveStream } from '../../../../../stream';
|
||||
import { ILocalUser } from '../../../../../models/user';
|
||||
import getParams from '../../../get-params';
|
||||
import Note from '../../../../../models/note';
|
||||
|
||||
export const meta = {
|
||||
desc: {
|
||||
|
@ -93,6 +94,18 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) =
|
|||
}
|
||||
});
|
||||
|
||||
// ドライブのファイルが非正規化されているドキュメントも更新
|
||||
Note.find({
|
||||
'_files._id': file._id
|
||||
}).then(notes => {
|
||||
notes.forEach(note => {
|
||||
note._files[note._files.findIndex(f => f._id.equals(file._id))] = file;
|
||||
Note.findOneAndUpdate({ _id: note._id }, {
|
||||
_files: note._files
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Serialize
|
||||
const fileObj = await pack(file);
|
||||
|
||||
|
|
|
@ -30,6 +30,13 @@ export const meta = {
|
|||
}
|
||||
}),
|
||||
|
||||
excludeNsfw: $.bool.optional.note({
|
||||
default: false,
|
||||
desc: {
|
||||
'ja-JP': 'true にすると、NSFW指定されたファイルを除外します(fileTypeが指定されている場合のみ有効)'
|
||||
}
|
||||
}),
|
||||
|
||||
limit: $.num.optional.range(1, 100).note({
|
||||
default: 10
|
||||
}),
|
||||
|
@ -97,6 +104,12 @@ export default async (params: any, user: ILocalUser) => {
|
|||
query['_files.contentType'] = {
|
||||
$in: ps.fileType
|
||||
};
|
||||
|
||||
if (ps.excludeNsfw) {
|
||||
query['_files.metadata.isSensitive'] = {
|
||||
$ne: true
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (ps.sinceId) {
|
||||
|
|
Loading…
Reference in a new issue