@twinmatrix/spatialverse-sdk-web 0.0.2 → 0.0.4
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/lib/cjs/index.js +9 -9
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +213 -294
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +40 -41
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js +170 -196
- package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +167 -215
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js +28 -30
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +861 -1170
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +166 -159
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/interfaces.js +6 -6
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/interfaces.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js +6 -6
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routeLayers.js +3 -3
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routeLayers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +523 -610
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +149 -154
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/customStyles.js +2 -2
- package/lib/cjs/meta-atlas-sdk/customStyles.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/customerLayer.js +15 -29
- package/lib/cjs/meta-atlas-sdk/customerLayer.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/customerLayerVariant.js +5 -5
- package/lib/cjs/meta-atlas-sdk/customerLayerVariant.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js +809 -1033
- package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/helpers.js +32 -49
- package/lib/cjs/meta-atlas-sdk/utils/helpers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/local-storage.js +21 -34
- package/lib/cjs/meta-atlas-sdk/utils/local-storage.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/mapobjects-store.js +6 -6
- package/lib/cjs/meta-atlas-sdk/utils/mapobjects-store.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/routing-store.js +6 -6
- package/lib/cjs/meta-atlas-sdk/utils/routing-store.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js +363 -491
- package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
- package/lib/cjs/react/MetaAtlasMap.js +127 -0
- package/lib/cjs/react/MetaAtlasMap.js.map +1 -0
- package/lib/cjs/react/hooks/useDrawing/index.js +17 -18
- package/lib/cjs/react/hooks/useDrawing/index.js.map +1 -1
- package/lib/cjs/react/hooks/useFocus/index.js +48 -55
- package/lib/cjs/react/hooks/useFocus/index.js.map +1 -1
- package/lib/cjs/react/hooks/useMapEvents/index.js +40 -47
- package/lib/cjs/react/hooks/useMapEvents/index.js.map +1 -1
- package/lib/cjs/react/hooks/useMapOverlays/index.js +20 -21
- package/lib/cjs/react/hooks/useMapOverlays/index.js.map +1 -1
- package/lib/cjs/react/hooks/useMetaAtlas/index.js +77 -95
- package/lib/cjs/react/hooks/useMetaAtlas/index.js.map +1 -1
- package/lib/cjs/react/hooks/useMetaAtlas.js +78 -96
- package/lib/cjs/react/hooks/useMetaAtlas.js.map +1 -1
- package/lib/cjs/react/hooks/useRouting/index.js +21 -20
- package/lib/cjs/react/hooks/useRouting/index.js.map +1 -1
- package/lib/cjs/react/hooks/useSearch/index.js +35 -34
- package/lib/cjs/react/hooks/useSearch/index.js.map +1 -1
- package/lib/cjs/react/hooks/useStampRally/index.js +26 -23
- package/lib/cjs/react/hooks/useStampRally/index.js.map +1 -1
- package/lib/cjs/react/hooks/useStampRally/utils.js +2 -2
- package/lib/cjs/react/hooks/useStampRally/utils.js.map +1 -1
- package/lib/cjs/react/index.js +31 -31
- package/lib/cjs/react/index.js.map +1 -1
- package/lib/cjs/react/stores/useMapDataStore.js +47 -62
- package/lib/cjs/react/stores/useMapDataStore.js.map +1 -1
- package/lib/cjs/react/stores/useMetaAtlasStore.js +27 -40
- package/lib/cjs/react/stores/useMetaAtlasStore.js.map +1 -1
- package/lib/esm/index.js +3 -7
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +4 -3
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +14 -12
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js +204 -200
- package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +6 -6
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js +4 -3
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +53 -42
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +18 -16
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js +3 -3
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +73 -79
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +16 -15
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/customerLayer.js +4 -1
- package/lib/esm/meta-atlas-sdk/customerLayer.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js +148 -124
- package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/helpers.js +4 -2
- package/lib/esm/meta-atlas-sdk/utils/helpers.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/local-storage.js +6 -1
- package/lib/esm/meta-atlas-sdk/utils/local-storage.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js +115 -109
- package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
- package/lib/esm/react/MetaAtlasMap.js +120 -0
- package/lib/esm/react/MetaAtlasMap.js.map +1 -0
- package/lib/esm/react/hooks/useDrawing/index.js +2 -2
- package/lib/esm/react/hooks/useDrawing/index.js.map +1 -1
- package/lib/esm/react/hooks/useFocus/index.js +4 -3
- package/lib/esm/react/hooks/useFocus/index.js.map +1 -1
- package/lib/esm/react/hooks/useMapEvents/index.js +9 -6
- package/lib/esm/react/hooks/useMapEvents/index.js.map +1 -1
- package/lib/esm/react/hooks/useMapOverlays/index.js +2 -2
- package/lib/esm/react/hooks/useMapOverlays/index.js.map +1 -1
- package/lib/esm/react/hooks/useMetaAtlas/index.js +162 -60
- package/lib/esm/react/hooks/useMetaAtlas/index.js.map +1 -1
- package/lib/esm/react/hooks/useMetaAtlas.js +162 -60
- package/lib/esm/react/hooks/useMetaAtlas.js.map +1 -1
- package/lib/esm/react/hooks/useRouting/index.js +2 -2
- package/lib/esm/react/hooks/useRouting/index.js.map +1 -1
- package/lib/esm/react/hooks/useSearch/index.js +2 -2
- package/lib/esm/react/hooks/useSearch/index.js.map +1 -1
- package/lib/esm/react/hooks/useStampRally/index.js +15 -12
- package/lib/esm/react/hooks/useStampRally/index.js.map +1 -1
- package/lib/esm/react/hooks/useStampRally/utils.js +1 -1
- package/lib/esm/react/hooks/useStampRally/utils.js.map +1 -1
- package/lib/esm/react/index.js +11 -15
- package/lib/esm/react/index.js.map +1 -1
- package/lib/esm/react/stores/useMapDataStore.js +17 -21
- package/lib/esm/react/stores/useMapDataStore.js.map +1 -1
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts +30 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts +5 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts +21 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts +27 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts +18 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts +37 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts.map +1 -0
- package/package.json +10 -7
|
@@ -6,20 +6,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Status = exports.PublishedDataType = void 0;
|
|
7
7
|
exports.getPublishedData = getPublishedData;
|
|
8
8
|
var _axios = _interopRequireDefault(require("axios"));
|
|
9
|
-
var _helpers = require("../utils/helpers");
|
|
10
|
-
var _routingStore = _interopRequireDefault(require("../utils/routing-store"));
|
|
11
|
-
var _mapobjectsStore = _interopRequireDefault(require("../utils/mapobjects-store"));
|
|
12
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : {
|
|
13
|
-
|
|
14
|
-
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
15
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
16
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
17
|
-
var PublishedDataType = exports.PublishedDataType = /*#__PURE__*/function (PublishedDataType) {
|
|
9
|
+
var _helpers = require("../utils/helpers.js");
|
|
10
|
+
var _routingStore = _interopRequireDefault(require("../utils/routing-store.js"));
|
|
11
|
+
var _mapobjectsStore = _interopRequireDefault(require("../utils/mapobjects-store.js"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
let PublishedDataType = exports.PublishedDataType = /*#__PURE__*/function (PublishedDataType) {
|
|
18
14
|
PublishedDataType["Routing"] = "routing";
|
|
19
15
|
PublishedDataType["MapObjects"] = "mapObjects";
|
|
20
16
|
return PublishedDataType;
|
|
21
17
|
}({});
|
|
22
|
-
|
|
18
|
+
let Status = exports.Status = /*#__PURE__*/function (Status) {
|
|
23
19
|
Status["Ready"] = "Ready";
|
|
24
20
|
Status["Awaiting"] = "Awaiting";
|
|
25
21
|
Status["DownloadingResources"] = "DownloadingResources";
|
|
@@ -37,8 +33,8 @@ function getDataType(publishedDataType) {
|
|
|
37
33
|
function getLocalStorageKey(param, publishedDataType) {
|
|
38
34
|
return publishedDataType.valueOf() + param;
|
|
39
35
|
}
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
const setRouteData = _routingStore.default.setState;
|
|
37
|
+
const setMapObjectsData = _mapobjectsStore.default.setState;
|
|
42
38
|
function getRunTimeStore(publishedDataType) {
|
|
43
39
|
if (publishedDataType === PublishedDataType.Routing) {
|
|
44
40
|
return setRouteData;
|
|
@@ -47,213 +43,169 @@ function getRunTimeStore(publishedDataType) {
|
|
|
47
43
|
return setMapObjectsData;
|
|
48
44
|
}
|
|
49
45
|
}
|
|
50
|
-
function getPublishedData(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
URL: undefined,
|
|
88
|
-
data: undefined
|
|
89
|
-
};
|
|
90
|
-
var localVersion = localStorage.getString(localStorageVersionKey);
|
|
91
|
-
var remoteVersion = localVersion;
|
|
92
|
-
if (remoteData.hasOwnProperty('version')) {
|
|
93
|
-
remoteVersion = remoteData.version;
|
|
94
|
-
}
|
|
95
|
-
publishedDataInfo.currentVersion = localVersion;
|
|
96
|
-
publishedDataInfo.remoteVersion = remoteVersion;
|
|
97
|
-
if (localVersion) {
|
|
98
|
-
var currentData = localStorage.getString(getLocalStorageKey('data', publishedDataType));
|
|
99
|
-
var tag = localStorage.getString(getLocalStorageKey('encryptionTag', publishedDataType));
|
|
46
|
+
async function getPublishedData(serverAPIInfo, localStorage) {
|
|
47
|
+
const publishedDataType = serverAPIInfo.publishedDataType;
|
|
48
|
+
const localStorageVersionKey = getLocalStorageKey('version', publishedDataType);
|
|
49
|
+
let status = Status.Awaiting;
|
|
50
|
+
let setRunTimeStoreData = getRunTimeStore(publishedDataType);
|
|
51
|
+
const fetchInfo = async () => {
|
|
52
|
+
const currentVersion = localStorage.contains(localStorageVersionKey) ? localStorage.getString(localStorageVersionKey) : '0.0.0';
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
54
|
+
(0, _axios.default)({
|
|
55
|
+
url: "".concat(serverAPIInfo.URL, "/check-published-versions"),
|
|
56
|
+
headers: {
|
|
57
|
+
Authorization: "Bearer ".concat(serverAPIInfo.accessToken),
|
|
58
|
+
'Content-Type': 'application/json'
|
|
59
|
+
},
|
|
60
|
+
method: 'POST',
|
|
61
|
+
data: JSON.stringify({
|
|
62
|
+
version: currentVersion,
|
|
63
|
+
dataType: getDataType(serverAPIInfo.publishedDataType)
|
|
64
|
+
})
|
|
65
|
+
}).then(response => {
|
|
66
|
+
const remoteData = response.data;
|
|
67
|
+
const publishedDataInfo = {
|
|
68
|
+
currentVersion: undefined,
|
|
69
|
+
remoteVersion: undefined,
|
|
70
|
+
URL: undefined,
|
|
71
|
+
data: undefined
|
|
72
|
+
};
|
|
73
|
+
const localVersion = localStorage.getString(localStorageVersionKey);
|
|
74
|
+
let remoteVersion = localVersion;
|
|
75
|
+
if (remoteData.hasOwnProperty('version')) {
|
|
76
|
+
remoteVersion = remoteData.version;
|
|
77
|
+
}
|
|
78
|
+
publishedDataInfo.currentVersion = localVersion;
|
|
79
|
+
publishedDataInfo.remoteVersion = remoteVersion;
|
|
80
|
+
if (localVersion) {
|
|
81
|
+
const currentData = localStorage.getString(getLocalStorageKey('data', publishedDataType));
|
|
82
|
+
const tag = localStorage.getString(getLocalStorageKey('encryptionTag', publishedDataType));
|
|
100
83
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
if (remoteVersion) {
|
|
107
|
-
if (remoteData.hasOwnProperty('downloadUrl')) {
|
|
108
|
-
publishedDataInfo.URL = remoteData.downloadUrl;
|
|
109
|
-
}
|
|
110
|
-
if (localVersion && remoteVersion > localVersion || !localVersion || !publishedDataInfo.data) {
|
|
111
|
-
status = publishedDataInfo.URL ? Status.DownloadingResources : status;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
console.log('final: ', publishedDataInfo.URL, publishedDataInfo.currentVersion, publishedDataInfo.remoteVersion);
|
|
115
|
-
resolve(publishedDataInfo);
|
|
116
|
-
})["catch"](function (error) {
|
|
117
|
-
console.log('error while fetching published version: ');
|
|
118
|
-
if (error.response) {
|
|
119
|
-
// The request was made and the server responded with a status code
|
|
120
|
-
// that falls out of the range of 2xx
|
|
121
|
-
console.log(error.response.data);
|
|
122
|
-
console.log(error.response.status);
|
|
123
|
-
console.log(error.response.headers);
|
|
124
|
-
} else if (error.request) {
|
|
125
|
-
// The request was made but no response was received
|
|
126
|
-
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
|
|
127
|
-
// http.ClientRequest in node.js
|
|
128
|
-
console.log(error.request);
|
|
129
|
-
} else {
|
|
130
|
-
// Something happened in setting up the request that triggered an Error
|
|
131
|
-
console.log('Error', error.message);
|
|
132
|
-
}
|
|
133
|
-
console.log(error.config);
|
|
134
|
-
reject(error);
|
|
135
|
-
});
|
|
136
|
-
}));
|
|
137
|
-
}
|
|
138
|
-
}, _callee);
|
|
139
|
-
}));
|
|
140
|
-
return function fetchInfo() {
|
|
141
|
-
return _ref.apply(this, arguments);
|
|
142
|
-
};
|
|
143
|
-
}();
|
|
144
|
-
storeFileToLocalStorage = function storeFileToLocalStorage(data, version, tag) {
|
|
145
|
-
try {
|
|
146
|
-
localStorage.set(getLocalStorageKey('data', publishedDataType), data);
|
|
147
|
-
localStorage.set(localStorageVersionKey, version);
|
|
148
|
-
localStorage.set(getLocalStorageKey('encryptionTag', publishedDataType), tag);
|
|
149
|
-
return true;
|
|
150
|
-
} catch (e) {
|
|
151
|
-
console.log('error storing routing file from local storage', e);
|
|
152
|
-
return false;
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
loadFileFromStore = function loadFileFromStore() {
|
|
156
|
-
var currentData = localStorage.getString(getLocalStorageKey('data', publishedDataType));
|
|
157
|
-
var tag = localStorage.getString(getLocalStorageKey('encryptionTag', publishedDataType));
|
|
158
|
-
if (currentData && tag) {
|
|
159
|
-
var decryptedJson = (0, _helpers.decryptFile)(currentData, tag, serverAPIInfo.secretKey);
|
|
160
|
-
// JSON.parse(storage.getString('routeData')
|
|
161
|
-
setRunTimeStoreData({
|
|
162
|
-
data: decryptedJson
|
|
163
|
-
});
|
|
164
|
-
status = Status.Ready;
|
|
165
|
-
return true;
|
|
166
|
-
} else {
|
|
167
|
-
return false;
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
onError = function onError() {
|
|
171
|
-
try {
|
|
172
|
-
var _loaded = loadFileFromStore();
|
|
173
|
-
if (!_loaded) {
|
|
174
|
-
console.log('failed to load data');
|
|
175
|
-
status = Status.Unavailable;
|
|
176
|
-
}
|
|
177
|
-
} catch (error) {
|
|
178
|
-
console.log('erro while loading data');
|
|
179
|
-
status = Status.Unavailable;
|
|
180
|
-
localStorage.clearAll();
|
|
181
|
-
}
|
|
182
|
-
};
|
|
183
|
-
_context2.p = 1;
|
|
184
|
-
_context2.n = 2;
|
|
185
|
-
return fetchInfo();
|
|
186
|
-
case 2:
|
|
187
|
-
info = _context2.v;
|
|
188
|
-
if (!(status === Status.DownloadingResources && info.URL)) {
|
|
189
|
-
_context2.n = 10;
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
// download
|
|
193
|
-
console.log('downloading from server');
|
|
194
|
-
_context2.p = 3;
|
|
195
|
-
_context2.n = 4;
|
|
196
|
-
return fetch(info.URL);
|
|
197
|
-
case 4:
|
|
198
|
-
response = _context2.v;
|
|
199
|
-
if (response.ok) {
|
|
200
|
-
_context2.n = 5;
|
|
201
|
-
break;
|
|
84
|
+
// Check both because data is useless without tag
|
|
85
|
+
if (tag && currentData) {
|
|
86
|
+
publishedDataInfo.data = currentData;
|
|
202
87
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
case 6:
|
|
208
|
-
responseData = _context2.v;
|
|
209
|
-
// const responseData = JSON.parse(fileContent);
|
|
210
|
-
data = responseData.data, tag = responseData.tag;
|
|
211
|
-
_context2.n = 7;
|
|
212
|
-
return (0, _helpers.decryptFile)(data, tag, serverAPIInfo.secretKey);
|
|
213
|
-
case 7:
|
|
214
|
-
decryptedJson = _context2.v;
|
|
215
|
-
storedSuccessfully = storeFileToLocalStorage(data, info.remoteVersion, tag);
|
|
216
|
-
if (storedSuccessfully) {
|
|
217
|
-
console.log('loaded file');
|
|
218
|
-
setRunTimeStoreData({
|
|
219
|
-
data: decryptedJson
|
|
220
|
-
});
|
|
221
|
-
status = Status.Ready;
|
|
88
|
+
}
|
|
89
|
+
if (remoteVersion) {
|
|
90
|
+
if (remoteData.hasOwnProperty('downloadUrl')) {
|
|
91
|
+
publishedDataInfo.URL = remoteData.downloadUrl;
|
|
222
92
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
case 8:
|
|
226
|
-
_context2.p = 8;
|
|
227
|
-
_t = _context2.v;
|
|
228
|
-
console.error('Error fetching and decrypting data:', _t);
|
|
229
|
-
onError();
|
|
230
|
-
case 9:
|
|
231
|
-
_context2.n = 11;
|
|
232
|
-
break;
|
|
233
|
-
case 10:
|
|
234
|
-
_tag = localStorage.getString('encryptionTag'); // set to store
|
|
235
|
-
if (info.data && _tag) {
|
|
236
|
-
console.log('loaded local file');
|
|
237
|
-
_decryptedJson = (0, _helpers.decryptFile)(info.data, _tag, serverAPIInfo.secretKey);
|
|
238
|
-
setRunTimeStoreData({
|
|
239
|
-
data: _decryptedJson
|
|
240
|
-
});
|
|
241
|
-
status = Status.Ready;
|
|
242
|
-
} else {
|
|
243
|
-
onError();
|
|
93
|
+
if (localVersion && remoteVersion > localVersion || !localVersion || !publishedDataInfo.data) {
|
|
94
|
+
status = publishedDataInfo.URL ? Status.DownloadingResources : status;
|
|
244
95
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
96
|
+
}
|
|
97
|
+
console.log('final: ', publishedDataInfo.URL, publishedDataInfo.currentVersion, publishedDataInfo.remoteVersion);
|
|
98
|
+
resolve(publishedDataInfo);
|
|
99
|
+
}).catch(function (error) {
|
|
100
|
+
console.log('error while fetching published version: ');
|
|
101
|
+
if (error.response) {
|
|
102
|
+
// The request was made and the server responded with a status code
|
|
103
|
+
// that falls out of the range of 2xx
|
|
104
|
+
console.log(error.response.data);
|
|
105
|
+
console.log(error.response.status);
|
|
106
|
+
console.log(error.response.headers);
|
|
107
|
+
} else if (error.request) {
|
|
108
|
+
// The request was made but no response was received
|
|
109
|
+
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
|
|
110
|
+
// http.ClientRequest in node.js
|
|
111
|
+
console.log(error.request);
|
|
112
|
+
} else {
|
|
113
|
+
// Something happened in setting up the request that triggered an Error
|
|
114
|
+
console.log('Error', error.message);
|
|
115
|
+
}
|
|
116
|
+
console.log(error.config);
|
|
117
|
+
reject(error);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
const storeFileToLocalStorage = (data, version, tag) => {
|
|
122
|
+
try {
|
|
123
|
+
localStorage.set(getLocalStorageKey('data', publishedDataType), data);
|
|
124
|
+
localStorage.set(localStorageVersionKey, version);
|
|
125
|
+
localStorage.set(getLocalStorageKey('encryptionTag', publishedDataType), tag);
|
|
126
|
+
return true;
|
|
127
|
+
} catch (e) {
|
|
128
|
+
console.log('error storing routing file from local storage', e);
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
const loadFileFromStore = () => {
|
|
133
|
+
const currentData = localStorage.getString(getLocalStorageKey('data', publishedDataType));
|
|
134
|
+
const tag = localStorage.getString(getLocalStorageKey('encryptionTag', publishedDataType));
|
|
135
|
+
if (currentData && tag) {
|
|
136
|
+
const decryptedJson = (0, _helpers.decryptFile)(currentData, tag, serverAPIInfo.secretKey);
|
|
137
|
+
// JSON.parse(storage.getString('routeData')
|
|
138
|
+
setRunTimeStoreData({
|
|
139
|
+
data: decryptedJson
|
|
140
|
+
});
|
|
141
|
+
status = Status.Ready;
|
|
142
|
+
return true;
|
|
143
|
+
} else {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
const onError = () => {
|
|
148
|
+
try {
|
|
149
|
+
const loaded = loadFileFromStore();
|
|
150
|
+
if (!loaded) {
|
|
151
|
+
console.log('failed to load data');
|
|
152
|
+
status = Status.Unavailable;
|
|
254
153
|
}
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
|
|
154
|
+
} catch (error) {
|
|
155
|
+
console.log('erro while loading data');
|
|
156
|
+
status = Status.Unavailable;
|
|
157
|
+
localStorage.clearAll();
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
try {
|
|
161
|
+
const info = await fetchInfo();
|
|
162
|
+
// @ts-ignore
|
|
163
|
+
if (status === Status.DownloadingResources && info.URL) {
|
|
164
|
+
// download
|
|
165
|
+
console.log('downloading from server');
|
|
166
|
+
try {
|
|
167
|
+
// Fetch encrypted data from the server
|
|
168
|
+
// This is the API call for getting map-objects.json
|
|
169
|
+
const response = await fetch(info.URL);
|
|
170
|
+
if (!response.ok) {
|
|
171
|
+
throw new Error("HTTP error! Status: ".concat(response.status));
|
|
172
|
+
}
|
|
173
|
+
const responseData = await response.json();
|
|
174
|
+
// const responseData = JSON.parse(fileContent);
|
|
175
|
+
const {
|
|
176
|
+
data,
|
|
177
|
+
tag
|
|
178
|
+
} = responseData;
|
|
179
|
+
const decryptedJson = await (0, _helpers.decryptFile)(data, tag, serverAPIInfo.secretKey);
|
|
180
|
+
const storedSuccessfully = storeFileToLocalStorage(data, info.remoteVersion, tag);
|
|
181
|
+
if (storedSuccessfully) {
|
|
182
|
+
console.log('loaded file');
|
|
183
|
+
setRunTimeStoreData({
|
|
184
|
+
data: decryptedJson
|
|
185
|
+
});
|
|
186
|
+
status = Status.Ready;
|
|
187
|
+
}
|
|
188
|
+
} catch (error) {
|
|
189
|
+
console.error('Error fetching and decrypting data:', error);
|
|
190
|
+
onError();
|
|
191
|
+
}
|
|
192
|
+
} else {
|
|
193
|
+
const tag = localStorage.getString('encryptionTag');
|
|
194
|
+
// set to store
|
|
195
|
+
if (info.data && tag) {
|
|
196
|
+
console.log('loaded local file');
|
|
197
|
+
const decryptedJson = (0, _helpers.decryptFile)(info.data, tag, serverAPIInfo.secretKey);
|
|
198
|
+
setRunTimeStoreData({
|
|
199
|
+
data: decryptedJson
|
|
200
|
+
});
|
|
201
|
+
status = Status.Ready;
|
|
202
|
+
} else {
|
|
203
|
+
onError();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
} catch (error) {
|
|
207
|
+
onError();
|
|
208
|
+
}
|
|
209
|
+
return status;
|
|
258
210
|
}
|
|
259
211
|
//# sourceMappingURL=fetch-published-json.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-published-json.js","names":["_axios","_interopRequireDefault","require","_helpers","_routingStore","_mapobjectsStore","e","__esModule","_regenerator","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","PublishedDataType","exports","Status","getDataType","publishedDataType","Routing","MapObjects","getLocalStorageKey","param","valueOf","setRouteData","useRouteDataStore","setState","setMapObjectsData","useMapObjectsDataStore","getRunTimeStore","getPublishedData","_x","_x2","_getPublishedData","_callee2","serverAPIInfo","localStorage","localStorageVersionKey","status","setRunTimeStoreData","fetchInfo","storeFileToLocalStorage","loadFileFromStore","onError","info","response","responseData","data","tag","decryptedJson","storedSuccessfully","_tag","_decryptedJson","_t","_t2","_context2","Awaiting","_ref","_callee","currentVersion","_context","contains","getString","reject","axios","url","concat","URL","headers","Authorization","accessToken","method","JSON","stringify","version","dataType","remoteData","publishedDataInfo","undefined","remoteVersion","localVersion","hasOwnProperty","currentData","downloadUrl","DownloadingResources","console","log","error","request","message","config","set","decryptFile","secretKey","Ready","loaded","Unavailable","clearAll","fetch","ok","Error","json"],"sources":["../../../../src/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.ts"],"sourcesContent":["import axios from 'axios';\n\nimport { LocalStorage } from '../utils/local-storage';\nimport { decryptFile } from '../utils/helpers';\nimport useRouteDataStore from '../utils/routing-store';\nimport useMapObjectsDataStore from '../utils/mapobjects-store';\n\nexport enum PublishedDataType {\n Routing = 'routing',\n MapObjects = 'mapObjects',\n}\n\nexport enum Status {\n Ready = 'Ready',\n Awaiting = 'Awaiting',\n DownloadingResources = 'DownloadingResources',\n Unavailable = 'Unavailable',\n}\n\nexport type StatusUpdateCallbackType = (loaded: boolean) => void;\n\nexport interface ServerAPIInfo {\n URL: string;\n accessToken: string;\n secretKey: string;\n publishedDataType: PublishedDataType;\n}\n\nexport interface PublishedDataInfo {\n currentVersion: string | undefined;\n remoteVersion: string | undefined;\n URL: string | undefined;\n data: string | undefined;\n}\n\nfunction getDataType(publishedDataType: PublishedDataType) {\n if (publishedDataType === PublishedDataType.Routing) {\n return 'generate-route-json-per-role';\n }\n if (publishedDataType === PublishedDataType.MapObjects) {\n return 'generate-map-objects-per-role';\n }\n}\n\nfunction getLocalStorageKey(\n param: string,\n publishedDataType: PublishedDataType,\n): string {\n return publishedDataType.valueOf() + param;\n}\n\nconst setRouteData = useRouteDataStore.setState;\nconst setMapObjectsData = useMapObjectsDataStore.setState;\n\nfunction getRunTimeStore(publishedDataType: PublishedDataType) {\n if (publishedDataType === PublishedDataType.Routing) {\n return setRouteData;\n }\n if (publishedDataType === PublishedDataType.MapObjects) {\n return setMapObjectsData;\n }\n}\n\nexport async function getPublishedData(\n serverAPIInfo: ServerAPIInfo,\n localStorage: LocalStorage,\n) {\n const publishedDataType = serverAPIInfo.publishedDataType;\n const localStorageVersionKey = getLocalStorageKey(\n 'version',\n publishedDataType,\n );\n let status: Status = Status.Awaiting;\n let setRunTimeStoreData = getRunTimeStore(publishedDataType);\n\n const fetchInfo = async () => {\n const currentVersion = localStorage.contains(localStorageVersionKey)\n ? localStorage.getString(localStorageVersionKey)\n : '0.0.0';\n return new Promise(\n (resolve: (routingInfo: PublishedDataInfo) => void, reject) => {\n axios({\n url: `${serverAPIInfo.URL}/check-published-versions`,\n headers: {\n Authorization: `Bearer ${serverAPIInfo.accessToken}`,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n data: JSON.stringify({\n version: currentVersion,\n dataType: getDataType(serverAPIInfo.publishedDataType),\n }),\n })\n .then(response => {\n const remoteData = response.data;\n\n const publishedDataInfo = {\n currentVersion: undefined,\n remoteVersion: undefined,\n URL: undefined,\n data: undefined,\n } as PublishedDataInfo;\n const localVersion = localStorage.getString(localStorageVersionKey);\n let remoteVersion = localVersion;\n if (remoteData.hasOwnProperty('version')) {\n remoteVersion = remoteData.version;\n }\n\n publishedDataInfo.currentVersion = localVersion;\n publishedDataInfo.remoteVersion = remoteVersion;\n if (localVersion) {\n const currentData = localStorage.getString(\n getLocalStorageKey('data', publishedDataType),\n );\n const tag = localStorage.getString(\n getLocalStorageKey('encryptionTag', publishedDataType),\n );\n\n // Check both because data is useless without tag\n if (tag && currentData) {\n publishedDataInfo.data = currentData;\n }\n }\n if (remoteVersion) {\n if (remoteData.hasOwnProperty('downloadUrl')) {\n publishedDataInfo.URL = remoteData.downloadUrl;\n }\n if (\n (localVersion && remoteVersion > localVersion) ||\n !localVersion ||\n !publishedDataInfo.data\n ) {\n status = publishedDataInfo.URL\n ? Status.DownloadingResources\n : status;\n }\n }\n\n console.log(\n 'final: ',\n publishedDataInfo.URL,\n publishedDataInfo.currentVersion,\n publishedDataInfo.remoteVersion,\n );\n resolve(publishedDataInfo);\n })\n .catch(function (error) {\n console.log('error while fetching published version: ');\n if (error.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.log(error.response.data);\n console.log(error.response.status);\n console.log(error.response.headers);\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log(error.request);\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log('Error', error.message);\n }\n console.log(error.config);\n reject(error);\n });\n },\n );\n };\n\n const storeFileToLocalStorage = (data: any, version: any, tag: any) => {\n try {\n localStorage.set(getLocalStorageKey('data', publishedDataType), data);\n localStorage.set(localStorageVersionKey, version);\n localStorage.set(\n getLocalStorageKey('encryptionTag', publishedDataType),\n tag,\n );\n return true;\n } catch (e) {\n console.log('error storing routing file from local storage', e);\n return false;\n }\n };\n\n const loadFileFromStore = () => {\n const currentData = localStorage.getString(\n getLocalStorageKey('data', publishedDataType),\n );\n const tag = localStorage.getString(\n getLocalStorageKey('encryptionTag', publishedDataType),\n );\n if (currentData && tag) {\n const decryptedJson = decryptFile(currentData, tag, serverAPIInfo.secretKey);\n // JSON.parse(storage.getString('routeData')\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n return true;\n } else {\n return false;\n }\n };\n\n const onError = () => {\n try {\n const loaded = loadFileFromStore();\n if (!loaded) {\n console.log('failed to load data');\n status = Status.Unavailable;\n }\n } catch (error) {\n console.log('erro while loading data');\n status = Status.Unavailable;\n localStorage.clearAll();\n }\n };\n\n try {\n const info = await fetchInfo();\n // @ts-ignore\n if (status === Status.DownloadingResources && info.URL) {\n // download\n console.log('downloading from server');\n try {\n // Fetch encrypted data from the server\n // This is the API call for getting map-objects.json\n const response = await fetch(info.URL);\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n const responseData = await response.json();\n // const responseData = JSON.parse(fileContent);\n const {data, tag} = responseData;\n\n const decryptedJson = await decryptFile(data, tag, serverAPIInfo.secretKey);\n const storedSuccessfully = storeFileToLocalStorage(\n data,\n info.remoteVersion,\n tag,\n );\n if (storedSuccessfully) {\n console.log('loaded file');\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n }\n } catch (error) {\n console.error('Error fetching and decrypting data:', error);\n onError();\n }\n } else {\n const tag = localStorage.getString('encryptionTag');\n // set to store\n if (info.data && tag) {\n console.log('loaded local file');\n const decryptedJson = decryptFile(info.data, tag, serverAPIInfo.secretKey);\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n } else {\n onError();\n }\n }\n } catch (error) {\n onError();\n }\n\n return status;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"fetch-published-json.js","names":["_axios","_interopRequireDefault","require","_helpers","_routingStore","_mapobjectsStore","e","__esModule","default","PublishedDataType","exports","Status","getDataType","publishedDataType","Routing","MapObjects","getLocalStorageKey","param","valueOf","setRouteData","useRouteDataStore","setState","setMapObjectsData","useMapObjectsDataStore","getRunTimeStore","getPublishedData","serverAPIInfo","localStorage","localStorageVersionKey","status","Awaiting","setRunTimeStoreData","fetchInfo","currentVersion","contains","getString","Promise","resolve","reject","axios","url","concat","URL","headers","Authorization","accessToken","method","data","JSON","stringify","version","dataType","then","response","remoteData","publishedDataInfo","undefined","remoteVersion","localVersion","hasOwnProperty","currentData","tag","downloadUrl","DownloadingResources","console","log","catch","error","request","message","config","storeFileToLocalStorage","set","loadFileFromStore","decryptedJson","decryptFile","secretKey","Ready","onError","loaded","Unavailable","clearAll","info","fetch","ok","Error","responseData","json","storedSuccessfully"],"sources":["../../../../src/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.ts"],"sourcesContent":["import axios from 'axios';\n\nimport { LocalStorage } from '../utils/local-storage';\nimport { decryptFile } from '../utils/helpers';\nimport useRouteDataStore from '../utils/routing-store';\nimport useMapObjectsDataStore from '../utils/mapobjects-store';\n\nexport enum PublishedDataType {\n Routing = 'routing',\n MapObjects = 'mapObjects',\n}\n\nexport enum Status {\n Ready = 'Ready',\n Awaiting = 'Awaiting',\n DownloadingResources = 'DownloadingResources',\n Unavailable = 'Unavailable',\n}\n\nexport type StatusUpdateCallbackType = (loaded: boolean) => void;\n\nexport interface ServerAPIInfo {\n URL: string;\n accessToken: string;\n secretKey: string;\n publishedDataType: PublishedDataType;\n}\n\nexport interface PublishedDataInfo {\n currentVersion: string | undefined;\n remoteVersion: string | undefined;\n URL: string | undefined;\n data: string | undefined;\n}\n\nfunction getDataType(publishedDataType: PublishedDataType) {\n if (publishedDataType === PublishedDataType.Routing) {\n return 'generate-route-json-per-role';\n }\n if (publishedDataType === PublishedDataType.MapObjects) {\n return 'generate-map-objects-per-role';\n }\n}\n\nfunction getLocalStorageKey(\n param: string,\n publishedDataType: PublishedDataType,\n): string {\n return publishedDataType.valueOf() + param;\n}\n\nconst setRouteData = useRouteDataStore.setState;\nconst setMapObjectsData = useMapObjectsDataStore.setState;\n\nfunction getRunTimeStore(publishedDataType: PublishedDataType) {\n if (publishedDataType === PublishedDataType.Routing) {\n return setRouteData;\n }\n if (publishedDataType === PublishedDataType.MapObjects) {\n return setMapObjectsData;\n }\n}\n\nexport async function getPublishedData(\n serverAPIInfo: ServerAPIInfo,\n localStorage: LocalStorage,\n) {\n const publishedDataType = serverAPIInfo.publishedDataType;\n const localStorageVersionKey = getLocalStorageKey(\n 'version',\n publishedDataType,\n );\n let status: Status = Status.Awaiting;\n let setRunTimeStoreData = getRunTimeStore(publishedDataType);\n\n const fetchInfo = async () => {\n const currentVersion = localStorage.contains(localStorageVersionKey)\n ? localStorage.getString(localStorageVersionKey)\n : '0.0.0';\n return new Promise(\n (resolve: (routingInfo: PublishedDataInfo) => void, reject) => {\n axios({\n url: `${serverAPIInfo.URL}/check-published-versions`,\n headers: {\n Authorization: `Bearer ${serverAPIInfo.accessToken}`,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n data: JSON.stringify({\n version: currentVersion,\n dataType: getDataType(serverAPIInfo.publishedDataType),\n }),\n })\n .then(response => {\n const remoteData = response.data;\n\n const publishedDataInfo = {\n currentVersion: undefined,\n remoteVersion: undefined,\n URL: undefined,\n data: undefined,\n } as PublishedDataInfo;\n const localVersion = localStorage.getString(localStorageVersionKey);\n let remoteVersion = localVersion;\n if (remoteData.hasOwnProperty('version')) {\n remoteVersion = remoteData.version;\n }\n\n publishedDataInfo.currentVersion = localVersion;\n publishedDataInfo.remoteVersion = remoteVersion;\n if (localVersion) {\n const currentData = localStorage.getString(\n getLocalStorageKey('data', publishedDataType),\n );\n const tag = localStorage.getString(\n getLocalStorageKey('encryptionTag', publishedDataType),\n );\n\n // Check both because data is useless without tag\n if (tag && currentData) {\n publishedDataInfo.data = currentData;\n }\n }\n if (remoteVersion) {\n if (remoteData.hasOwnProperty('downloadUrl')) {\n publishedDataInfo.URL = remoteData.downloadUrl;\n }\n if (\n (localVersion && remoteVersion > localVersion) ||\n !localVersion ||\n !publishedDataInfo.data\n ) {\n status = publishedDataInfo.URL\n ? Status.DownloadingResources\n : status;\n }\n }\n\n console.log(\n 'final: ',\n publishedDataInfo.URL,\n publishedDataInfo.currentVersion,\n publishedDataInfo.remoteVersion,\n );\n resolve(publishedDataInfo);\n })\n .catch(function (error) {\n console.log('error while fetching published version: ');\n if (error.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.log(error.response.data);\n console.log(error.response.status);\n console.log(error.response.headers);\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log(error.request);\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log('Error', error.message);\n }\n console.log(error.config);\n reject(error);\n });\n },\n );\n };\n\n const storeFileToLocalStorage = (data: any, version: any, tag: any) => {\n try {\n localStorage.set(getLocalStorageKey('data', publishedDataType), data);\n localStorage.set(localStorageVersionKey, version);\n localStorage.set(\n getLocalStorageKey('encryptionTag', publishedDataType),\n tag,\n );\n return true;\n } catch (e) {\n console.log('error storing routing file from local storage', e);\n return false;\n }\n };\n\n const loadFileFromStore = () => {\n const currentData = localStorage.getString(\n getLocalStorageKey('data', publishedDataType),\n );\n const tag = localStorage.getString(\n getLocalStorageKey('encryptionTag', publishedDataType),\n );\n if (currentData && tag) {\n const decryptedJson = decryptFile(currentData, tag, serverAPIInfo.secretKey);\n // JSON.parse(storage.getString('routeData')\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n return true;\n } else {\n return false;\n }\n };\n\n const onError = () => {\n try {\n const loaded = loadFileFromStore();\n if (!loaded) {\n console.log('failed to load data');\n status = Status.Unavailable;\n }\n } catch (error) {\n console.log('erro while loading data');\n status = Status.Unavailable;\n localStorage.clearAll();\n }\n };\n\n try {\n const info = await fetchInfo();\n // @ts-ignore\n if (status === Status.DownloadingResources && info.URL) {\n // download\n console.log('downloading from server');\n try {\n // Fetch encrypted data from the server\n // This is the API call for getting map-objects.json\n const response = await fetch(info.URL);\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n const responseData = await response.json();\n // const responseData = JSON.parse(fileContent);\n const {data, tag} = responseData;\n\n const decryptedJson = await decryptFile(data, tag, serverAPIInfo.secretKey);\n const storedSuccessfully = storeFileToLocalStorage(\n data,\n info.remoteVersion,\n tag,\n );\n if (storedSuccessfully) {\n console.log('loaded file');\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n }\n } catch (error) {\n console.error('Error fetching and decrypting data:', error);\n onError();\n }\n } else {\n const tag = localStorage.getString('encryptionTag');\n // set to store\n if (info.data && tag) {\n console.log('loaded local file');\n const decryptedJson = decryptFile(info.data, tag, serverAPIInfo.secretKey);\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n } else {\n onError();\n }\n }\n } catch (error) {\n onError();\n }\n\n return status;\n}\n"],"mappings":"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","ignoreList":[]}
|