Skip to content

App Data Store ​

File Information ​

  • Path: app/stores/appData.ts
  • Purpose: Manages application data with caching support

Overview ​

The App Data Store manages application-wide data including banners, tiles, dashboard metrics, and folders with intelligent caching to improve performance.

State ​

typescript
{
  bannerData: Banner[]           // Banner carousel data
  tileData: Tile[]               // Dashboard tiles
  dashboardData: DashboardData   // Dashboard metrics
  folders: Folder[]              // Folder list
  leftMenuOpen: boolean          // Sidebar state
  logo: string                   // Brand logo
  brand: Brand | null            // Brand data
  subscriptionFeatures: object   // Subscription features
}

Actions ​

fetchDashboardData ​

Fetch dashboard metrics with caching.

typescript
await appDataStore.fetchDashboardData(options?)

Options:

  • force?: boolean - Force refresh (bypass cache)
  • ttlMs?: number - Custom cache TTL in milliseconds

Default TTL: 15 minutes

fetchBannerData ​

Fetch banner carousel data.

typescript
await appDataStore.fetchBannerData(options?)

fetchTileData ​

Fetch dashboard tiles.

typescript
await appDataStore.fetchTileData(options?)

fetchFolders ​

Fetch folder list.

typescript
await appDataStore.fetchFolders(subfolderList, options?)

fetchBrandData ​

Fetch brand data.

typescript
await appDataStore.fetchBrandData()

setLeftMenuOpen ​

Toggle sidebar state.

typescript
appDataStore.setLeftMenuOpen(true)

Caching ​

All fetch actions support caching:

typescript
// Use cache (default)
await appDataStore.fetchDashboardData()

// Force refresh
await appDataStore.fetchDashboardData({ force: true })

// Custom TTL (5 minutes)
await appDataStore.fetchDashboardData({ ttlMs: 5 * 60 * 1000 })

Usage Example ​

typescript
const appDataStore = useAppDataStore()

// Fetch dashboard data
onMounted(async () => {
  await Promise.all([
    appDataStore.fetchDashboardData(),
    appDataStore.fetchBannerData(),
    appDataStore.fetchTileData()
  ])
})