diff --git a/__tests__/src/sagas/iiif.test.js b/__tests__/src/sagas/iiif.test.js index 6ca83b90a8991dc313e9b465b21566b4bcda0d08..2172dd663b97a4b032cd67070c1c2ace918e6c1f 100644 --- a/__tests__/src/sagas/iiif.test.js +++ b/__tests__/src/sagas/iiif.test.js @@ -166,6 +166,7 @@ describe('IIIF sagas', () => { const action = { imageResource: {}, infoId: 'infoId', + windowId: 'window', }; return expectSaga(fetchInfoResponse, action) @@ -175,6 +176,7 @@ describe('IIIF sagas', () => { ok: true, tokenServiceId: undefined, type: 'mirador/RECEIVE_DEGRADED_INFO_RESPONSE', + windowId: 'window', }) .run(); }); diff --git a/src/state/actions/infoResponse.js b/src/state/actions/infoResponse.js index 3aed86c00b71c5f5dcbcf8e675232fe848a77ed6..b990a9c86a894aa8a8abc6e08971c5add1821264 100644 --- a/src/state/actions/infoResponse.js +++ b/src/state/actions/infoResponse.js @@ -6,11 +6,12 @@ import ActionTypes from './action-types'; * @param {String} infoId * @memberof ActionCreators */ -export function requestInfoResponse(infoId, imageResource) { +export function requestInfoResponse(infoId, imageResource, windowId) { return { imageResource, infoId, type: ActionTypes.REQUEST_INFO_RESPONSE, + windowId, }; } @@ -38,13 +39,14 @@ export function receiveInfoResponse(infoId, infoJson, ok, tokenServiceId) { * @param {Object} manifestJson * @memberof ActionCreators */ -export function receiveDegradedInfoResponse(infoId, infoJson, ok, tokenServiceId) { +export function receiveDegradedInfoResponse(infoId, infoJson, ok, tokenServiceId, windowId) { return { infoId, infoJson, ok, tokenServiceId, type: ActionTypes.RECEIVE_DEGRADED_INFO_RESPONSE, + windowId, }; } @@ -70,10 +72,10 @@ export function receiveInfoResponseFailure(infoId, error, tokenServiceId) { * @param {String} infoId * @memberof ActionCreators */ -export function fetchInfoResponse({ imageId, imageResource }) { +export function fetchInfoResponse({ imageId, imageResource, windowId }) { const imageService = imageResource && imageResource.getServices()[0]; const infoId = (imageId || imageService.id); - return requestInfoResponse(infoId, imageService); + return requestInfoResponse(infoId, imageService, windowId); } /** diff --git a/src/state/sagas/iiif.js b/src/state/sagas/iiif.js index 862783c10fcbe1b81246bbf8cca7464de67e1f59..f29d0b53212a3b1988873f315dd4606cc977c192 100644 --- a/src/state/sagas/iiif.js +++ b/src/state/sagas/iiif.js @@ -132,7 +132,7 @@ function* getAccessTokenService(resource) { } /** @private */ -export function* fetchInfoResponse({ imageResource, infoId, tokenService: passedTokenService }) { +export function* fetchInfoResponse({ imageResource, infoId, windowId }) { let iiifResource = imageResource; if (!iiifResource) { iiifResource = yield select(selectInfoResponse, { infoId }); @@ -141,7 +141,7 @@ export function* fetchInfoResponse({ imageResource, infoId, tokenService: passed const callbacks = { degraded: ({ json, response, tokenServiceId, - }) => receiveDegradedInfoResponse(infoId, json, response.ok, tokenServiceId), + }) => receiveDegradedInfoResponse(infoId, json, response.ok, tokenServiceId, windowId), failure: ({ error, json, response, tokenServiceId, }) => ( diff --git a/src/state/sagas/windows.js b/src/state/sagas/windows.js index 26c8b9b1aa1ea548c0ec5db74c69629fd045361d..af08e2378d089a3d21fed758de81254586ce3f8c 100644 --- a/src/state/sagas/windows.js +++ b/src/state/sagas/windows.js @@ -223,7 +223,7 @@ export function* fetchInfoResponses({ visibleCanvases: visibleCanvasIds, windowI const miradorCanvas = new MiradorCanvas(canvas); return all(miradorCanvas.iiifImageResources.map(imageResource => ( !infoResponses[imageResource.getServices()[0].id] - && put(fetchInfoResponse({ imageResource })) + && put(fetchInfoResponse({ imageResource, windowId })) )).filter(Boolean)); })); }