rearranged tenant admin layout, invite layouts now visible and manageable

This commit is contained in:
Codex Agent
2025-10-29 12:36:34 +01:00
parent a7bbf230fd
commit d781448914
31 changed files with 2190 additions and 1685 deletions

View File

@@ -27,8 +27,6 @@ import {
getDashboardSummary,
getEvents,
getTenantPackagesOverview,
getEventTasks,
getEventQrInvites,
TenantEvent,
TenantPackageSummary,
} from '../api';
@@ -39,11 +37,11 @@ import {
ADMIN_EVENT_VIEW_PATH,
ADMIN_EVENTS_PATH,
ADMIN_EVENT_TASKS_PATH,
ADMIN_TASKS_PATH,
ADMIN_BILLING_PATH,
ADMIN_SETTINGS_PATH,
ADMIN_WELCOME_BASE_PATH,
ADMIN_EVENT_CREATE_PATH,
buildEngagementTabPath,
} from '../constants';
import { useOnboardingProgress } from '../onboarding';
@@ -122,12 +120,18 @@ export default function DashboardPage() {
setReadiness({
hasEvent: events.length > 0,
hasTasks: false,
hasQrInvites: false,
hasTasks: primaryEvent ? (Number(primaryEvent.tasks_count ?? 0) > 0) : false,
hasQrInvites: primaryEvent
? Number(
primaryEvent.active_invites_count ??
primaryEvent.active_join_tokens_count ??
0
) > 0
: false,
hasPackage: Boolean(packages.activePackage),
primaryEventSlug: primaryEvent?.slug ?? null,
primaryEventName,
loading: Boolean(primaryEvent),
loading: false,
});
setState({
@@ -138,28 +142,7 @@ export default function DashboardPage() {
errorKey: null,
});
if (primaryEvent) {
try {
const [eventTasks, qrInvites] = await Promise.all([
getEventTasks(primaryEvent.id, 1),
getEventQrInvites(primaryEvent.slug),
]);
if (!cancelled) {
setReadiness((prev) => ({
...prev,
hasTasks: (eventTasks.data ?? []).length > 0,
hasQrInvites: qrInvites.length > 0,
loading: false,
}));
}
} catch (readinessError) {
if (!cancelled) {
console.warn('Failed to load readiness checklist', readinessError);
setReadiness((prev) => ({ ...prev, loading: false }));
}
}
} else if (!cancelled) {
if (!primaryEvent && !cancelled) {
setReadiness((prev) => ({
...prev,
hasTasks: false,
@@ -338,7 +321,7 @@ export default function DashboardPage() {
icon={<Users className="h-5 w-5" />}
label={translate('quickActions.organiseTasks.label')}
description={translate('quickActions.organiseTasks.description')}
onClick={() => navigate(ADMIN_TASKS_PATH)}
onClick={() => navigate(buildEngagementTabPath('tasks'))}
/>
<QuickAction
icon={<Sparkles className="h-5 w-5" />}
@@ -385,7 +368,7 @@ export default function DashboardPage() {
onOpenTasks={() =>
readiness.primaryEventSlug
? navigate(ADMIN_EVENT_TASKS_PATH(readiness.primaryEventSlug))
: navigate(ADMIN_TASKS_PATH)
: navigate(buildEngagementTabPath('tasks'))
}
onOpenQr={() =>
readiness.primaryEventSlug