feat(federation): pass profile username hints to all resolveOrCreateReplicatedUser call sites
This commit is contained in:
@@ -1216,7 +1216,7 @@ function processCreateEvent(
|
|||||||
}> = [];
|
}> = [];
|
||||||
|
|
||||||
for (const p of event.participants) {
|
for (const p of event.participants) {
|
||||||
let localUser = resolveOrCreateReplicatedUser(p.homeUserId, p.homeInstance, db);
|
let localUser = resolveOrCreateReplicatedUser(p.homeUserId, p.homeInstance, db, { username: p.profile?.username });
|
||||||
// Hydrate with profile data from the relay event (displayName, avatar, etc.)
|
// Hydrate with profile data from the relay event (displayName, avatar, etc.)
|
||||||
if (p.profile) {
|
if (p.profile) {
|
||||||
localUser = hydrateReplicatedUserProfile(localUser, p.profile, db);
|
localUser = hydrateReplicatedUserProfile(localUser, p.profile, db);
|
||||||
@@ -1733,7 +1733,7 @@ function processMemberAddEvent(
|
|||||||
// Resolve owner — create a replicated stub if unknown
|
// Resolve owner — create a replicated stub if unknown
|
||||||
let ownerId: string | null = null;
|
let ownerId: string | null = null;
|
||||||
if (event.group.owner) {
|
if (event.group.owner) {
|
||||||
const ownerLocal = resolveOrCreateReplicatedUser(event.group.owner.homeUserId, event.group.owner.homeInstance, db);
|
const ownerLocal = resolveOrCreateReplicatedUser(event.group.owner.homeUserId, event.group.owner.homeInstance, db, { username: event.group.owner.profile?.username });
|
||||||
ownerId = ownerLocal.id;
|
ownerId = ownerLocal.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1751,7 +1751,7 @@ function processMemberAddEvent(
|
|||||||
// Add all roster members — create replicated user stubs for any
|
// Add all roster members — create replicated user stubs for any
|
||||||
// participants from remote instances that haven't been seen before.
|
// participants from remote instances that haven't been seen before.
|
||||||
for (const member of event.group.members) {
|
for (const member of event.group.members) {
|
||||||
const localUser = resolveOrCreateReplicatedUser(member.homeUserId, member.homeInstance, db);
|
const localUser = resolveOrCreateReplicatedUser(member.homeUserId, member.homeInstance, db, { username: member.profile?.username });
|
||||||
const existing = db.select().from(schema.dmMembers)
|
const existing = db.select().from(schema.dmMembers)
|
||||||
.where(and(
|
.where(and(
|
||||||
eq(schema.dmMembers.dmChannelId, channelId),
|
eq(schema.dmMembers.dmChannelId, channelId),
|
||||||
@@ -1831,6 +1831,7 @@ function processMemberAddEvent(
|
|||||||
event.membership.user.homeUserId,
|
event.membership.user.homeUserId,
|
||||||
event.membership.user.homeInstance,
|
event.membership.user.homeInstance,
|
||||||
db,
|
db,
|
||||||
|
{ username: event.membership.user.profile?.username },
|
||||||
);
|
);
|
||||||
|
|
||||||
// Enforce max 10 members
|
// Enforce max 10 members
|
||||||
@@ -1861,7 +1862,7 @@ function processMemberAddEvent(
|
|||||||
if (!bootstrapped) {
|
if (!bootstrapped) {
|
||||||
// Insert system message for member addition
|
// Insert system message for member addition
|
||||||
const actorUser = event.membership.addedBy
|
const actorUser = event.membership.addedBy
|
||||||
? resolveOrCreateReplicatedUser(event.membership.addedBy.homeUserId, event.membership.addedBy.homeInstance, db)
|
? resolveOrCreateReplicatedUser(event.membership.addedBy.homeUserId, event.membership.addedBy.homeInstance, db, { username: event.membership.addedBy.profile?.username })
|
||||||
: null;
|
: null;
|
||||||
const actorId = actorUser?.id ?? localUser.id;
|
const actorId = actorUser?.id ?? localUser.id;
|
||||||
|
|
||||||
@@ -2060,6 +2061,7 @@ function processOwnershipTransferEvent(
|
|||||||
event.ownership.newOwner.homeUserId,
|
event.ownership.newOwner.homeUserId,
|
||||||
event.ownership.newOwner.homeInstance,
|
event.ownership.newOwner.homeInstance,
|
||||||
db,
|
db,
|
||||||
|
{ username: event.ownership.newOwner.profile?.username },
|
||||||
);
|
);
|
||||||
|
|
||||||
db.update(schema.dmChannels)
|
db.update(schema.dmChannels)
|
||||||
@@ -2189,7 +2191,7 @@ function processFriendRequestCreateEvent(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Resolve the sender (create stub if needed — they're on a remote instance)
|
// Resolve the sender (create stub if needed — they're on a remote instance)
|
||||||
let fromUser = resolveOrCreateReplicatedUser(from.homeUserId, from.homeInstance, db);
|
let fromUser = resolveOrCreateReplicatedUser(from.homeUserId, from.homeInstance, db, { username: event.friendship.fromProfile?.username });
|
||||||
fromUser = hydrateReplicatedUserProfile(fromUser, event.friendship.fromProfile, db);
|
fromUser = hydrateReplicatedUserProfile(fromUser, event.friendship.fromProfile, db);
|
||||||
|
|
||||||
// Resolve the recipient — must be a local user on this instance
|
// Resolve the recipient — must be a local user on this instance
|
||||||
@@ -2292,7 +2294,7 @@ function processFriendRequestUpdateEvent(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Resolve the recipient (create stub if needed — they're on the remote instance)
|
// Resolve the recipient (create stub if needed — they're on the remote instance)
|
||||||
const toUser = resolveOrCreateReplicatedUser(to.homeUserId, to.homeInstance, db);
|
const toUser = resolveOrCreateReplicatedUser(to.homeUserId, to.homeInstance, db, { username: event.friendship.toProfile?.username });
|
||||||
|
|
||||||
// Find the pending request
|
// Find the pending request
|
||||||
const pendingRequest = db
|
const pendingRequest = db
|
||||||
@@ -2425,9 +2427,9 @@ function processFriendAddEvent(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Resolve both users (create stubs if needed) and hydrate with profile data
|
// Resolve both users (create stubs if needed) and hydrate with profile data
|
||||||
let fromUser = resolveOrCreateReplicatedUser(from.homeUserId, from.homeInstance, db);
|
let fromUser = resolveOrCreateReplicatedUser(from.homeUserId, from.homeInstance, db, { username: event.friendship.fromProfile?.username });
|
||||||
fromUser = hydrateReplicatedUserProfile(fromUser, event.friendship.fromProfile, db);
|
fromUser = hydrateReplicatedUserProfile(fromUser, event.friendship.fromProfile, db);
|
||||||
let toUser = resolveOrCreateReplicatedUser(to.homeUserId, to.homeInstance, db);
|
let toUser = resolveOrCreateReplicatedUser(to.homeUserId, to.homeInstance, db, { username: event.friendship.toProfile?.username });
|
||||||
toUser = hydrateReplicatedUserProfile(toUser, event.friendship.toProfile, db);
|
toUser = hydrateReplicatedUserProfile(toUser, event.friendship.toProfile, db);
|
||||||
|
|
||||||
// Idempotency: if friendship already exists, accept as no-op
|
// Idempotency: if friendship already exists, accept as no-op
|
||||||
|
|||||||
Reference in New Issue
Block a user