Polish boursecu UX: branding logos, home price stats, assets, and desktop footer.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,13 +1,18 @@
|
||||
import { ref } from 'vue'
|
||||
import { getProducts } from '@/api/products'
|
||||
import type { Product } from '@/models/products'
|
||||
|
||||
/** Shared product catalog — dedupes getProducts() across wallet assets and chart offset. */
|
||||
let catalogCache: Product[] | null = null
|
||||
const catalogProducts = ref<Product[]>([])
|
||||
let catalogPromise: Promise<Product[]> | null = null
|
||||
|
||||
export function getProductsCatalogRef() {
|
||||
return catalogProducts
|
||||
}
|
||||
|
||||
export function getProductsCatalog(force = false): Promise<Product[]> {
|
||||
if (!force && catalogCache) {
|
||||
return Promise.resolve(catalogCache)
|
||||
if (!force && catalogProducts.value.length > 0) {
|
||||
return Promise.resolve(catalogProducts.value)
|
||||
}
|
||||
|
||||
if (!force && catalogPromise) {
|
||||
@@ -16,8 +21,8 @@ export function getProductsCatalog(force = false): Promise<Product[]> {
|
||||
|
||||
catalogPromise = getProducts()
|
||||
.then((products) => {
|
||||
catalogCache = products ?? []
|
||||
return catalogCache
|
||||
catalogProducts.value = products ?? []
|
||||
return catalogProducts.value
|
||||
})
|
||||
.finally(() => {
|
||||
catalogPromise = null
|
||||
@@ -27,6 +32,6 @@ export function getProductsCatalog(force = false): Promise<Product[]> {
|
||||
}
|
||||
|
||||
export function clearProductsCatalog() {
|
||||
catalogCache = null
|
||||
catalogProducts.value = []
|
||||
catalogPromise = null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user