From: Chocobozzz Date: Tue, 9 Jan 2018 17:13:00 +0000 (+0100) Subject: Fix sharedInboxUrl list X-Git-Tag: v0.0.1-alpha~29 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=759f8a29e95932023564ca98dcbc90d1acb92da0;p=oweals%2Fpeertube.git Fix sharedInboxUrl list --- diff --git a/server/models/activitypub/actor-follow.ts b/server/models/activitypub/actor-follow.ts index c35c712ed..5fcc3449d 100644 --- a/server/models/activitypub/actor-follow.ts +++ b/server/models/activitypub/actor-follow.ts @@ -191,12 +191,13 @@ export class ActorFollowModel extends Model { static listAcceptedFollowerSharedInboxUrls (actorIds: number[], t: Sequelize.Transaction) { return ActorFollowModel.createListAcceptedFollowForApiQuery( - 'DISTINCT(followers)', + 'followers', actorIds, t, undefined, undefined, - 'sharedInboxUrl' + 'sharedInboxUrl', + true ) } @@ -204,12 +205,15 @@ export class ActorFollowModel extends Model { return ActorFollowModel.createListAcceptedFollowForApiQuery('following', actorIds, t, start, count) } - private static async createListAcceptedFollowForApiQuery (type: 'followers' | 'following' | 'DISTINCT(followers)', - actorIds: number[], - t: Sequelize.Transaction, - start?: number, - count?: number, - columnUrl = 'url') { + private static async createListAcceptedFollowForApiQuery ( + type: 'followers' | 'following', + actorIds: number[], + t: Sequelize.Transaction, + start?: number, + count?: number, + columnUrl = 'url', + distinct = false + ) { let firstJoin: string let secondJoin: string @@ -221,10 +225,15 @@ export class ActorFollowModel extends Model { secondJoin = 'targetActorId' } - const selections = [ '"Follows"."' + columnUrl + '" AS "url"', 'COUNT(*) AS "total"' ] + const selections: string[] = [] + if (distinct === true) selections.push('DISTINCT("Follows"."' + columnUrl + '") AS "url"') + else selections.push('"Follows"."' + columnUrl + '" AS "url"') + + selections.push('COUNT(*) AS "total"') + const tasks: Bluebird[] = [] - for (const selection of selections) { + for (let selection of selections) { let query = 'SELECT ' + selection + ' FROM "actor" ' + 'INNER JOIN "actorFollow" ON "actorFollow"."' + firstJoin + '" = "actor"."id" ' + 'INNER JOIN "actor" AS "Follows" ON "actorFollow"."' + secondJoin + '" = "Follows"."id" ' +