From 0374b6b5cd685316f924874b2a3068bb345eb0dd Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 28 Jan 2020 14:45:17 +0100 Subject: Cleanup server fixme --- server/models/activitypub/actor.ts | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) (limited to 'server/models/activitypub/actor.ts') diff --git a/server/models/activitypub/actor.ts b/server/models/activitypub/actor.ts index 007647ced..d651a281a 100644 --- a/server/models/activitypub/actor.ts +++ b/server/models/activitypub/actor.ts @@ -43,7 +43,7 @@ import { MActorFull, MActorHost, MActorServer, - MActorSummaryFormattable, + MActorSummaryFormattable, MActorUrl, MActorWithInboxes } from '../../typings/models' import * as Bluebird from 'bluebird' @@ -276,7 +276,8 @@ export class ActorModel extends Model { }) VideoChannel: VideoChannelModel - private static cache: { [ id: string ]: any } = {} + private static localNameCache: { [ id: string ]: any } = {} + private static localUrlCache: { [ id: string ]: any } = {} static load (id: number): Bluebird { return ActorModel.unscoped().findByPk(id) @@ -345,8 +346,8 @@ export class ActorModel extends Model { static loadLocalByName (preferredUsername: string, transaction?: Transaction): Bluebird { // The server actor never change, so we can easily cache it - if (preferredUsername === SERVER_ACTOR_NAME && ActorModel.cache[preferredUsername]) { - return Bluebird.resolve(ActorModel.cache[preferredUsername]) + if (preferredUsername === SERVER_ACTOR_NAME && ActorModel.localNameCache[preferredUsername]) { + return Bluebird.resolve(ActorModel.localNameCache[preferredUsername]) } const query = { @@ -361,7 +362,33 @@ export class ActorModel extends Model { .findOne(query) .then(actor => { if (preferredUsername === SERVER_ACTOR_NAME) { - ActorModel.cache[ preferredUsername ] = actor + ActorModel.localNameCache[ preferredUsername ] = actor + } + + return actor + }) + } + + static loadLocalUrlByName (preferredUsername: string, transaction?: Transaction): Bluebird { + // The server actor never change, so we can easily cache it + if (preferredUsername === SERVER_ACTOR_NAME && ActorModel.localUrlCache[preferredUsername]) { + return Bluebird.resolve(ActorModel.localUrlCache[preferredUsername]) + } + + const query = { + attributes: [ 'url' ], + where: { + preferredUsername, + serverId: null + }, + transaction + } + + return ActorModel.unscoped() + .findOne(query) + .then(actor => { + if (preferredUsername === SERVER_ACTOR_NAME) { + ActorModel.localUrlCache[ preferredUsername ] = actor } return actor -- cgit v1.2.3