server: refactor creating mute into service

This commit is contained in:
Johann150 2023-05-06 01:02:24 +02:00
parent 9606aeff18
commit ca137e0055
Signed by: Johann150
GPG Key ID: 9EE6577A2A06F8F1
2 changed files with 36 additions and 14 deletions

View File

@ -5,6 +5,7 @@ import { publishUserEvent } from '@/services/stream.js';
import define from '@/server/api/define.js';
import { ApiError } from '@/server/api/error.js';
import { getUser } from '@/server/api/common/getters.js';
import { createMute } from '@/services/mute/create.js';
export const meta = {
tags: ['account'],
@ -51,19 +52,7 @@ export default define(meta, paramDef, async (ps, user) => {
return;
}
// Create mute
await Mutings.insert({
id: genId(),
createdAt: new Date(),
expiresAt: ps.expiresAt ? new Date(ps.expiresAt) : null,
muterId: muter.id,
muteeId: mutee.id,
} as Muting);
const expiresAt = ps.expiresAt ? new Date(ps.expiresAt) : null;
publishUserEvent(user.id, 'mute', mutee);
NoteWatchings.delete({
userId: muter.id,
noteUserId: mutee.id,
});
await createMute(muter, mutee, expiresAt);
});

View File

@ -0,0 +1,33 @@
import { genId } from '@/misc/gen-id.js';
import { Mutings, NoteWatchings } from '@/models/index.js';
import { Muting } from '@/models/entities/muting.js';
import { publishUserEvent } from '@/services/stream.js';
import { User } from '@/models/entities/user.js';
export async function createMute(muter: User, mutee: User, expiresAt: Date | null): Promise<void> {
if (expiresAt && ps.expiresAt <= Date.now()) {
return;
}
await Promise.all([
// Create mute
Mutings.insert({
id: genId(),
createdAt: new Date(),
expiresAt,
muterId: muter.id,
muteeId: mutee.id,
} as Muting),
removeWatchings(muter, mutee),
removeWatchings(mutee, muter),
]);
publishUserEvent(user.id, 'mute', mutee);
});
async function removeWatchings(watcher: User, watched: User): Promise<void> {
await NoteWatchings.delete({
userId: watcher.id,
noteUserId: watched.id,
});
}