import { UnitComponentsSDK } from './UnitComponentsSdkManager';

import { getUnitScriptUrl } from './UnitComponentsSdkManager.utils.internal';
import { store } from '../store/store';
import { setUnitScript } from '../slices/ConfigurationSlice';

let isLoadingScript = false;

export const fetchUnitScript = async () => {
  const env = UnitComponentsSDK.getEnv();
  const webVersioningStrategy = UnitComponentsSDK.getWebVersioningStrategy();
  if (isLoadingScript || !env) {
    // init function is called and success OR in progress
    return null;
  }
  isLoadingScript = true;
  try {
    const unitScriptRes = await fetch(getUnitScriptUrl(env, webVersioningStrategy));
    const unitScript = await unitScriptRes.text();
    if (unitScript) {
      store.dispatch(setUnitScript(unitScript));
    }
    return null;
  } catch (e) {
    console.log(e);
    return null;
  } finally {
    isLoadingScript = false;
  }
};
