< Summary

Information
Class: toasts.server.ts
Assembly: app.lib
File(s): /home/runner/work/ClutterStock/ClutterStock/frontend/app/lib/toasts.server.ts
Tag: 58_25416222083
Line coverage
0%
Covered lines: 0
Uncovered lines: 12
Coverable lines: 12
Total lines: 26
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 10
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

/home/runner/work/ClutterStock/ClutterStock/frontend/app/lib/toasts.server.ts

#LineLine coverage
 1import { getSession, updateSession } from "~/lib/session.server";
 2import type { ToastInput } from "~/lib/toasts";
 3
 4/**
 5 * Queue a toast on the user's session. Drained on the next loader run so the
 6 * message survives a redirect (where useActionData() does not).
 7 */
 08export async function pushFlash(request: Request, flash: ToastInput): Promise<void> {
 09  const session = await getSession(request);
 010  if (!session) return; // unauthenticated requests can't carry flash messages
 011  const next = [...(session.data.flashes ?? []), flash];
 012  await updateSession(session.sid, { ...session.data, flashes: next });
 13}
 14
 15/**
 16 * Read and clear pending flashes from the session. Call once per top-level
 17 * loader (root) so a single message is not delivered twice.
 18 */
 019export async function drainFlashes(request: Request): Promise<readonly ToastInput[]> {
 020  const session = await getSession(request);
 021  if (!session) return [];
 022  const flashes = session.data.flashes ?? [];
 023  if (flashes.length === 0) return flashes;
 024  await updateSession(session.sid, { ...session.data, flashes: [] });
 025  return flashes;
 26}

Methods/Properties

pushFlash()V
drainFlashes()V