MCPcopy Index your code
hub / github.com/Linen-dev/linen.dev / syncUsers

Function syncUsers

apps/web/services/slack/sync/syncUsers.ts:6–61  ·  view source on GitHub ↗
({
  accountId,
  token,
  account,
  fullSync,
  listUsers,
  logger,
}: {
  accountId: string;
  token: string;
  account: AccountWithSlackAuthAndChannels;
  fullSync?: boolean;
  listUsers: ListUsersFnType;
  logger: Logger;
})

Source from the content-addressed store, hash-verified

4import { ListUsersFnType } from '../types';
5
6export async function syncUsers({
7 accountId,
8 token,
9 account,
10 fullSync,
11 listUsers,
12 logger,
13}: {
14 accountId: string;
15 token: string;
16 account: AccountWithSlackAuthAndChannels;
17 fullSync?: boolean;
18 listUsers: ListUsersFnType;
19 logger: Logger;
20}) {
21 if (fullSync) {
22 logger.log({ 'Syncing users for account': accountId });
23 const usersListResponse = await listUsers(token);
24 if (!usersListResponse.body?.members) {
25 return [];
26 }
27 const members = usersListResponse.body.members;
28 logger.log({ 'members total': members.length });
29
30 let count = members.length;
31 for (const user of members) {
32 await createUser(buildUserFromInfo(user, accountId));
33 count--;
34 if (count % 50 === 0) {
35 logger.log({ 'members left': count });
36 }
37 }
38
39 let userCursor = usersListResponse?.body?.response_metadata?.next_cursor;
40
41 while (!!userCursor) {
42 try {
43 logger.log({ userCursor });
44 const usersListResponse = await listUsers(token, userCursor);
45 const additionalMembers = usersListResponse?.body?.members;
46 if (!!additionalMembers) {
47 for (const user of additionalMembers) {
48 await createUser(buildUserFromInfo(user, accountId));
49 }
50 }
51 userCursor = usersListResponse?.body?.response_metadata?.next_cursor;
52 } catch (e) {
53 logger.error({ 'fetching user failed': (e as Error).message || e });
54 userCursor = undefined;
55 }
56 }
57 }
58
59 const usersInDb = await findUsersByAccountId(account.id);
60 return usersInDb as UserMap[];
61}

Callers 2

syncWrapperFunction · 0.90
syncUsers.test.tsFile · 0.90

Calls 6

createUserFunction · 0.90
buildUserFromInfoFunction · 0.90
findUsersByAccountIdFunction · 0.90
listUsersFunction · 0.85
logMethod · 0.65
errorMethod · 0.65

Tested by

no test coverage detected