Always deduplicate Activity Streams objects by id

This commit is contained in:
Akihiko Odaki 2018-04-04 00:14:18 +09:00
parent 9f659271b5
commit 5bcb4b1dde

View file

@ -105,36 +105,36 @@ class Creator {
const collection = await parentResolver.resolveCollection(value); const collection = await parentResolver.resolveCollection(value);
return collection.object.map(async element => { return collection.object.map(async element => {
if (typeof element === 'string') { const uri = element.id || element;
try {
await Promise.all([
DriveFile.findOne({ 'metadata.uri': element }).then(file => {
if (file === null) {
return;
}
throw { try {
$ref: 'driveFile.files', await Promise.all([
$id: file._id DriveFile.findOne({ 'metadata.uri': uri }).then(file => {
}; if (file === null) {
}, () => {}), return;
Post.findOne({ uri: element }).then(post => { }
if (post === null) {
return;
}
throw { throw {
$ref: 'posts', $ref: 'driveFile.files',
$id: post._id $id: file._id
}; };
}, () => {}) }, () => {}),
]); Post.findOne({ uri }).then(post => {
} catch (object) { if (post === null) {
return { return;
resolver: collection.resolver, }
object
}; throw {
} $ref: 'posts',
$id: post._id
};
}, () => {})
]);
} catch (object) {
return {
resolver: collection.resolver,
object
};
} }
const { resolver, object } = await collection.resolver.resolveOne(element); const { resolver, object } = await collection.resolver.resolveOne(element);