Files
MikrotikManager/lib/alerts-outbox-checkpoint.ts
T

7 lines
810 B
TypeScript

// Persists ambiguous manual queue retry per source; never stores payload or credentials.
const pending=new Set<string>(),listeners=new Set<()=>void>()
const key=(source:string)=>"mm:alerts-outbox-pending:"+source
export function outboxPending(source:string){try{return pending.has(source)||sessionStorage.getItem(key(source))==="true"}catch{return pending.has(source)}}
export function subscribeOutboxPending(listener:()=>void){listeners.add(listener);return()=>{listeners.delete(listener)}}
export function setOutboxPending(source:string,value:boolean){if(value)pending.add(source);else pending.delete(source);try{if(value)sessionStorage.setItem(key(source),"true");else sessionStorage.removeItem(key(source))}catch{/* Memory guard survives section navigation. */}for(const listener of listeners)listener()}