export const RIBBIT_BANK_COOKIE = 'gbp_ribbit_bank' const YEAR_SECONDS = 365 * 24 * 60 * 60 const MAX_TOKENS = 10 function writeCookie(value: string, maxAge: number): void { const secure = location.protocol === 'https:' ? '; Secure' : '' document.cookie = `${RIBBIT_BANK_COOKIE}=${encodeURIComponent(value)}; Max-Age=${maxAge}; Path=/; SameSite=Lax${secure}` } export function getRibbitBankCookie(): string { const parts = document.cookie.split(';') for (const part of parts) { const trimmed = part.trim() if (trimmed.startsWith(`${RIBBIT_BANK_COOKIE}=`)) { return decodeURIComponent(trimmed.substring(RIBBIT_BANK_COOKIE.length + 1)) } } return '' } export function getRibbitBankCookieTokens(): string[] { const raw = getRibbitBankCookie() if (!raw) return [] const seen = new Set() const tokens: string[] = [] for (const part of raw.split(',')) { const token = part.trim() if (!token || seen.has(token)) continue seen.add(token) tokens.push(token) } return tokens } export function setRibbitBankCookie(token: string): void { addRibbitBankCookie(token) } export function addRibbitBankCookie(token: string): void { if (!token) return const tokens = getRibbitBankCookieTokens().filter((item) => item !== token) tokens.unshift(token) writeCookie(tokens.slice(0, MAX_TOKENS).join(','), YEAR_SECONDS) } export function removeRibbitBankCookie(token: string): void { const tokens = getRibbitBankCookieTokens().filter((item) => item !== token) if (tokens.length) { writeCookie(tokens.join(','), YEAR_SECONDS) return } clearRibbitBankCookie() } export function clearRibbitBankCookie(): void { writeCookie('', 0) }