fixed reload flash for task picker page
This commit is contained in:
@@ -19,11 +19,13 @@ interface UseEventDataResult {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const NO_TOKEN_ERROR_MESSAGE = 'Es wurde kein Einladungscode übergeben.';
|
const NO_TOKEN_ERROR_MESSAGE = 'Es wurde kein Einladungscode übergeben.';
|
||||||
|
const eventCache = new Map<string, EventData>();
|
||||||
|
|
||||||
export function useEventData(): UseEventDataResult {
|
export function useEventData(): UseEventDataResult {
|
||||||
const { token } = useParams<{ token: string }>();
|
const { token } = useParams<{ token: string }>();
|
||||||
const [event, setEvent] = useState<EventData | null>(null);
|
const cachedEvent = token ? eventCache.get(token) ?? null : null;
|
||||||
const [status, setStatus] = useState<EventDataStatus>(token ? 'loading' : 'error');
|
const [event, setEvent] = useState<EventData | null>(cachedEvent);
|
||||||
|
const [status, setStatus] = useState<EventDataStatus>(token ? (cachedEvent ? 'ready' : 'loading') : 'error');
|
||||||
const [errorMessage, setErrorMessage] = useState<string | null>(token ? null : NO_TOKEN_ERROR_MESSAGE);
|
const [errorMessage, setErrorMessage] = useState<string | null>(token ? null : NO_TOKEN_ERROR_MESSAGE);
|
||||||
const [errorCode, setErrorCode] = useState<FetchEventErrorCode | null>(token ? null : 'invalid_token');
|
const [errorCode, setErrorCode] = useState<FetchEventErrorCode | null>(token ? null : 'invalid_token');
|
||||||
|
|
||||||
@@ -39,7 +41,10 @@ export function useEventData(): UseEventDataResult {
|
|||||||
let cancelled = false;
|
let cancelled = false;
|
||||||
|
|
||||||
const loadEvent = async () => {
|
const loadEvent = async () => {
|
||||||
|
const cached = eventCache.get(token) ?? null;
|
||||||
|
if (!cached) {
|
||||||
setStatus('loading');
|
setStatus('loading');
|
||||||
|
}
|
||||||
setErrorCode(null);
|
setErrorCode(null);
|
||||||
setErrorMessage(null);
|
setErrorMessage(null);
|
||||||
|
|
||||||
@@ -49,6 +54,7 @@ export function useEventData(): UseEventDataResult {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
eventCache.set(token, eventData);
|
||||||
setEvent(eventData);
|
setEvent(eventData);
|
||||||
setStatus('ready');
|
setStatus('ready');
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@@ -56,6 +62,11 @@ export function useEventData(): UseEventDataResult {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cached) {
|
||||||
|
setEvent(cached);
|
||||||
|
setStatus('ready');
|
||||||
|
return;
|
||||||
|
}
|
||||||
setEvent(null);
|
setEvent(null);
|
||||||
setStatus('error');
|
setStatus('error');
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user