Fix failing tests

This commit is contained in:
Jesse Wierzbinski 2023-09-21 15:09:14 -10:00
parent 6d2f9072ac
commit c7743aa154
12 changed files with 245 additions and 200 deletions

View file

@ -4,6 +4,7 @@ import {
Column,
CreateDateColumn,
Entity,
JoinTable,
ManyToMany,
ManyToOne,
PrimaryGeneratedColumn,
@ -66,14 +67,44 @@ export class Status extends BaseEntity {
application!: Application | null;
@ManyToMany(() => Emoji, emoji => emoji.id)
@JoinTable()
emojis!: Emoji[];
@ManyToMany(() => RawActivity, activity => activity.id, {})
@ManyToMany(() => RawActivity, activity => activity.id)
@JoinTable()
likes!: RawActivity[];
@ManyToMany(() => RawActivity, activity => activity.id, {})
@ManyToMany(() => RawActivity, activity => activity.id)
@JoinTable()
announces!: RawActivity[];
static async createNew(data: {
account: User;
application: Application | null;
content: string;
visibility: APIStatus["visibility"];
sensitive: boolean;
spoiler_text: string;
emojis: Emoji[];
}) {
const newStatus = new Status();
newStatus.account = data.account;
newStatus.application = data.application ?? null;
newStatus.content = data.content;
newStatus.visibility = data.visibility;
newStatus.sensitive = data.sensitive;
newStatus.spoiler_text = data.spoiler_text;
newStatus.emojis = data.emojis;
newStatus.likes = [];
newStatus.announces = [];
newStatus.isReblog = false;
newStatus.announces = [];
await newStatus.save();
return newStatus;
}
async toAPI(): Promise<APIStatus> {
return {
account: await this.account.toAPI(),
@ -84,7 +115,7 @@ export class Status extends BaseEntity {
this.emojis.map(async emoji => await emoji.toAPI())
),
favourited: false,
favourites_count: 0,
favourites_count: this.likes.length,
id: this.id,
in_reply_to_account_id: null,
in_reply_to_id: null,
@ -96,13 +127,13 @@ export class Status extends BaseEntity {
poll: null,
reblog: this.isReblog ? (await this.reblog?.toAPI()) ?? null : null,
reblogged: false,
reblogs_count: 0,
reblogs_count: this.announces.length,
replies_count: 0,
sensitive: false,
spoiler_text: "",
tags: [],
card: null,
content: "",
content: this.content,
uri: `${config.http.base_url}/@${this.account.username}/${this.id}`,
url: `${config.http.base_url}/@${this.account.username}/${this.id}`,
visibility: "public",

View file

@ -14,6 +14,8 @@ import { APIAccount } from "~types/entities/account";
import { RawActor } from "./RawActor";
import { APActor } from "activitypub-types";
import { RawObject } from "./RawObject";
import { Token } from "./Token";
import { Status } from "./Status";
const config = getConfig();
@ -132,6 +134,26 @@ export class User extends BaseEntity {
return user;
}
async selfDestruct() {
// Clean up tokens
const tokens = await Token.findBy({
user: {
id: this.id,
},
});
const statuses = await Status.findBy({
account: {
id: this.id,
},
});
// Delete both
await Promise.all(tokens.map(async token => await token.remove()));
await Promise.all(statuses.map(async status => await status.remove()));
}
async updateActor() {
// Check if actor exists
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
@ -218,7 +240,7 @@ export class User extends BaseEntity {
avatar_static: "",
bot: false,
created_at: this.created_at.toISOString(),
display_name: "",
display_name: this.display_name,
followers_count: 0,
following_count: 0,
group: false,