configureStore.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import AppStore from "./stores/AppStore";
  2. // Get environment settings
  3. const getEnvironment = async () => {
  4. /* istanbul ignore next */
  5. if (process.env.NODE_ENV === "development" && !process.env.BUILD_NO_SERVER) {
  6. return (await import("./env/development")).default;
  7. }
  8. return (await import("./env/production")).default;
  9. };
  10. // Configure default store
  11. export const configureStore = async (params, events) => {
  12. if (params.options?.secureMode) window.LS_SECURE_MODE = true;
  13. const env = await getEnvironment();
  14. params = { ...params };
  15. // Support forceBottomPanel option
  16. if (params?.settings?.forceBottomPanel) {
  17. params.bottomSidePanel = true;
  18. params.settings = { ...(params.settings || {}), forceBottomPanel: true };
  19. }
  20. if (!params?.config && env.getExample) {
  21. const { task, config } = await env.getExample();
  22. params.config = config;
  23. params.task = task;
  24. } else if (params?.task) {
  25. params.task = env.getData(params.task);
  26. }
  27. if (params.task?.id) {
  28. params.taskHistory = [{ taskId: params.task.id, annotationId: null }];
  29. }
  30. const store = AppStore.create(params, {
  31. ...env.configureApplication(params),
  32. events,
  33. });
  34. store.initializeStore({
  35. ...(params.task ?? {}),
  36. // allow external integrations to control when the app is fully hydrated
  37. // default behaviour is to consider this point as hydrated
  38. hydrated: params?.hydrated ?? true,
  39. users: params.users ?? [],
  40. annotationHistory: params.history ?? [],
  41. });
  42. return { store, getRoot: env.rootElement };
  43. };