Files
ghatreh_user/src/utils/productStreamBridge.ts
T

32 lines
735 B
TypeScript
Raw Normal View History

2026-06-29 15:27:35 +03:30
import type { Product } from '@/models/products'
type ProductListHandler = (products: Product[]) => void
const handlers = new Set<ProductListHandler>()
2026-06-29 22:43:28 +03:30
let lastProductsList: Product[] | null = null
2026-06-29 15:27:35 +03:30
export function subscribeProductListStream(handler: ProductListHandler) {
handlers.add(handler)
2026-06-29 22:43:28 +03:30
if (lastProductsList?.length) {
handler(lastProductsList)
}
2026-06-29 15:27:35 +03:30
return () => {
handlers.delete(handler)
}
}
export function applyProductsListFromStream(products: Product[]) {
if (!Array.isArray(products) || !products.length) {
return
}
2026-06-29 22:43:28 +03:30
lastProductsList = products
2026-06-29 15:27:35 +03:30
handlers.forEach((handler) => handler(products))
}
2026-06-29 22:43:28 +03:30
export function getLastStreamProductsList(): Product[] | null {
return lastProductsList
}