Files
backspace/packages/web/src/utils/friendErrors.ts
T
Jannis Braun 4fd67fa7dd fix(web): map peer_pending_local_admin to user-facing message
Without this, when the local admin gate fires on friend-add, the user
got a generic 'Could not send friend request' fallback. Now they see
'Your admin needs to approve federation with this instance' with a
pointer to Connections settings where Task 12's pending-approvals
section shows their queued request.
2026-04-26 22:43:52 +02:00

38 lines
1.8 KiB
TypeScript

/**
* Map a server error code (from POST /api/social/requests) to a human-readable
* toast message. The server emits these codes; the client renders them.
*
* Used by FriendsPage and UserProfileModal when the server returns an error
* from the friend-add flow.
*/
export function mapServerErrorToMessage(
code: string | undefined,
fallback: string | undefined,
handle: string,
): string {
switch (code) {
case 'username_required': return 'Enter a username.';
case 'cannot_friend_self': return "You can't friend yourself.";
case 'peer_rejected':
return `Instance has rejected federation. Contact your admin.`;
case 'user_not_found':
return `No user "${handle}" on the remote instance.`;
case 'already_friends': return "You're already friends with this user.";
case 'peer_pending_approval':
return "The remote instance's admin needs to approve federation. Try again later.";
case 'peer_pending_local_admin':
return "Your admin needs to approve federation with this instance. You'll see your request in Connections settings.";
case 'peer_pending':
return 'Connecting to the remote instance — try again in a moment.';
case 'incoming_request_exists':
return `${handle} has already sent you a request — open the Pending tab.`;
case 'lookup_rate_limited': return 'Too many lookups; try again in a minute.';
case 'peer_unreachable': return 'The remote instance is currently unreachable.';
case 'invalid_target_domain': return 'Invalid target domain.';
case 'not_authoritative_for_sender':
// Should not happen in normal client usage — internal protocol violation.
return 'Could not send friend request (authority error).';
default: return fallback ?? 'Could not send friend request.';
}
}