import { logger } from '../../utils/logger' import GeneralUtils from '../../utils/general' import * as SendBirdUtils from '../../utils/sendbird' import { prismaClient as prisma } from '../../prismaClient' export default async function updateUserNicknameToHaveUnitNumberInIt() { console.time( 'Verifying all SendBird users to make sure their nicknames have their own unit number in it' ) try { await new Promise((resolve, reject) => { async function startUpdatingUsers({ next }: { next?: string }) { const { users, next: token } = await SendBirdUtils.getUsers({ limit: 100, token: next, }) await Promise.all( users.map(async (sendBirdUser) => { const prismaUser = await prisma.user.findOne({ where: { id: sendBirdUser.user_id }, include: { avatar: true, }, }) if (prismaUser && prismaUser.role === 'RESIDENT') { const newNickname = GeneralUtils.getUserName(prismaUser) if (sendBirdUser.nickname !== newNickname) { logger.info(`New nickname: ${newNickname}`) await SendBirdUtils.updateUser({ userId: sendBirdUser.user_id, nickname: newNickname, profileUrl: prismaUser.avatar?.url || '', }) } } return Promise.resolve() }) ) // if (next) { // return startUpdatingUsers({ next }) // } } // START startUpdatingUsers({}) }) } catch (error) { logger.error(error) } console.timeEnd( 'Verifying all SendBird users to make sure their nicknames have their own unit number in it' ) }