refactor(friends): extract onRelationshipChange prop from UserDiscoverCard

This commit is contained in:
Jannis Braun
2026-03-25 01:56:25 +01:00
parent 4e170f0b69
commit 970af77169
@@ -432,6 +432,7 @@ function AddFriendTab({
const discoverQuery = useDiscoverStore((s) => s.searchQuery); const discoverQuery = useDiscoverStore((s) => s.searchQuery);
const setDiscoverQuery = useDiscoverStore((s) => s.setSearchQuery); const setDiscoverQuery = useDiscoverStore((s) => s.setSearchQuery);
const fetchUsers = useDiscoverStore((s) => s.fetchUsers); const fetchUsers = useDiscoverStore((s) => s.fetchUsers);
const updateRelationship = useDiscoverStore((s) => s.updateRelationship);
const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null); const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
@@ -536,6 +537,7 @@ function AddFriendTab({
key={`${user.id}:${user._instanceOrigin}`} key={`${user.id}:${user._instanceOrigin}`}
user={user} user={user}
onOpenDm={onOpenDm} onOpenDm={onOpenDm}
onRelationshipChange={updateRelationship}
/> />
))} ))}
</div> </div>
@@ -550,13 +552,14 @@ function AddFriendTab({
function UserDiscoverCard({ function UserDiscoverCard({
user, user,
onOpenDm, onOpenDm,
onRelationshipChange,
}: { }: {
user: TaggedDiscoverUser; user: TaggedDiscoverUser;
onOpenDm: (userId: string, origin: string, homeUserId?: string) => void; onOpenDm: (userId: string, origin: string, homeUserId?: string) => void;
onRelationshipChange: (userId: string, origin: string, relationship: TaggedDiscoverUser['relationship'], requestId?: string) => void;
}) { }) {
const sendFriendRequest = useSocialStore((s) => s.sendFriendRequest); const sendFriendRequest = useSocialStore((s) => s.sendFriendRequest);
const updateFriendRequest = useSocialStore((s) => s.updateFriendRequest); const updateFriendRequest = useSocialStore((s) => s.updateFriendRequest);
const updateRelationship = useDiscoverStore((s) => s.updateRelationship);
const openModal = useUIStore((s) => s.openModal); const openModal = useUIStore((s) => s.openModal);
const [actionLoading, setActionLoading] = useState(false); const [actionLoading, setActionLoading] = useState(false);
const [error, setError] = useState(''); const [error, setError] = useState('');
@@ -587,7 +590,7 @@ function UserDiscoverCard({
const username = user._instanceOrigin ? baseName + '@' + (originLabel ?? '') : baseName; const username = user._instanceOrigin ? baseName + '@' + (originLabel ?? '') : baseName;
try { try {
const requestId = await sendFriendRequest(username); const requestId = await sendFriendRequest(username);
updateRelationship(user.id, user._instanceOrigin, 'outbound_pending', requestId); onRelationshipChange(user.id, user._instanceOrigin, 'outbound_pending', requestId);
} catch (err) { } catch (err) {
if (err instanceof InstanceNotConnectedError) { if (err instanceof InstanceNotConnectedError) {
setConnectModal({ domain: err.domain, isReconnect: false, username }); setConnectModal({ domain: err.domain, isReconnect: false, username });
@@ -610,7 +613,7 @@ function UserDiscoverCard({
setActionLoading(true); setActionLoading(true);
try { try {
const requestId = await sendFriendRequest(username); const requestId = await sendFriendRequest(username);
updateRelationship(user.id, user._instanceOrigin, 'outbound_pending', requestId); onRelationshipChange(user.id, user._instanceOrigin, 'outbound_pending', requestId);
const verb = result === 'reconnect' ? 'Reconnected to' : 'Connected to'; const verb = result === 'reconnect' ? 'Reconnected to' : 'Connected to';
addToast(`${verb} ${domain} — friend request sent!`, 'success'); addToast(`${verb} ${domain} — friend request sent!`, 'success');
} catch (err) { } catch (err) {
@@ -626,7 +629,7 @@ function UserDiscoverCard({
setError(''); setError('');
try { try {
await updateFriendRequest(user.requestId, 'accepted'); await updateFriendRequest(user.requestId, 'accepted');
updateRelationship(user.id, user._instanceOrigin, 'friends'); onRelationshipChange(user.id, user._instanceOrigin, 'friends');
} catch (err) { } catch (err) {
setError(err instanceof Error ? err.message : 'Failed to accept request'); setError(err instanceof Error ? err.message : 'Failed to accept request');
} finally { } finally {
@@ -640,7 +643,7 @@ function UserDiscoverCard({
setError(''); setError('');
try { try {
await updateFriendRequest(user.requestId, 'declined'); await updateFriendRequest(user.requestId, 'declined');
updateRelationship(user.id, user._instanceOrigin, 'none'); onRelationshipChange(user.id, user._instanceOrigin, 'none');
} catch (err) { } catch (err) {
setError(err instanceof Error ? err.message : 'Failed to decline request'); setError(err instanceof Error ? err.message : 'Failed to decline request');
} finally { } finally {
@@ -658,7 +661,7 @@ function UserDiscoverCard({
? (useInstanceStore.getState().instances.find(i => i.origin === origin)?.api ?? api) ? (useInstanceStore.getState().instances.find(i => i.origin === origin)?.api ?? api)
: api; : api;
await client.social.cancelRequest(user.requestId); await client.social.cancelRequest(user.requestId);
updateRelationship(user.id, user._instanceOrigin, 'none'); onRelationshipChange(user.id, user._instanceOrigin, 'none');
} catch (err) { } catch (err) {
setError(err instanceof Error ? err.message : 'Failed to cancel request'); setError(err instanceof Error ? err.message : 'Failed to cancel request');
} finally { } finally {