Skip to content

useAssetsApi Composable ​

File Information ​

  • Path: app/composables/api/useAssetsApi.ts
  • Purpose: Asset operations API (view count, details, conversion, download tracking)
  • Category: Asset API Composable

Overview ​

The useAssetsApi composable provides functionality for asset-related operations including viewing asset counts, fetching asset details, converting asset resolution, and recording download history.

Functions ​

viewAssetsCountApi ​

Records asset view count.

Signature:

typescript
viewAssetsCountApi(payload: any): Promise<any>

Parameters:

  • payload: any - View count payload (typically includes asset IDs)

Returns:

  • Promise<any> - Response data

API Endpoint: POST /digital/view-asset-count

Usage:

typescript
const { viewAssetsCountApi } = useAssetsApi()

await viewAssetsCountApi({
  asset_ids: [1, 2, 3],
  workspace_id: workspaceId
})

getAssetDetails ​

Fetches detailed information about a specific asset.

Signature:

typescript
getAssetDetails(
  id: any,
  workspace_id: any
): Promise<any>

Parameters:

  • id: any - Asset ID
  • workspace_id: any - Workspace ID

Returns:

  • Promise<any> - Asset details response

API Endpoint: POST /digital/view-detail?digital_assets_id={id}&workspace_id={workspace_id}

Usage:

typescript
const { getAssetDetails } = useAssetsApi()

const details = await getAssetDetails(assetId, workspaceId)
// details contains full asset information

convertResolution ​

Converts asset to a different resolution/format.

Signature:

typescript
convertResolution(params: any): Promise<Blob>

Parameters:

  • params: any - Conversion parameters (asset ID, resolution, format, etc.)

Returns:

  • Promise<Blob> - Converted asset as blob

API Endpoint: POST /digital/convert-asset (responseType: "blob")

Usage:

typescript
const { convertResolution } = useAssetsApi()

const blob = await convertResolution({
  digital_assets_id: assetId,
  workspace_id: workspaceId,
  resolution: '1920x1080',
  format: 'png'
})

// Use blob for download or display
const url = URL.createObjectURL(blob)

recordDownloadHistory ​

Records asset download in history.

Signature:

typescript
recordDownloadHistory(params: any): Promise<any>

Parameters:

  • params: any - Download parameters (asset ID, workspace ID, etc.)

Returns:

  • Promise<any> - Response data

API Endpoint: POST /digital/download-count?{params}

Usage:

typescript
const { recordDownloadHistory } = useAssetsApi()

await recordDownloadHistory({
  digital_assets_id: assetId,
  workspace_id: workspaceId
})

Error Handling ​

All functions include error handling, but errors are not explicitly caught in the composable. Components should handle errors:

typescript
try {
  const details = await getAssetDetails(assetId, workspaceId)
} catch (error) {
  console.error('Failed to get asset details:', error)
  // Handle error in UI
}

Integration with API Client ​

The composable uses the global $api client:

typescript
const { $api } = useNuxtApp()

Use Cases ​

View Asset Details ​

typescript
const { getAssetDetails } = useAssetsApi()

const loadAssetDetails = async (assetId: string) => {
  try {
    const details = await getAssetDetails(assetId, workspaceId)
    // Display asset details...
  } catch (error) {
    // Show error message
  }
}

Convert and Download Asset ​

typescript
const { convertResolution, recordDownloadHistory } = useAssetsApi()

const convertAndDownload = async (assetId: string, resolution: string) => {
  try {
    // Convert asset
    const blob = await convertResolution({
      digital_assets_id: assetId,
      workspace_id: workspaceId,
      resolution
    })
    
    // Download blob
    const url = URL.createObjectURL(blob)
    const a = document.createElement('a')
    a.href = url
    a.download = `asset-${assetId}.png`
    a.click()
    
    // Record download
    await recordDownloadHistory({
      digital_assets_id: assetId,
      workspace_id: workspaceId
    })
  } catch (error) {
    console.error('Conversion failed:', error)
  }
}

Track Asset Views ​

typescript
const { viewAssetsCountApi } = useAssetsApi()

const trackView = async (assetIds: number[]) => {
  await viewAssetsCountApi({
    asset_ids: assetIds,
    workspace_id: workspaceId
  })
}