All files / frontend/src/services service.ts

4.54% Statements 1/22
0% Branches 0/2
0% Functions 0/14
5% Lines 1/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90                                                                                                                                                      2x                            
import * as apiService from './api-service';
import { serviceSchemas, WorkspaceDetails, Configurations, SiteAndWorkspaceData } from '../../types';
import { validateServiceResponse } from '../utils/validation';
 
// NOTE: Manual caching removed - TanStack Query handles all caching now
// Use query options from /queries/options.ts with useQuery for cached data fetching
 
// COMPATIBILITY SHIMS (temporary during migration)
// These methods are deprecated - use TanStack Query hooks instead
 
/**
 * @deprecated Use useConfigurations() hook from /queries/hooks.ts instead
 */
function getConfigurations(refetch?: boolean): Promise<Configurations> {
  return apiService.api.getConfigurations({ invalidateCache: refetch || false }).then((configurations) => {
    return validateServiceResponse('getConfigurations', serviceSchemas.getConfigurations, configurations);
  });
}
 
/**
 * @deprecated Use useSiteAndWorkspaceData() hook from /queries/hooks.ts instead
 */
function getSiteAndWorkspaceData(siteKey: string, workspaceKey: string): Promise<SiteAndWorkspaceData> {
  const bundle: Partial<SiteAndWorkspaceData> = {};
 
  return getConfigurations()
    .then((configurations) => {
      bundle.configurations = configurations;
      bundle.site = configurations.sites.find((site) => site.key === siteKey);
      return apiService.api.listWorkspaces(siteKey);
    })
    .then((workspaces) => {
      bundle.siteWorkspaces = workspaces;
      bundle.workspace = workspaces.find((workspace) => workspace.key === workspaceKey);
      return apiService.api.getWorkspaceDetails(siteKey, workspaceKey);
    })
    .then((workspaceDetails) => {
      bundle.workspaceDetails = workspaceDetails;
 
      const validated = validateServiceResponse(
        'getSiteAndWorkspaceData',
        serviceSchemas.getSiteAndWorkspaceData,
        bundle
      );
 
      return validated;
    });
}
 
/**
 * @deprecated Use queryClient.invalidateQueries() instead
 */
function clearCache(): void {
  console.warn('service.clearCache() is deprecated. Use queryClient.invalidateQueries() instead.');
  // No-op - caching is handled by TanStack Query now
}
 
function getWorkspaceDetails(siteKey: string, workspaceKey: string): Promise<WorkspaceDetails> {
  return apiService.api.getWorkspaceDetails(siteKey, workspaceKey).then((details) => {
    return validateServiceResponse('getWorkspaceDetails', serviceSchemas.getWorkspaceDetails, details);
  });
}
 
function getSiteCreatorMessage(siteKey: string, workspaceKey: string): Promise<string> {
  return apiService.getSiteCreatorMessage(siteKey, workspaceKey);
}
 
function serveWorkspace(siteKey: string, workspaceKey: string, serveKey: string): void {
  apiService.serveWorkspace(siteKey, workspaceKey, serveKey);
}
 
function openWorkspaceDir(siteKey: string, workspaceKey: string): void {
  apiService.openWorkspaceDir(siteKey, workspaceKey);
}
 
const service = {
  api: apiService.api,
  // Composition methods with business logic
  getWorkspaceDetails,
  getSiteCreatorMessage,
  serveWorkspace,
  openWorkspaceDir,
  // Compatibility shims (deprecated - migrate to TanStack Query)
  getConfigurations,
  getSiteAndWorkspaceData,
  clearCache,
};
 
export default service;