All files / src/DotProvider/hooks useDotProvider.js

87.5% Statements 7/8
100% Branches 4/4
75% Functions 3/4
87.5% Lines 7/8

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                                                    50x                     50x   50x 50x 50x 50x         50x        
import { useLayoutEffect } from 'react';
import useDownloadAssetsAndSetAttr from './useDownloadAssetsAndSetAttr';
import '@zohodesk/components/assets/Contrast/lightContrastLightness.module.css';
import '@zohodesk/components/assets/Contrast/darkContrastLightness.module.css';
import '@zohodesk/components/assets/Contrast/pureDarkContrastLightness.module.css';
import '@zohodesk/variables/assets/colorVariables.module.css';
import '@zohodesk/variables/assets/dotVariables.module.css';
import '@zohodesk/components/es/common/basic.module.css';
import '@zohodesk/variables/lib/fontFamilyVariables.module.css';
import '@zohodesk/components/lib/common/boxShadow.module.css';
import '../../common/dot_boxShadow.module.css';
 
function useDotProvider({
    themeAppearance,
    themeColor,
    baseZoomUnit,
    baseFontUnit,
    getProviderElement,
    zoomUnitVariable,
    fontUnitVariable,
    themeAppearanceAttr,
    themeColorAttr,
    onAssetsDownloadSuccess,
    getAssetsPromises,
  }) {
    
    const assetsPromises = useDownloadAssetsAndSetAttr({
      themeAppearance,
      themeColor,
      baseZoomUnit,
      baseFontUnit,
      getProviderElement,
      zoomUnitVariable,
      fontUnitVariable,
      themeAppearanceAttr,
      themeColorAttr
    });
    const { themeAppearancePromise, themeColorPromise, zoomSizePromise, fontSizePromise }= assetsPromises;
 
    const allPromises= [...themeAppearancePromise, ...themeColorPromise, zoomSizePromise, fontSizePromise];
    useLayoutEffect(() => {
      Promise.all(allPromises).then(() => {
        typeof onAssetsDownloadSuccess === 'function' && onAssetsDownloadSuccess();
      }).catch(error => {
        console.error('Error loading assets:', error);
      });
      
      typeof getAssetsPromises === 'function' && getAssetsPromises(assetsPromises);
    }, [...allPromises]);
}
  
export default useDotProvider;