Skip to content
Snippets Groups Projects
Select Git revision
  • e3fb0aa2223243d01d76e3358f12023452db6466
  • mui5-annotation-on-video-stable default
  • get_setter_canvasSizeInformations
  • fix-error-div-into-p
  • annotation-on-video-v2
  • detached
  • annotation-on-video-r17
  • mui5
  • mui5-react-18
  • jacob-test
  • annotation-on-video protected
  • master
  • test-antoinev1
  • 20-fetch-thumbnail-on-annotation
  • add-research-field
  • Save
  • add-plugin
  • 14-wip-no-seek-to
  • 14-bug-on-video-time-control
  • 9_wip_videotests
  • _upgrade_material_ui
  • latest-tetras-16
  • v3.3.0
  • v3.2.0
  • v3.1.1
  • v3.1.0
  • v3.0.0
  • v3.0.0-rc.7
  • v3.0.0-rc.6
  • v3.0.0-rc.5
  • v3.0.0-rc.4
  • v3.0.0-rc.3
  • v3.0.0-rc.2
  • v3.0.0-rc.1
  • v3.0.0-beta.10
  • v3.0.0-beta.9
  • v3.0.0-beta.8
  • v3.0.0-beta.7
  • v3.0.0-beta.6
  • v3.0.0-beta.5
  • v3.0.0-beta.3
41 results

app.js

Blame
  • app.js 1.79 KiB
    import {
      all, call, put, takeEvery,
    } from 'redux-saga/effects';
    import { v4 as uuid } from 'uuid';
    import { fetchManifests } from './iiif';
    import { fetchWindowManifest } from './windows';
    import { addWindow } from '../actions';
    import ActionTypes from '../actions/action-types';
    
    /** */
    export function* importState(action) {
      yield all([
        ...Object.entries(action.state.windows || {})
          .map(([_, window]) => call(fetchWindowManifest, { id: window.id, payload: window })),
        ...Object.entries(action.state.manifests || {})
          .filter(([_, manifest]) => !manifest.json)
          .map(([_, manifest]) => call(fetchManifests, manifest.id)),
      ]);
    }
    
    /** Add windows from the imported config */
    export function* importConfig({ config: { thumbnailNavigation, windows } }) {
      if (!windows || windows.length === 0) return;
    
      const thunks = yield all(
        windows.map((miradorWindow) => {
          const windowId = `window-${uuid()}`;
          const manifestId = miradorWindow.manifestId || miradorWindow.loadedManifest;
    
          return call(addWindow, {
            // these are default values ...
            id: windowId,
            manifestId,
            thumbnailNavigationPosition: thumbnailNavigation && thumbnailNavigation.defaultPosition,
            // ... overridden by values from the window configuration ...
            ...miradorWindow,
          });
        }),
      );
    
      yield all(thunks.map(thunk => put(thunk)));
    }
    
    /** */
    export function* fetchCollectionManifests(action) {
      const { collectionPath, manifestId } = action;
      yield call(fetchManifests, manifestId, ...collectionPath);
    }
    
    /** */
    export default function* appSaga() {
      yield all([
        takeEvery(ActionTypes.IMPORT_MIRADOR_STATE, importState),
        takeEvery(ActionTypes.IMPORT_CONFIG, importConfig),
        takeEvery(ActionTypes.SHOW_COLLECTION_DIALOG, fetchCollectionManifests),
      ]);
    }