Skip to content

useWorkspaceApi Composable ​

File Information ​

  • Path: app/composables/api/useWorkspaceApi.ts
  • Purpose: Workspace operations API
  • Category: Workspace API Composable

Overview ​

The useWorkspaceApi composable provides functionality for workspace-related operations including checking public portal access and updating user instance information.

Functions ​

checkPublicPortal ​

Checks if a URL/brand has public portal access.

Signature:

typescript
checkPublicPortal(url: string): Promise<CheckPublicPortalResponse>

Parameters:

  • url: string - Brand URL/domain to check

Returns:

  • Promise<CheckPublicPortalResponse> - Public portal check response

API Endpoint: POST /check-public-portal (skipAuth: true - public endpoint)

Usage:

typescript
const { checkPublicPortal } = useWorkspaceApi()

const isPublic = await checkPublicPortal('example-brand')
// Returns whether portal is public

updateUserInstance ​

Updates user instance information (profile, settings, etc.).

Signature:

typescript
updateUserInstance(formData: FormData): Promise<UpdateUserInstanceResponse>

Parameters:

  • formData: FormData - Form data with user instance updates

Returns:

  • Promise<UpdateUserInstanceResponse> - Update response

API Endpoint: POST /digital/instance/update-user

Usage:

typescript
const { updateUserInstance } = useWorkspaceApi()

const formData = new FormData()
formData.append('name', 'New Name')
formData.append('email', '[email protected]')
formData.append('avatar', file)

const response = await updateUserInstance(formData)

Error Handling ​

All functions include error logging:

typescript
catch (error: any) {
  console.error('[WorkspaceAPI] {functionName} - Error:', error)
  throw error
}

Type Definitions ​

typescript
import type { CheckPublicPortalResponse, UpdateUserInstanceResponse } from '~/types'

Integration with API Client ​

The composable uses the global $api client:

typescript
const { $api } = useNuxtApp()

Use Cases ​

Check Public Portal ​

typescript
const { checkPublicPortal } = useWorkspaceApi()

const verifyPortal = async (brandUrl: string) => {
  try {
    const response = await checkPublicPortal(brandUrl)
    if (response.isPublic) {
      // Portal is public, allow access
    } else {
      // Portal is private, require authentication
    }
  } catch (error) {
    console.error('Failed to check portal:', error)
  }
}

Update User Instance ​

typescript
const { updateUserInstance } = useWorkspaceApi()

const updateInstance = async (userData: any, avatarFile?: File) => {
  const formData = new FormData()
  
  Object.keys(userData).forEach(key => {
    formData.append(key, userData[key])
  })
  
  if (avatarFile) {
    formData.append('avatar', avatarFile)
  }
  
  try {
    const response = await updateUserInstance(formData)
    snackbar.showSuccess('Profile updated successfully')
  } catch (error) {
    snackbar.showError('Failed to update profile')
  }
}