From 08ce987bef86151299be9f1338b76f038ede47ca Mon Sep 17 00:00:00 2001 From: Tsiry Sandratraina Date: Tue, 30 Sep 2025 11:36:18 +0300 Subject: [PATCH] fix: improve user update logic in refreshProfile to check for changes before updating --- .../src/xrpc/app/rocksky/actor/getProfile.ts | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/apps/api/src/xrpc/app/rocksky/actor/getProfile.ts b/apps/api/src/xrpc/app/rocksky/actor/getProfile.ts index 02d8e246..c4b6d9ae 100644 --- a/apps/api/src/xrpc/app/rocksky/actor/getProfile.ts +++ b/apps/api/src/xrpc/app/rocksky/actor/getProfile.ts @@ -268,17 +268,25 @@ const refreshProfile = ([ .execute(); profile.user = users[0]; } else { - // Update existing user in background - profile.ctx.db - .update(tables.users) - .set({ - handle, - avatar: `https://cdn.bsky.app/img/avatar/plain/${profile.did}/${_.get(profile, "profileRecord.value.avatar.ref", "").toString()}@jpeg`, - displayName: _.get(profile, "profileRecord.value.displayName"), - updatedAt: new Date(), - }) - .where(eq(tables.users.id, profile.user.id)) - .execute(); + // Update existing user in background if handle or avatar or displayName changed + if ( + profile.user.handle !== handle || + profile.user.avatar !== + `https://cdn.bsky.app/img/avatar/plain/${profile.did}/${_.get(profile, "profileRecord.value.avatar.ref", "").toString()}@jpeg` || + profile.user.displayName !== + _.get(profile, "profileRecord.value.displayName") + ) { + profile.ctx.db + .update(tables.users) + .set({ + handle, + avatar: `https://cdn.bsky.app/img/avatar/plain/${profile.did}/${_.get(profile, "profileRecord.value.avatar.ref", "").toString()}@jpeg`, + displayName: _.get(profile, "profileRecord.value.displayName"), + updatedAt: new Date(), + }) + .where(eq(tables.users.id, profile.user.id)) + .execute(); + } } return [ -- 2.51.2