cozy-external-bridge 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/container/helpers.js +3 -3
- package/dist/container/hooks.spec.ts +4 -4
- package/dist/container/index.js +12 -77
- package/dist/container/useListenBridgeRequests.js +102 -0
- package/dist/container/useListenParentOriginRequest.js +50 -0
- package/dist/container/useRedirectOnLoad.js +38 -0
- package/package.json +2 -2
- package/dist/container/hooks.js +0 -53
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.handleParentOriginRequest = exports.getIframe = exports.extractUrl = void 0;
|
|
7
7
|
|
|
8
8
|
var getIframe = function getIframe() {
|
|
9
9
|
var iframe = document.getElementById('embeddedApp');
|
|
@@ -28,7 +28,7 @@ var extractUrl = function extractUrl(url) {
|
|
|
28
28
|
|
|
29
29
|
exports.extractUrl = extractUrl;
|
|
30
30
|
|
|
31
|
-
var
|
|
31
|
+
var handleParentOriginRequest = function handleParentOriginRequest(event, origin) {
|
|
32
32
|
// We do not care about message from other origin that our iframe
|
|
33
33
|
if (event.origin !== origin) {
|
|
34
34
|
return;
|
|
@@ -40,4 +40,4 @@ var handleRequestParentOrigin = function handleRequestParentOrigin(event, origin
|
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
exports.
|
|
43
|
+
exports.handleParentOriginRequest = handleParentOriginRequest;
|
|
@@ -2,7 +2,7 @@ import { renderHook } from '@testing-library/react-hooks'
|
|
|
2
2
|
import { useLocation } from 'react-router-dom'
|
|
3
3
|
|
|
4
4
|
import { getIframe } from './helpers'
|
|
5
|
-
import {
|
|
5
|
+
import { useRedirectOnLoad } from './useRedirectOnLoad'
|
|
6
6
|
|
|
7
7
|
jest.mock('react-router-dom', () => ({
|
|
8
8
|
useLocation: jest.fn()
|
|
@@ -27,7 +27,7 @@ describe('useInitialRedirection', () => {
|
|
|
27
27
|
const mockIframe = { src: 'https://alice-chat.mycozy.cloud' }
|
|
28
28
|
mockedGetIframe.mockReturnValue(mockIframe)
|
|
29
29
|
|
|
30
|
-
renderHook(() =>
|
|
30
|
+
renderHook(() => useRedirectOnLoad())
|
|
31
31
|
|
|
32
32
|
expect(mockIframe.src).toBe('https://alice-chat.mycozy.cloud')
|
|
33
33
|
})
|
|
@@ -39,7 +39,7 @@ describe('useInitialRedirection', () => {
|
|
|
39
39
|
const mockIframe = { src: 'https://alice-chat.mycozy.cloud' }
|
|
40
40
|
mockedGetIframe.mockReturnValue(mockIframe)
|
|
41
41
|
|
|
42
|
-
renderHook(() =>
|
|
42
|
+
renderHook(() => useRedirectOnLoad())
|
|
43
43
|
|
|
44
44
|
expect(mockIframe.src).toBe('https://alice-chat.mycozy.cloud/welcome')
|
|
45
45
|
})
|
|
@@ -55,7 +55,7 @@ describe('useInitialRedirection', () => {
|
|
|
55
55
|
const mockIframe = { src: 'https://alice-chat.mycozy.cloud' }
|
|
56
56
|
mockedGetIframe.mockReturnValue(mockIframe)
|
|
57
57
|
|
|
58
|
-
renderHook(() =>
|
|
58
|
+
renderHook(() => useRedirectOnLoad())
|
|
59
59
|
|
|
60
60
|
expect(mockIframe.src).toBe(
|
|
61
61
|
'https://alice-chat.mycozy.cloud/welcome/bridge'
|
package/dist/container/index.js
CHANGED
|
@@ -1,94 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
6
|
exports.useExternalBridge = void 0;
|
|
9
7
|
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
|
-
var Comlink = _interopRequireWildcard(require("comlink"));
|
|
15
|
-
|
|
16
|
-
var _react = require("react");
|
|
17
|
-
|
|
18
|
-
var _reactRouterDom = require("react-router-dom");
|
|
19
|
-
|
|
20
|
-
var _cozyClient = require("cozy-client");
|
|
21
|
-
|
|
22
|
-
var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
|
|
8
|
+
var _useListenBridgeRequests = require("./useListenBridgeRequests");
|
|
23
9
|
|
|
24
|
-
var
|
|
10
|
+
var _useListenParentOriginRequest = require("./useListenParentOriginRequest");
|
|
25
11
|
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
var _helpers = require("./helpers");
|
|
29
|
-
|
|
30
|
-
var _hooks = require("./hooks");
|
|
31
|
-
|
|
32
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
33
|
-
|
|
34
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
35
|
-
|
|
36
|
-
var log = (0, _cozyMinilog.default)('🌉 [Container bridge]');
|
|
12
|
+
var _useRedirectOnLoad = require("./useRedirectOnLoad");
|
|
37
13
|
|
|
38
14
|
var useExternalBridge = function useExternalBridge(origin) {
|
|
39
|
-
|
|
40
|
-
var navigate = (0, _reactRouterDom.useNavigate)();
|
|
41
|
-
(0, _hooks.useInitialRedirection)();
|
|
42
|
-
(0, _hooks.useParentOrigin)(origin);
|
|
43
|
-
(0, _react.useEffect)(function () {
|
|
44
|
-
if (!client) return;
|
|
45
|
-
var exposedMethods = {
|
|
46
|
-
// Proof of concepts of Twake <-> Cozy communication
|
|
47
|
-
getContacts: function () {
|
|
48
|
-
var _getContacts = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
49
|
-
var _ref, data;
|
|
50
|
-
|
|
51
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
52
|
-
while (1) {
|
|
53
|
-
switch (_context.prev = _context.next) {
|
|
54
|
-
case 0:
|
|
55
|
-
_context.next = 2;
|
|
56
|
-
return client.query((0, _cozyClient.Q)('io.cozy.contacts'));
|
|
57
|
-
|
|
58
|
-
case 2:
|
|
59
|
-
_ref = _context.sent;
|
|
60
|
-
data = _ref.data;
|
|
61
|
-
return _context.abrupt("return", data);
|
|
15
|
+
(0, _useRedirectOnLoad.useRedirectOnLoad)();
|
|
62
16
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return _context.stop();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}, _callee);
|
|
69
|
-
}));
|
|
17
|
+
var _useListenParentOrigi = (0, _useListenParentOriginRequest.useListenParentOriginRequest)(origin),
|
|
18
|
+
isParentOriginRequestListenerReady = _useListenParentOrigi.isReady;
|
|
70
19
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
20
|
+
var _useListenBridgeReque = (0, _useListenBridgeRequests.useListenBridgeRequests)(origin),
|
|
21
|
+
isBridgeListenerReady = _useListenBridgeReque.isReady;
|
|
74
22
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
},
|
|
80
|
-
// Proof of concepts of Twake <-> Cozy URL synchronization
|
|
81
|
-
updateHistory: function updateHistory(newUrl) {
|
|
82
|
-
var url = (0, _helpers.extractUrl)(newUrl);
|
|
83
|
-
log.debug("Navigating to ".concat(url, " because received ").concat(newUrl, " from embedded app"));
|
|
84
|
-
navigate(_constants.BRIDGE_ROUTE_PREFIX + url, {
|
|
85
|
-
replace: true
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
Comlink.expose(exposedMethods, Comlink.windowEndpoint((0, _helpers.getIframe)().contentWindow, self, origin));
|
|
90
|
-
log.debug('Bridge initialized');
|
|
91
|
-
}, [navigate, client, origin]);
|
|
23
|
+
var isReady = isParentOriginRequestListenerReady && isBridgeListenerReady;
|
|
24
|
+
return {
|
|
25
|
+
isReady: isReady
|
|
26
|
+
};
|
|
92
27
|
};
|
|
93
28
|
|
|
94
29
|
exports.useExternalBridge = useExternalBridge;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useListenBridgeRequests = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var Comlink = _interopRequireWildcard(require("comlink"));
|
|
17
|
+
|
|
18
|
+
var _react = require("react");
|
|
19
|
+
|
|
20
|
+
var _reactRouterDom = require("react-router-dom");
|
|
21
|
+
|
|
22
|
+
var _cozyClient = require("cozy-client");
|
|
23
|
+
|
|
24
|
+
var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
|
|
25
|
+
|
|
26
|
+
var _cozyMinilog = _interopRequireDefault(require("cozy-minilog"));
|
|
27
|
+
|
|
28
|
+
var _constants = require("./constants");
|
|
29
|
+
|
|
30
|
+
var _helpers = require("./helpers");
|
|
31
|
+
|
|
32
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
33
|
+
|
|
34
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
35
|
+
|
|
36
|
+
var log = (0, _cozyMinilog.default)('🌉 [Container bridge]');
|
|
37
|
+
|
|
38
|
+
var useListenBridgeRequests = function useListenBridgeRequests(origin) {
|
|
39
|
+
var client = (0, _cozyClient.useClient)();
|
|
40
|
+
var navigate = (0, _reactRouterDom.useNavigate)();
|
|
41
|
+
|
|
42
|
+
var _useState = (0, _react.useState)(false),
|
|
43
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
44
|
+
isReady = _useState2[0],
|
|
45
|
+
setIsReady = _useState2[1];
|
|
46
|
+
|
|
47
|
+
(0, _react.useEffect)(function () {
|
|
48
|
+
if (!client) return;
|
|
49
|
+
var exposedMethods = {
|
|
50
|
+
// Proof of concepts of Twake <-> Cozy communication
|
|
51
|
+
getContacts: function () {
|
|
52
|
+
var _getContacts = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
53
|
+
var _ref, data;
|
|
54
|
+
|
|
55
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
56
|
+
while (1) {
|
|
57
|
+
switch (_context.prev = _context.next) {
|
|
58
|
+
case 0:
|
|
59
|
+
_context.next = 2;
|
|
60
|
+
return client.query((0, _cozyClient.Q)('io.cozy.contacts'));
|
|
61
|
+
|
|
62
|
+
case 2:
|
|
63
|
+
_ref = _context.sent;
|
|
64
|
+
data = _ref.data;
|
|
65
|
+
return _context.abrupt("return", data);
|
|
66
|
+
|
|
67
|
+
case 5:
|
|
68
|
+
case "end":
|
|
69
|
+
return _context.stop();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}, _callee);
|
|
73
|
+
}));
|
|
74
|
+
|
|
75
|
+
function getContacts() {
|
|
76
|
+
return _getContacts.apply(this, arguments);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return getContacts;
|
|
80
|
+
}(),
|
|
81
|
+
getFlag: function getFlag(key) {
|
|
82
|
+
return (0, _cozyFlags.default)(key);
|
|
83
|
+
},
|
|
84
|
+
// Proof of concepts of Twake <-> Cozy URL synchronization
|
|
85
|
+
updateHistory: function updateHistory(newUrl) {
|
|
86
|
+
var url = (0, _helpers.extractUrl)(newUrl);
|
|
87
|
+
log.debug("Navigating to ".concat(url, " because received ").concat(newUrl, " from embedded app"));
|
|
88
|
+
navigate(_constants.BRIDGE_ROUTE_PREFIX + url, {
|
|
89
|
+
replace: true
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
Comlink.expose(exposedMethods, Comlink.windowEndpoint((0, _helpers.getIframe)().contentWindow, self, origin));
|
|
94
|
+
log.debug('Listening to bridge requests');
|
|
95
|
+
setIsReady(true);
|
|
96
|
+
}, [navigate, client, origin]);
|
|
97
|
+
return {
|
|
98
|
+
isReady: isReady
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
exports.useListenBridgeRequests = useListenBridgeRequests;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useListenParentOriginRequest = void 0;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
|
|
14
|
+
var _cozyClient = require("cozy-client");
|
|
15
|
+
|
|
16
|
+
var _cozyMinilog = _interopRequireDefault(require("cozy-minilog"));
|
|
17
|
+
|
|
18
|
+
var _helpers = require("./helpers");
|
|
19
|
+
|
|
20
|
+
var log = (0, _cozyMinilog.default)('🌉 [Container bridge]');
|
|
21
|
+
|
|
22
|
+
// Allow the iframe to request the origin of the parent window
|
|
23
|
+
var useListenParentOriginRequest = function useListenParentOriginRequest(origin) {
|
|
24
|
+
var client = (0, _cozyClient.useClient)();
|
|
25
|
+
|
|
26
|
+
var _useState = (0, _react.useState)(false),
|
|
27
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
28
|
+
isReady = _useState2[0],
|
|
29
|
+
setIsReady = _useState2[1];
|
|
30
|
+
|
|
31
|
+
(0, _react.useEffect)(function () {
|
|
32
|
+
if (!client) return;
|
|
33
|
+
|
|
34
|
+
var parentOriginRequestHandler = function parentOriginRequestHandler(event) {
|
|
35
|
+
return (0, _helpers.handleParentOriginRequest)(event, origin);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
window.addEventListener('message', parentOriginRequestHandler);
|
|
39
|
+
log.debug('Listening to parent origin request');
|
|
40
|
+
setIsReady(true);
|
|
41
|
+
return function () {
|
|
42
|
+
window.removeEventListener('message', parentOriginRequestHandler);
|
|
43
|
+
};
|
|
44
|
+
}, [client, origin]);
|
|
45
|
+
return {
|
|
46
|
+
isReady: isReady
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
exports.useListenParentOriginRequest = useListenParentOriginRequest;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useRedirectOnLoad = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
|
|
12
|
+
var _reactRouterDom = require("react-router-dom");
|
|
13
|
+
|
|
14
|
+
var _cozyMinilog = _interopRequireDefault(require("cozy-minilog"));
|
|
15
|
+
|
|
16
|
+
var _constants = require("./constants");
|
|
17
|
+
|
|
18
|
+
var _helpers = require("./helpers");
|
|
19
|
+
|
|
20
|
+
var log = (0, _cozyMinilog.default)('🌉 [Container bridge]'); // When we load the container app, we want to forward
|
|
21
|
+
// the relevant part of the URL to the iframe
|
|
22
|
+
|
|
23
|
+
var useRedirectOnLoad = function useRedirectOnLoad() {
|
|
24
|
+
var location = (0, _reactRouterDom.useLocation)();
|
|
25
|
+
(0, _react.useEffect)(function () {
|
|
26
|
+
if (location.pathname.startsWith(_constants.BRIDGE_ROUTE_PREFIX)) {
|
|
27
|
+
var iframe = (0, _helpers.getIframe)();
|
|
28
|
+
var destUrl = new URL(iframe.src);
|
|
29
|
+
destUrl.pathname = location.pathname.replace(_constants.BRIDGE_ROUTE_PREFIX, '');
|
|
30
|
+
destUrl.hash = location.hash;
|
|
31
|
+
destUrl.search = location.search;
|
|
32
|
+
iframe.src = destUrl.toString();
|
|
33
|
+
log.debug('Redirecting iframe to', destUrl.toString());
|
|
34
|
+
}
|
|
35
|
+
}, []);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
exports.useRedirectOnLoad = useRedirectOnLoad;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cozy-external-bridge",
|
|
3
3
|
"description": "Library allows communication between a container app and an app embedded in an iframe",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.10.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cozy Cloud",
|
|
7
7
|
"url": "https://github.com/cozy"
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"lint": "cd ../.. && yarn eslint --ext js,jsx,ts packages/cozy-external-bridge"
|
|
69
69
|
},
|
|
70
70
|
"types": "dist/index.d.ts",
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "7f514d6c45cce3e980d239c421e370c9f8b49498"
|
|
72
72
|
}
|
package/dist/container/hooks.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useParentOrigin = exports.useInitialRedirection = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = require("react");
|
|
9
|
-
|
|
10
|
-
var _reactRouterDom = require("react-router-dom");
|
|
11
|
-
|
|
12
|
-
var _cozyClient = require("cozy-client");
|
|
13
|
-
|
|
14
|
-
var _constants = require("./constants");
|
|
15
|
-
|
|
16
|
-
var _helpers = require("./helpers");
|
|
17
|
-
|
|
18
|
-
// Initial redirection is necessary when we load a page from a direct link
|
|
19
|
-
// to load the iframe to the direct link
|
|
20
|
-
var useInitialRedirection = function useInitialRedirection() {
|
|
21
|
-
var location = (0, _reactRouterDom.useLocation)();
|
|
22
|
-
(0, _react.useEffect)(function () {
|
|
23
|
-
if (location.pathname.startsWith(_constants.BRIDGE_ROUTE_PREFIX)) {
|
|
24
|
-
var iframe = (0, _helpers.getIframe)();
|
|
25
|
-
var destUrl = new URL(iframe.src);
|
|
26
|
-
destUrl.pathname = location.pathname.replace(_constants.BRIDGE_ROUTE_PREFIX, '');
|
|
27
|
-
destUrl.hash = location.hash;
|
|
28
|
-
destUrl.search = location.search;
|
|
29
|
-
iframe.src = destUrl.toString();
|
|
30
|
-
}
|
|
31
|
-
}, []);
|
|
32
|
-
}; // Allow the iframe to request the origin of the parent window
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
exports.useInitialRedirection = useInitialRedirection;
|
|
36
|
-
|
|
37
|
-
var useParentOrigin = function useParentOrigin(origin) {
|
|
38
|
-
var client = (0, _cozyClient.useClient)();
|
|
39
|
-
(0, _react.useEffect)(function () {
|
|
40
|
-
if (!client) return;
|
|
41
|
-
|
|
42
|
-
var requestParentOriginHandler = function requestParentOriginHandler(event) {
|
|
43
|
-
return (0, _helpers.handleRequestParentOrigin)(event, origin);
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
window.addEventListener('message', requestParentOriginHandler);
|
|
47
|
-
return function () {
|
|
48
|
-
window.removeEventListener('message', requestParentOriginHandler);
|
|
49
|
-
};
|
|
50
|
-
}, [client, origin]);
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
exports.useParentOrigin = useParentOrigin;
|