Fix broken follow notification

This commit is contained in:
Chocobozzz 2019-08-02 09:46:48 +02:00
parent 075942b212
commit 44b88f180b
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 21 additions and 0 deletions

View File

@ -148,6 +148,7 @@ export class UserNotification implements UserNotificationServer {
break break
} }
} catch (err) { } catch (err) {
this.type = null
console.error(err) console.error(err)
} }
} }

View File

@ -30,6 +30,7 @@ import { CONSTRAINTS_FIELDS, WEBSERVER } from '../../initializers/constants'
import { FindOptions, IncludeOptions, Op, Transaction, WhereOptions } from 'sequelize' import { FindOptions, IncludeOptions, Op, Transaction, WhereOptions } from 'sequelize'
import { AccountBlocklistModel } from './account-blocklist' import { AccountBlocklistModel } from './account-blocklist'
import { ServerBlocklistModel } from '../server/server-blocklist' import { ServerBlocklistModel } from '../server/server-blocklist'
import { ActorFollowModel } from '../activitypub/actor-follow'
export enum ScopeNames { export enum ScopeNames {
SUMMARY = 'SUMMARY' SUMMARY = 'SUMMARY'
@ -220,6 +221,7 @@ export class AccountModel extends Model<AccountModel> {
instance.Actor = await instance.$get('Actor', { transaction: options.transaction }) as ActorModel instance.Actor = await instance.$get('Actor', { transaction: options.transaction }) as ActorModel
} }
await ActorFollowModel.removeFollowsOf(instance.Actor.id, options.transaction)
if (instance.isOwned()) { if (instance.isOwned()) {
return sendDeleteActor(instance.Actor, options.transaction) return sendDeleteActor(instance.Actor, options.transaction)
} }

View File

@ -113,6 +113,24 @@ export class ActorFollowModel extends Model<ActorFollowModel> {
]) ])
} }
static removeFollowsOf (actorId: number, t?: Transaction) {
const query = {
where: {
[Op.or]: [
{
actorId
},
{
targetActorId: actorId
}
]
},
transaction: t
}
return ActorFollowModel.destroy(query)
}
// Remove actor follows with a score of 0 (too many requests where they were unreachable) // Remove actor follows with a score of 0 (too many requests where they were unreachable)
static async removeBadActorFollows () { static async removeBadActorFollows () {
const actorFollows = await ActorFollowModel.listBadActorFollows() const actorFollows = await ActorFollowModel.listBadActorFollows()