1
1
mirror of https://github.com/kokonect-link/cherrypick synced 2024-11-01 15:45:58 +09:00

Merge pull request #1387 from akihikodaki/duplicate

Always deduplicate Activity Streams objects by id
This commit is contained in:
syuilo 2018-04-04 00:19:52 +09:00 committed by GitHub
commit 507159916d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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