<?php
declare(strict_types=1);

namespace Celena\Core\Http;

/**
 * Flash-сообщения через сессию.
 * Живут ровно один запрос: при чтении потребляются.
 */
final class Flash
{
    private const SESSION_KEY = '_celena_flash';

    public static function add(string $type, string $message): void
    {
        if (session_status() !== PHP_SESSION_ACTIVE) {
            return;
        }
        $_SESSION[self::SESSION_KEY][] = ['type' => $type, 'message' => $message];
    }

    public static function success(string $message): void { self::add('success', $message); }
    public static function error(string $message): void   { self::add('error', $message); }
    public static function info(string $message): void    { self::add('info', $message); }
    public static function warning(string $message): void { self::add('warning', $message); }

    /** @return array<int, array{type:string, message:string}> */
    public static function pull(): array
    {
        if (session_status() !== PHP_SESSION_ACTIVE) {
            return [];
        }
        $items = $_SESSION[self::SESSION_KEY] ?? [];
        unset($_SESSION[self::SESSION_KEY]);
        return is_array($items) ? $items : [];
    }
}
