/
group_member_remove.ts
34 lines (30 loc) · 1.12 KB
/
group_member_remove.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import logger from "lib/logger";
import { VError } from "verror";
import { Ctx } from "../lib/ctx";
import * as Result from "../result";
import * as Cache from "./cache2";
import { ConnToken } from "./conn";
import * as Group from "./domain/organization/group";
import * as GroupMemberRemove from "./domain/organization/group_member_remove";
import { ServiceUser } from "./domain/organization/service_user";
import { store } from "./store";
export async function removeMembers(
conn: ConnToken,
ctx: Ctx,
serviceUser: ServiceUser,
groupId: Group.Id,
userIds: Group.Member[],
): Promise<Result.Type<void>> {
logger.debug({ userIds }, "Removing users from group");
const memberRemoveResult = await Cache.withCache(conn, ctx, (cache) =>
GroupMemberRemove.removeMembers(ctx, serviceUser, groupId, userIds, {
getGroupEvents: async () => {
return cache.getGroupEvents();
},
}),
);
if (Result.isErr(memberRemoveResult))
return new VError(memberRemoveResult, "failed to remove group member");
const memberAddEvent = memberRemoveResult;
await store(conn, ctx, memberAddEvent, serviceUser.address);
}