diff --git a/lib/shared/community-utils.js b/lib/shared/community-utils.js --- a/lib/shared/community-utils.js +++ b/lib/shared/community-utils.js @@ -33,6 +33,7 @@ import { threadPermissions } from '../types/thread-permission-types.js'; import { threadTypes } from '../types/thread-types-enum.js'; import type { ThreadJoinPayload } from '../types/thread-types.js'; +import { FetchTimeout } from '../utils/errors.js'; import { useCurrentUserFID } from '../utils/farcaster-utils.js'; import { useDispatchActionPromise } from '../utils/redux-promise-utils.js'; import { useDispatch, useSelector } from '../utils/redux-utils.js'; @@ -357,9 +358,13 @@ await joinThreadPromise; setStep('join_thread'); } catch (e) { - setLinkStatus?.((status: LinkStatus) => - status === 'valid' ? 'invalid' : status, - ); + if (e instanceof FetchTimeout) { + setLinkStatus?.('timed_out'); + } else { + setLinkStatus?.((status: LinkStatus) => + status === 'valid' ? 'invalid' : status, + ); + } ongoingJoinData.reject(); setOngoingJoinData(null); } finally { @@ -411,9 +416,13 @@ setStep('finished'); ongoingJoinData.resolve(); } catch (e) { - setLinkStatus?.((status: LinkStatus) => - status === 'valid' ? 'invalid' : status, - ); + if (e instanceof FetchTimeout) { + setLinkStatus?.('timed_out'); + } else { + setLinkStatus?.((status: LinkStatus) => + status === 'valid' ? 'invalid' : status, + ); + } ongoingJoinData.reject(); } finally { setOngoingJoinData(null);