guest pwa: hide tasks when inactive and improve empty gallery state
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-02-08 21:53:47 +01:00
parent 6cc463fc70
commit 83cf863548
6 changed files with 228 additions and 5 deletions

View File

@@ -1,6 +1,7 @@
import React from 'react';
import { fetchEvent, type EventData, FetchEventError } from '../services/eventApi';
import { isTaskModeEnabled } from '@/shared/guest/lib/engagement';
import { fetchTasks } from '../services/tasksApi';
type EventDataStatus = 'idle' | 'loading' | 'ready' | 'error';
@@ -10,6 +11,7 @@ type EventDataContextValue = {
error: string | null;
token: string | null;
tasksEnabled: boolean;
hasActiveTasks: boolean;
};
const EventDataContext = React.createContext<EventDataContextValue>({
@@ -18,6 +20,7 @@ const EventDataContext = React.createContext<EventDataContextValue>({
error: null,
token: null,
tasksEnabled: true,
hasActiveTasks: true,
});
type EventDataProviderProps = {
@@ -82,6 +85,41 @@ export function EventDataProvider({
}, [token]);
const tasksEnabled = event ? isTaskModeEnabled(event) : tasksEnabledFallback;
const [hasActiveTasks, setHasActiveTasks] = React.useState<boolean>(tasksEnabledFallback);
React.useEffect(() => {
if (!token) {
setHasActiveTasks(tasksEnabledFallback);
return;
}
if (!tasksEnabled) {
setHasActiveTasks(false);
return;
}
let cancelled = false;
fetchTasks(token, { page: 1, perPage: 1 })
.then((tasks) => {
if (cancelled) {
return;
}
setHasActiveTasks(tasks.length > 0);
})
.catch(() => {
if (cancelled) {
return;
}
setHasActiveTasks(true);
});
return () => {
cancelled = true;
};
}, [tasksEnabled, tasksEnabledFallback, token]);
return (
<EventDataContext.Provider
@@ -91,6 +129,7 @@ export function EventDataProvider({
error,
token: token ?? null,
tasksEnabled,
hasActiveTasks,
}}
>
{children}