server: refactor creating mute into service
This commit is contained in:
parent
9606aeff18
commit
ca137e0055
2 changed files with 36 additions and 14 deletions
|
@ -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);
|
||||
});
|
||||
|
|
33
packages/backend/src/services/mute/create.ts
Normal file
33
packages/backend/src/services/mute/create.ts
Normal 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,
|
||||
});
|
||||
}
|
Loading…
Reference in a new issue