summaryrefslogtreecommitdiff
path: root/src/remote
diff options
context:
space:
mode:
Diffstat (limited to 'src/remote')
-rw-r--r--src/remote/activitypub/resolver.ts35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/remote/activitypub/resolver.ts b/src/remote/activitypub/resolver.ts
index ebfe25fe7e..b7e431b910 100644
--- a/src/remote/activitypub/resolver.ts
+++ b/src/remote/activitypub/resolver.ts
@@ -43,32 +43,35 @@ export default class Resolver {
}
private async resolveCollection(value) {
- if (Array.isArray(value)) {
- return value;
- }
-
const resolved = typeof value === 'string' ?
await this.resolveUnrequestedOne(value) :
- value;
+ { resolver: this, object: value };
- switch (resolved.type) {
+ switch (resolved.object.type) {
case 'Collection':
- return resolved.items;
+ resolved.object = resolved.object.items;
+ break;
case 'OrderedCollection':
- return resolved.orderedItems;
+ resolved.object = resolved.object.orderedItems;
+ break;
default:
- return [resolved];
+ if (!Array.isArray(value)) {
+ resolved.object = [resolved.object];
+ }
+ break;
}
+
+ return resolved;
}
public async resolve(value): Promise<Array<Promise<IResult>>> {
- const collection = await this.resolveCollection(value);
+ const { resolver, object } = await this.resolveCollection(value);
- return collection
- .filter(element => !this.requesting.has(element))
- .map(this.resolveUnrequestedOne.bind(this));
+ return object
+ .filter(element => !resolver.requesting.has(element))
+ .map(resolver.resolveUnrequestedOne.bind(resolver));
}
public resolveOne(value) {
@@ -80,9 +83,9 @@ export default class Resolver {
}
public async resolveRemoteUserObjects(value) {
- const collection = await this.resolveCollection(value);
+ const { resolver, object } = await this.resolveCollection(value);
- return collection.filter(element => !this.requesting.has(element)).map(element => {
+ return object.filter(element => !resolver.requesting.has(element)).map(element => {
if (typeof element === 'string') {
const object = RemoteUserObject.findOne({ uri: element });
@@ -91,7 +94,7 @@ export default class Resolver {
}
}
- return this.resolveUnrequestedOne(element);
+ return resolver.resolveUnrequestedOne(element);
});
}
}