Parse followers audience from followers URI (#7112)

* add followersUri

* add followersUri to audience parse

* fetch followersUri

* followersUri db migration

* update followersUri

* Rename 1611354329133-followersUri to 1611354329133-followersUri.ts

* typo

* Update person.ts

* create/update person consistency

* Update audience.ts

* missing paren

* tabs

* use strict equality

* Update audience.ts
This commit is contained in:
InspectorCaracal 2021-02-05 19:50:33 -07:00 committed by GitHub
parent c88902e640
commit 885f8e1856
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 4 deletions

View file

@ -0,0 +1,16 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class followersUri1611354329133 implements MigrationInterface {
name = 'followersUri1611354329133'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user" ADD "followersUri" varchar(512) DEFAULT NULL`);
await queryRunner.query(`COMMENT ON COLUMN "user"."followersUri" IS 'The URI of the user Follower Collection. It will be null if the origin of the user is local.'`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`COMMENT ON COLUMN "user"."followersUri" IS 'The URI of the user Follower Collection. It will be null if the origin of the user is local.'`);
await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "followersUri"`);
}
}

View file

@ -201,6 +201,12 @@ export class User {
}) })
public uri: string | null; public uri: string | null;
@Column('varchar', {
length: 512, nullable: true,
comment: 'The URI of the user Follower Collection. It will be null if the origin of the user is local.'
})
public followersUri: string | null;
@Index({ unique: true }) @Index({ unique: true })
@Column('char', { @Column('char', {
length: 16, nullable: true, unique: true, length: 16, nullable: true, unique: true,

View file

@ -86,8 +86,7 @@ function isPublic(id: string) {
} }
function isFollowers(id: string, actor: IRemoteUser) { function isFollowers(id: string, actor: IRemoteUser) {
return [ return (
`${actor.uri}/followers`, id === (actor.followersUri || `${actor.uri}/followers`)
// actor.followerUri, // TODO );
].includes(id);
} }

View file

@ -159,6 +159,7 @@ export async function createPerson(uri: string, resolver?: Resolver): Promise<Us
host, host,
inbox: person.inbox, inbox: person.inbox,
sharedInbox: person.sharedInbox || (person.endpoints ? person.endpoints.sharedInbox : undefined), sharedInbox: person.sharedInbox || (person.endpoints ? person.endpoints.sharedInbox : undefined),
followersUri: person.followers ? getApId(person.followers) : undefined,
featured: person.featured ? getApId(person.featured) : undefined, featured: person.featured ? getApId(person.featured) : undefined,
uri: person.id, uri: person.id,
tags, tags,
@ -330,6 +331,7 @@ export async function updatePerson(uri: string, resolver?: Resolver | null, hint
lastFetchedAt: new Date(), lastFetchedAt: new Date(),
inbox: person.inbox, inbox: person.inbox,
sharedInbox: person.sharedInbox || (person.endpoints ? person.endpoints.sharedInbox : undefined), sharedInbox: person.sharedInbox || (person.endpoints ? person.endpoints.sharedInbox : undefined),
followersUri: person.followers ? getApId(person.followers) : undefined,
featured: person.featured, featured: person.featured,
emojis: emojiNames, emojis: emojiNames,
name: person.name, name: person.name,