feat: add typed errors for federation friend request failures
This commit is contained in:
@@ -4,6 +4,24 @@ import { api } from '../api/client';
|
|||||||
import { useInstanceStore } from './instanceStore';
|
import { useInstanceStore } from './instanceStore';
|
||||||
import { normalizeUserAssets } from '../utils/assetUrls';
|
import { normalizeUserAssets } from '../utils/assetUrls';
|
||||||
|
|
||||||
|
// ─── Federation errors ────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
/** Thrown when the target domain has never been connected. */
|
||||||
|
export class InstanceNotConnectedError extends Error {
|
||||||
|
constructor(public domain: string) {
|
||||||
|
super(`Not connected to ${domain}`);
|
||||||
|
this.name = 'InstanceNotConnectedError';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Thrown when the instance entry exists but the session is disconnected/errored. */
|
||||||
|
export class InstanceDisconnectedError extends Error {
|
||||||
|
constructor(public domain: string) {
|
||||||
|
super(`Instance ${domain} is not currently connected`);
|
||||||
|
this.name = 'InstanceDisconnectedError';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ─── Tagged types (origin tracking for federation) ───────────────────────────
|
// ─── Tagged types (origin tracking for federation) ───────────────────────────
|
||||||
|
|
||||||
export type TaggedFriend = Friend & { _instanceOrigin: string };
|
export type TaggedFriend = Friend & { _instanceOrigin: string };
|
||||||
@@ -143,11 +161,11 @@ export const useSocialStore = create<SocialState>((set, get) => ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!match) {
|
if (!match) {
|
||||||
throw new Error(`Not connected to ${domain}. Add it as an instance in Settings first.`);
|
throw new InstanceNotConnectedError(domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (match.status !== 'connected') {
|
if (match.status !== 'connected') {
|
||||||
throw new Error(`Instance ${domain} is not currently connected. Check your connection in Settings.`);
|
throw new InstanceDisconnectedError(domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
// On the remote instance, the user is just "alice", not "alice@orbit"
|
// On the remote instance, the user is just "alice", not "alice@orbit"
|
||||||
|
|||||||
Reference in New Issue
Block a user