Limit-Status im Upload-Flow anzeigen (Warnbanner + Sperrzustände).
Upload-Fehlercodes auswerten und freundliche Dialoge zeigen.
This commit is contained in:
@@ -19,13 +19,48 @@ export interface PackageData {
|
||||
id: number;
|
||||
name: string;
|
||||
max_photos: number;
|
||||
max_guests?: number | null;
|
||||
gallery_days?: number | null;
|
||||
}
|
||||
|
||||
export interface LimitUsageSummary {
|
||||
limit: number | null;
|
||||
used: number;
|
||||
remaining: number | null;
|
||||
percentage: number | null;
|
||||
state: 'ok' | 'warning' | 'limit_reached' | 'unlimited';
|
||||
threshold_reached: number | null;
|
||||
next_threshold: number | null;
|
||||
thresholds: number[];
|
||||
}
|
||||
|
||||
export interface GallerySummary {
|
||||
state: 'ok' | 'warning' | 'expired' | 'unlimited';
|
||||
expires_at: string | null;
|
||||
days_remaining: number | null;
|
||||
warning_thresholds: number[];
|
||||
warning_triggered: number | null;
|
||||
warning_sent_at: string | null;
|
||||
expired_notified_at: string | null;
|
||||
}
|
||||
|
||||
export interface EventPackageLimits {
|
||||
photos: LimitUsageSummary | null;
|
||||
guests: LimitUsageSummary | null;
|
||||
gallery: GallerySummary | null;
|
||||
can_upload_photos: boolean;
|
||||
can_add_guests: boolean;
|
||||
}
|
||||
|
||||
export interface EventPackage {
|
||||
id: number;
|
||||
event_id?: number;
|
||||
package_id?: number;
|
||||
used_photos: number;
|
||||
expires_at: string;
|
||||
package: PackageData;
|
||||
used_guests?: number;
|
||||
expires_at: string | null;
|
||||
package: PackageData | null;
|
||||
limits: EventPackageLimits | null;
|
||||
}
|
||||
|
||||
export interface EventStats {
|
||||
@@ -39,6 +74,8 @@ export type FetchEventErrorCode =
|
||||
| 'token_expired'
|
||||
| 'token_revoked'
|
||||
| 'token_rate_limited'
|
||||
| 'access_rate_limited'
|
||||
| 'gallery_expired'
|
||||
| 'event_not_public'
|
||||
| 'network_error'
|
||||
| 'server_error'
|
||||
@@ -195,5 +232,9 @@ export async function getEventPackage(eventToken: string): Promise<EventPackage
|
||||
if (res.status === 404) return null;
|
||||
throw new Error('Failed to load event package');
|
||||
}
|
||||
return await res.json();
|
||||
const payload = await res.json();
|
||||
return {
|
||||
...payload,
|
||||
limits: payload?.limits ?? null,
|
||||
} as EventPackage;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user