@opengeoweb/warnings 11.0.0 → 11.1.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/index.esm.js CHANGED
@@ -3,8 +3,8 @@ import { useDispatch, useSelector } from 'react-redux';
3
3
  import { Polygons, Share, ExitDomain, Edit, Delete, DrawPolygon, Visibility, Add, CoastalEvent, TemperatureLow, TemperatureHigh, Rain, Snow, Lightning, Fog, Wind, Thunderstorm, VulcanicEruption, Haze, FreezingPrecipitation, ModerateAircraftIcing, SevereAircraftIcing, ModerateTurbulence, SevereTurbulence, SandStorm, RadioactiveMaterials, breakpoints, Options, Close, ChevronDown, ChevronUp, Copy, Update, Success, Expire, Remove, ArrowUpCompact, ArrowDownCompact } from '@opengeoweb/theme';
4
4
  import { uiTypes, uiActions, getSingularDrawtoolDrawLayerId, drawingToolSelectors, layerSelectors, uiSelectors, drawingToolActions, layerActions, useSetupDialog, selectorMemoizationOptions, useUpdateSharedData, layersListener, drawingToolListener, layerReducer, uiReducer, drawingToolReducer } from '@opengeoweb/store';
5
5
  import { defaultPolygon, emptyGeoJSON, MapControlButton, getIcon, rewindGeometry, getGeoJSONPropertyValue, currentlySupportedDrawModes, defaultLayers, MapView, MapViewLayer, getFeatureExtent } from '@opengeoweb/webmap-react';
6
- import { SHARED_NAMESPACE, useConfirmationDialog, ToggleMenu, dateUtils, calculateStartSize, ToolContainerDraggable, AlertBanner, ConfirmationDialog, getAxiosErrorMessage, usePrevious, CustomIconButton, CustomTooltip, Avatar, getInitials, SwitchButton, CustomToggleButton, Filter, FilterChip, FilterOption, StatusTag, LastUpdateTime, ErrorBoundary, isAxiosError as isAxiosError$1 } from '@opengeoweb/shared';
7
- import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, isAnyOf, combineReducers, configureStore } from '@reduxjs/toolkit';
6
+ import { SHARED_NAMESPACE, useConfirmationDialog, ToggleMenu, dateUtils, calculateStartSize, ToolContainerDraggable, AlertBanner, ConfirmationDialog, getAxiosErrorMessage, usePrevious, CustomIconButton, CustomTooltip, Avatar, getInitials, SwitchButton, CustomToggleButton, Filter, FilterChip, FilterOption, StatusTag, LastUpdateTime, ErrorBoundary, isAxiosError } from '@opengeoweb/shared';
7
+ import { createEntityAdapter, createSlice, createSelector, current, createListenerMiddleware, combineReducers, configureStore } from '@reduxjs/toolkit';
8
8
  import 'i18next';
9
9
  import { useTranslation } from 'react-i18next';
10
10
  import '@opengeoweb/core';
@@ -17,13 +17,12 @@ import React__default, { useState, useEffect, useRef, useMemo, useCallback } fro
17
17
  import { styled, Box, Typography, ListItem, Grid2, Paper, ListItemButton, Stack, LinearProgress, Button, FormHelperText, MenuItem, Tabs, Tab, Card, CardContent, CircularProgress, Menu, DialogTitle, DialogContent, Switch, ListItemText } from '@mui/material';
18
18
  import { VariableSizeList } from 'react-window';
19
19
  import AutoSizer from 'react-virtualized-auto-sizer';
20
- import { getApi, createApiInstance, createNonAuthApiInstance, createFakeApiInstance, ApiProvider, AirmetPhenomena, SigmetPhenomena, getHeaders, handleResponse, useAuthQuery, useAuthenticationContext, ProductStatus, optimisticUpdate } from '@opengeoweb/api';
21
- import { rest } from 'msw';
22
- import { concat, isEqual, cloneDeep, clamp, groupBy, pick, assign } from 'lodash';
20
+ import { getApi, createApiInstance, createNonAuthApiInstance, createFakeApiInstance, ApiProvider, AirmetPhenomena, SigmetPhenomena, getHeaders, handleResponse, useAuthQuery, useAuthenticationContext, optimisticUpdate, ProductStatus } from '@opengeoweb/api';
21
+ import { http, HttpResponse, passthrough, delay } from 'msw';
22
+ import { concat, isEqual, cloneDeep, clamp, groupBy, pick } from 'lodash';
23
23
  import { useFormContext } from 'react-hook-form';
24
24
  import { getConfig, useAuthenticationContext as useAuthenticationContext$1 } from '@opengeoweb/authentication';
25
25
  import { useQueryClient, useMutation } from '@tanstack/react-query';
26
- import { isAxiosError } from 'axios';
27
26
 
28
27
  var en = {
29
28
  "drawing-tool-form-tools": "Tools",
@@ -2166,36 +2165,6 @@ var slice$1 = createSlice({
2166
2165
  draft.warningType = (warning == null ? void 0 : warning.type) || warningType;
2167
2166
  draft.panelId = panelId;
2168
2167
  },
2169
- // publish warning
2170
- publishWarning: function publishWarning(draft,
2171
- // eslint-disable-next-line no-unused-vars
2172
- action) {
2173
- draft.formState = 'publishing';
2174
- delete draft.error;
2175
- },
2176
- publishWarningSuccess: function publishWarningSuccess(draft, action) {
2177
- var publicWarning = action.payload.publicWarning;
2178
- draft.warning = publicWarning;
2179
- // If form has been published, set form to readonly
2180
- draft.formState = 'readonly';
2181
- },
2182
- // save warning
2183
- saveWarning: function saveWarning(draft,
2184
- // eslint-disable-next-line no-unused-vars
2185
- action) {
2186
- draft.formState = 'saving';
2187
- delete draft.error;
2188
- draft.warning = action.payload.publicWarning;
2189
- },
2190
- saveWarningSuccess: function saveWarningSuccess(draft, action) {
2191
- var _publicWarning$warnin;
2192
- var publicWarning = action.payload.publicWarning;
2193
- draft.warning = publicWarning;
2194
- if (publicWarning != null && (_publicWarning$warnin = publicWarning.warningDetail) != null && _publicWarning$warnin.id) {
2195
- draft.selectedWarningId = publicWarning.warningDetail.id;
2196
- }
2197
- draft.formState = '';
2198
- },
2199
2168
  setFormError: function setFormError(draft, action) {
2200
2169
  var _action$payload3 = action.payload,
2201
2170
  message = _action$payload3.message,
@@ -7438,39 +7407,22 @@ var airmetList$1 = airmetListJSON;
7438
7407
  var sigmetList$1 = sigmetListJSON;
7439
7408
  var fakeSigmetTAC = 'EHAA SIGMET 1 VALID 121249/121449 EHDB- EHAA AMSTERDAM FIR FRQ TS OBS ENTIRE FIR FL010 STNR WKN';
7440
7409
  var fakeAirmetTAC = 'EHAA AIRMET -1 VALID 310700/311100 EHDB- EHAA AMSTERDAM FIR ISOL CB OBS ENTIRE FIR FL020 STNR NC';
7441
- [rest.get(/^.*\/airmetlist$/, function (_, res, ctx) {
7442
- return res(ctx.status(200), ctx.json(airmetList$1));
7443
- }), rest.get(/^.*\/sigmetlist$/, function (_, res, ctx) {
7444
- return res(ctx.status(200), ctx.json(sigmetList$1));
7445
- }), rest.get(/^.*\/airmet-config$/, function (_, res, ctx) {
7446
- return res(ctx.status(200), ctx.json(airmetConfig));
7447
- }), rest.get(/^.*\/sigmet-config$/, function (_, res, ctx) {
7448
- return res(ctx.status(200), ctx.json(sigmetConfig));
7449
- }), rest.post(/^.*\/airmet2tac$/, function (_, res, ctx) {
7450
- return res(ctx.status(200), ctx.text(fakeAirmetTAC));
7451
- }), rest.post(/^.*\/sigmet2tac$/, function (_, res, ctx) {
7452
- return res(ctx.status(200), ctx.text(fakeSigmetTAC));
7453
- }), rest.get(/^(?!.*(sigmet|airmet)).*$/, function (req) {
7454
- return req.passthrough();
7410
+ [http.get(/^.*\/airmetlist$/, function () {
7411
+ return HttpResponse.json(airmetList$1);
7412
+ }), http.get(/^.*\/sigmetlist$/, function () {
7413
+ return HttpResponse.json(sigmetList$1);
7414
+ }), http.get(/^.*\/airmet-config$/, function () {
7415
+ return HttpResponse.json(airmetConfig);
7416
+ }), http.get(/^.*\/sigmet-config$/, function () {
7417
+ return HttpResponse.json(sigmetConfig);
7418
+ }), http.post(/^.*\/airmet2tac$/, function () {
7419
+ return HttpResponse.text(fakeAirmetTAC);
7420
+ }), http.post(/^.*\/sigmet2tac$/, function () {
7421
+ return HttpResponse.text(fakeSigmetTAC);
7422
+ }), http.get(/^(?!.*(sigmet|airmet)).*$/, function () {
7423
+ return passthrough();
7455
7424
  })];
7456
7425
 
7457
- /* *
7458
- * Licensed under the Apache License, Version 2.0 (the "License");
7459
- * you may not use this file except in compliance with the License.
7460
- * You may obtain a copy of the License at
7461
- *
7462
- * http://www.apache.org/licenses/LICENSE-2.0
7463
- *
7464
- * Unless required by applicable law or agreed to in writing, software
7465
- * distributed under the License is distributed on an "AS IS" BASIS,
7466
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7467
- * See the License for the specific language governing permissions and
7468
- * limitations under the License.
7469
- *
7470
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7471
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
7472
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
7473
- * */
7474
7426
  var drawingList = drawingListJSON;
7475
7427
  var drawingsListFullContent = drawingsListFullContentJSON;
7476
7428
  var warningList = warningListJSON.map(function (pw) {
@@ -7481,24 +7433,35 @@ var warningList = warningListJSON.map(function (pw) {
7481
7433
  warningList.filter(function (warning) {
7482
7434
  return warning.status !== 'EXPIRED' && warning.status !== 'WITHDRAWN';
7483
7435
  }).length;
7484
- var sigmetList = sigmetListJSON$1.map(function (s) {
7485
- return Object.assign({}, s, {
7436
+ var sigmetList = sigmetListJSON$1.map(function (sig) {
7437
+ return Object.assign({}, sig, {
7486
7438
  type: 'sigmet'
7487
7439
  });
7488
7440
  });
7489
- var airmetList = airmetListJSON$1.map(function (a) {
7490
- return Object.assign({}, a, {
7441
+ var airmetList = airmetListJSON$1.map(function (air) {
7442
+ return Object.assign({}, air, {
7491
7443
  type: 'airmet'
7492
7444
  });
7493
7445
  });
7494
7446
  concat(warningList, sigmetList, airmetList);
7495
7447
  var areaKeywordList = ['North Sea districts', 'Coastal Districts', 'KNMI Specific', 'Objects', 'Baltic areas', 'NL', 'FI', 'METNorway Specific', 'Provinces', 'FIR', 'Countries'];
7496
- [rest.get(/^.*\/warnings$/, function (req, res, ctx) {
7448
+ [http.get(/^.*\/warnings$/, function () {
7497
7449
  // respond using a mocked JSON body
7498
- return res(ctx.status(200), ctx.json(warningList));
7499
- }), rest.post(/^.*\/warnings\/(.*)$/, function (req, res, ctx) {
7500
- return res(ctx.status(200), ctx.json({}));
7501
- })];
7450
+ return HttpResponse.json(warningList);
7451
+ }), http.post(/^.*\/warnings\/(.*)$/, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
7452
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
7453
+ while (1) switch (_context.prev = _context.next) {
7454
+ case 0:
7455
+ _context.next = 2;
7456
+ return delay();
7457
+ case 2:
7458
+ return _context.abrupt("return", HttpResponse.json(null));
7459
+ case 3:
7460
+ case "end":
7461
+ return _context.stop();
7462
+ }
7463
+ }, _callee);
7464
+ })))];
7502
7465
 
7503
7466
  /* *
7504
7467
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -8736,12 +8699,15 @@ var domainLevels = {
8736
8699
  };
8737
8700
  var defaultLevelFilter = (_defaultLevelFilter = {}, _defaultLevelFilter[emptyFilterId] = true, _defaultLevelFilter.extreme = true, _defaultLevelFilter.moderate = true, _defaultLevelFilter.severe = true, _defaultLevelFilter.AIR = true, _defaultLevelFilter.SIG = true, _defaultLevelFilter);
8738
8701
  var defaultEmptyFilter = (_defaultEmptyFilter = {}, _defaultEmptyFilter[emptyFilterId] = true, _defaultEmptyFilter);
8739
- var makeFilterFromList = function makeFilterFromList(options) {
8702
+ var makeFilterFromList = function makeFilterFromList(options, value) {
8740
8703
  var _options$reduce;
8704
+ if (value === void 0) {
8705
+ value = true;
8706
+ }
8741
8707
  return options.reduce(function (acc, p) {
8742
8708
  var _Object$assign;
8743
- return p ? Object.assign({}, acc, (_Object$assign = {}, _Object$assign[p] = true, _Object$assign)) : acc;
8744
- }, (_options$reduce = {}, _options$reduce[emptyFilterId] = true, _options$reduce));
8709
+ return p ? Object.assign({}, acc, (_Object$assign = {}, _Object$assign[p] = value, _Object$assign)) : acc;
8710
+ }, (_options$reduce = {}, _options$reduce[emptyFilterId] = value, _options$reduce));
8745
8711
  };
8746
8712
  var AllPhenomena = Object.assign({}, AirmetPhenomena, SigmetPhenomena, Phenomenon$1);
8747
8713
  var AllPhenomenaKeys = Object.fromEntries(Object.keys(AllPhenomena).map(function (key) {
@@ -8761,6 +8727,9 @@ var initialFilters = {
8761
8727
  level: defaultLevelFilter
8762
8728
  };
8763
8729
  var getSelectedOptions = function getSelectedOptions(options) {
8730
+ if (options === void 0) {
8731
+ options = {};
8732
+ }
8764
8733
  var selectedOptions = Object.keys(options).filter(function (k) {
8765
8734
  return options[k];
8766
8735
  });
@@ -9800,14 +9769,32 @@ var Form = function Form(_ref5) {
9800
9769
  var _publicWarningDetails, _publicWarningDetails2;
9801
9770
  var defaultMapPreset = _ref5.defaultMapPreset,
9802
9771
  _ref5$onSaveForm = _ref5.onSaveForm,
9803
- onSaveForm = _ref5$onSaveForm === void 0 ? function () {} : _ref5$onSaveForm,
9772
+ onSaveForm = _ref5$onSaveForm === void 0 ? /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
9773
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
9774
+ while (1) switch (_context.prev = _context.next) {
9775
+ case 0:
9776
+ return _context.abrupt("return", null);
9777
+ case 1:
9778
+ case "end":
9779
+ return _context.stop();
9780
+ }
9781
+ }, _callee);
9782
+ })) : _ref5$onSaveForm,
9804
9783
  _ref5$onPublishForm = _ref5.onPublishForm,
9805
- onPublishForm = _ref5$onPublishForm === void 0 ? function () {} : _ref5$onPublishForm,
9784
+ onPublishForm = _ref5$onPublishForm === void 0 ? /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
9785
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
9786
+ while (1) switch (_context2.prev = _context2.next) {
9787
+ case 0:
9788
+ return _context2.abrupt("return", null);
9789
+ case 1:
9790
+ case "end":
9791
+ return _context2.stop();
9792
+ }
9793
+ }, _callee2);
9794
+ })) : _ref5$onPublishForm,
9806
9795
  _ref5$onClearForm = _ref5.onClearForm,
9807
9796
  onClearForm = _ref5$onClearForm === void 0 ? function () {} : _ref5$onClearForm,
9808
9797
  object = _ref5.object,
9809
- _ref5$formAction = _ref5.formAction,
9810
- formAction = _ref5$formAction === void 0 ? '' : _ref5$formAction,
9811
9798
  publicWarningDetails = _ref5.publicWarningDetails,
9812
9799
  _ref5$error = _ref5.error,
9813
9800
  error = _ref5$error === void 0 ? {
@@ -9825,14 +9812,25 @@ var Form = function Form(_ref5) {
9825
9812
  selectedAviationProduct = _ref5.selectedAviationProduct,
9826
9813
  _ref5$warningType = _ref5.warningType,
9827
9814
  warningType = _ref5$warningType === void 0 ? 'public' : _ref5$warningType,
9828
- mode = _ref5.mode;
9815
+ mode = _ref5.mode,
9816
+ _ref5$onSetViewModeRe = _ref5.onSetViewModeResetArea,
9817
+ onSetViewModeResetArea = _ref5$onSetViewModeRe === void 0 ? function () {} : _ref5$onSetViewModeRe;
9818
+ var _React$useState = React.useState(false),
9819
+ isPublishing = _React$useState[0],
9820
+ setIsPublishing = _React$useState[1];
9821
+ var _React$useState2 = React.useState(false),
9822
+ isSaving = _React$useState2[0],
9823
+ setIsSaving = _React$useState2[1];
9829
9824
  var _useTACApi = useTACApi(),
9830
9825
  fetchSigmetTAC = _useTACApi.fetchSigmetTAC,
9831
9826
  fetchAirmetTAC = _useTACApi.fetchAirmetTAC;
9832
9827
  var initialPublicWarningArea = (publicWarningDetails == null || (_publicWarningDetails = publicWarningDetails.areas) == null ? void 0 : _publicWarningDetails.length) && (publicWarningDetails == null || (_publicWarningDetails2 = publicWarningDetails.areas[0]) == null ? void 0 : _publicWarningDetails2.geoJSON);
9833
- var _React$useState = React.useState(initialPublicWarningArea),
9834
- warningGeoJSONFeature = _React$useState[0],
9835
- setWarningGeoJSONFeature = _React$useState[1];
9828
+ var _React$useState3 = React.useState(initialPublicWarningArea),
9829
+ warningGeoJSONFeature = _React$useState3[0],
9830
+ setWarningGeoJSONFeature = _React$useState3[1];
9831
+ var _React$useState4 = React.useState(publicWarningDetails == null ? void 0 : publicWarningDetails.areas),
9832
+ originalWarningAreas = _React$useState4[0],
9833
+ setOriginalWarningAreas = _React$useState4[1];
9836
9834
  var _useWarningsTranslati = useWarningsTranslation(),
9837
9835
  t = _useWarningsTranslati.t;
9838
9836
  var _useFormContext = useFormContext(),
@@ -9844,8 +9842,6 @@ var Form = function Form(_ref5) {
9844
9842
  var _useDraftFormHelpers = useDraftFormHelpers(),
9845
9843
  toggleIsDraft = _useDraftFormHelpers.toggleIsDraft,
9846
9844
  DraftFieldHelper = _useDraftFormHelpers.DraftFieldHelper;
9847
- var isPublishing = formAction === 'publishing';
9848
- var isSaving = formAction === 'saving';
9849
9845
  var areFieldsDisabled = isPublishing || isSaving;
9850
9846
  useFormDirty({
9851
9847
  isDirty: Object.keys(dirtyFields).length > 0,
@@ -9861,19 +9857,23 @@ var Form = function Form(_ref5) {
9861
9857
  if (!isPublishing) {
9862
9858
  toggleIsDraft(false);
9863
9859
  void handleSubmit( /*#__PURE__*/function () {
9864
- var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data) {
9865
- return _regeneratorRuntime().wrap(function _callee$(_context) {
9866
- while (1) switch (_context.prev = _context.next) {
9860
+ var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(data) {
9861
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
9862
+ while (1) switch (_context3.prev = _context3.next) {
9867
9863
  case 0:
9868
- onPublishForm(prepareFormValues(data));
9869
- case 1:
9864
+ setIsPublishing(true);
9865
+ _context3.next = 3;
9866
+ return onPublishForm(prepareFormValues(data))["catch"](function () {});
9867
+ case 3:
9868
+ setIsPublishing(false);
9869
+ case 4:
9870
9870
  case "end":
9871
- return _context.stop();
9871
+ return _context3.stop();
9872
9872
  }
9873
- }, _callee);
9873
+ }, _callee3);
9874
9874
  }));
9875
9875
  return function (_x) {
9876
- return _ref6.apply(this, arguments);
9876
+ return _ref8.apply(this, arguments);
9877
9877
  };
9878
9878
  }())();
9879
9879
  }
@@ -9882,19 +9882,23 @@ var Form = function Form(_ref5) {
9882
9882
  if (!isSaving) {
9883
9883
  toggleIsDraft(true);
9884
9884
  void handleSubmit( /*#__PURE__*/function () {
9885
- var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(data) {
9886
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
9887
- while (1) switch (_context2.prev = _context2.next) {
9885
+ var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(data) {
9886
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
9887
+ while (1) switch (_context4.prev = _context4.next) {
9888
9888
  case 0:
9889
- onSaveForm(prepareFormValues(data));
9890
- case 1:
9889
+ setIsSaving(true);
9890
+ _context4.next = 3;
9891
+ return onSaveForm(prepareFormValues(data))["catch"](function () {});
9892
+ case 3:
9893
+ setIsSaving(false);
9894
+ case 4:
9891
9895
  case "end":
9892
- return _context2.stop();
9896
+ return _context4.stop();
9893
9897
  }
9894
- }, _callee2);
9898
+ }, _callee4);
9895
9899
  }));
9896
9900
  return function (_x2) {
9897
- return _ref7.apply(this, arguments);
9901
+ return _ref9.apply(this, arguments);
9898
9902
  };
9899
9903
  }())();
9900
9904
  }
@@ -9904,6 +9908,7 @@ var Form = function Form(_ref5) {
9904
9908
  setWarningGeoJSONFeature(undefined);
9905
9909
  onClearForm();
9906
9910
  };
9911
+ // When switching warning, reset the form to the new values
9907
9912
  var publicWarningId = publicWarningDetails == null ? void 0 : publicWarningDetails.id;
9908
9913
  React.useEffect(function () {
9909
9914
  if (selectedAviationProduct) {
@@ -9911,8 +9916,27 @@ var Form = function Form(_ref5) {
9911
9916
  }
9912
9917
  // sync redux with react-hook-form
9913
9918
  reset(getFormData(publicWarningDetails, object));
9919
+ setOriginalWarningAreas(publicWarningDetails == null ? void 0 : publicWarningDetails.areas);
9914
9920
  // eslint-disable-next-line react-hooks/exhaustive-deps
9915
9921
  }, [publicWarningId]);
9922
+ // When the editor gets set back to viewer and the form is dirty, reset any changes made
9923
+ React.useEffect(function () {
9924
+ if (selectedAviationProduct) {
9925
+ return;
9926
+ }
9927
+ if (isReadOnly && (Object.keys(dirtyFields).length > 0 || (publicWarningDetails == null ? void 0 : publicWarningDetails.areas) !== originalWarningAreas)) {
9928
+ // // sync redux with react-hook-form
9929
+ var oldPublicWarning = Object.assign({}, publicWarningDetails, {
9930
+ areas: originalWarningAreas
9931
+ });
9932
+ reset(getFormData(oldPublicWarning, object));
9933
+ if ((publicWarningDetails == null ? void 0 : publicWarningDetails.areas) !== originalWarningAreas) {
9934
+ // update the store to contain the original area again
9935
+ onSetViewModeResetArea(originalWarningAreas || []);
9936
+ }
9937
+ }
9938
+ // eslint-disable-next-line react-hooks/exhaustive-deps
9939
+ }, [isReadOnly]);
9916
9940
  var areas = publicWarningDetails == null ? void 0 : publicWarningDetails.areas;
9917
9941
  React.useEffect(function () {
9918
9942
  if (selectedAviationProduct) {
@@ -9920,7 +9944,9 @@ var Form = function Form(_ref5) {
9920
9944
  }
9921
9945
  if (areas) {
9922
9946
  // sync redux with react-hook-form
9923
- setValue('areas', areas);
9947
+ setValue('areas', areas, {
9948
+ shouldDirty: true
9949
+ });
9924
9950
  }
9925
9951
  // eslint-disable-next-line react-hooks/exhaustive-deps
9926
9952
  }, [areas, setValue]);
@@ -10213,7 +10239,10 @@ var getPublicWarningStore = function getPublicWarningStore(store) {
10213
10239
  }
10214
10240
  return {};
10215
10241
  };
10216
- var getPublicWarningObject = createSelector(getPublicWarningStore, function (publicWarningStore) {
10242
+ var selectPublicWarningState = createSelector(getPublicWarningStore, function (state) {
10243
+ return state;
10244
+ });
10245
+ createSelector(getPublicWarningStore, function (publicWarningStore) {
10217
10246
  return publicWarningStore.object;
10218
10247
  });
10219
10248
  var getPublicWarning = createSelector(getPublicWarningStore, function (publicWarningStore) {
@@ -10234,7 +10263,7 @@ var getPublicWarningAreas = createSelector(getPublicWarningStore, function (publ
10234
10263
  var getPublicWarningFormState = createSelector(getPublicWarningStore, function (publicWarningStore) {
10235
10264
  return (publicWarningStore == null ? void 0 : publicWarningStore.formState) || '';
10236
10265
  });
10237
- var getPublicWarningFormError = createSelector(getPublicWarningStore, function (publicWarningStore) {
10266
+ createSelector(getPublicWarningStore, function (publicWarningStore) {
10238
10267
  return publicWarningStore == null ? void 0 : publicWarningStore.error;
10239
10268
  });
10240
10269
  var getSelectedWarningId = createSelector(getPublicWarningStore, function (publicWarningStore) {
@@ -10275,51 +10304,298 @@ var PublicWarningStatus;
10275
10304
  PublicWarningStatus["WITHDRAWN"] = "WITHDRAWN";
10276
10305
  })(PublicWarningStatus || (PublicWarningStatus = {}));
10277
10306
 
10307
+ /* *
10308
+ * Licensed under the Apache License, Version 2.0 (the "License");
10309
+ * you may not use this file except in compliance with the License.
10310
+ * You may obtain a copy of the License at
10311
+ *
10312
+ * http://www.apache.org/licenses/LICENSE-2.0
10313
+ *
10314
+ * Unless required by applicable law or agreed to in writing, software
10315
+ * distributed under the License is distributed on an "AS IS" BASIS,
10316
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10317
+ * See the License for the specific language governing permissions and
10318
+ * limitations under the License.
10319
+ *
10320
+ * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
10321
+ * Copyright 2024 - Finnish Meteorological Institute (FMI)
10322
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
10323
+ * */
10324
+ var config = getConfig();
10325
+ var publicWarningBaseUrl = config.GW_DRAWINGS_BASE_URL || '';
10326
+ // API
10327
+ var getPublicWarningList = function getPublicWarningList(auth) {
10328
+ return fetch(publicWarningBaseUrl + "/warnings", {
10329
+ headers: getHeaders(auth)
10330
+ }).then(handleResponse).then(function (warnings) {
10331
+ return warnings.map(function (warning) {
10332
+ return Object.assign({}, warning, {
10333
+ type: 'public'
10334
+ });
10335
+ });
10336
+ });
10337
+ };
10338
+ var updatePublicWarningEditor = function updatePublicWarningEditor(warningId, isEditor, auth) {
10339
+ return fetch(publicWarningBaseUrl + "/warnings/" + warningId + "?editor=" + (isEditor ? 'true' : 'false') + "&force=true", {
10340
+ headers: getHeaders(auth),
10341
+ method: 'POST'
10342
+ }).then(handleResponse);
10343
+ };
10344
+ var updatePublicWarning = function updatePublicWarning(warningId, auth, data) {
10345
+ return fetch(publicWarningBaseUrl + "/warnings/" + warningId, {
10346
+ headers: getHeaders(auth),
10347
+ method: 'POST',
10348
+ body: JSON.stringify(data)
10349
+ }).then(handleResponse);
10350
+ };
10351
+ var postPublicWarning = function postPublicWarning(auth, data) {
10352
+ return fetch(publicWarningBaseUrl + "/warnings/", {
10353
+ headers: getHeaders(auth),
10354
+ method: 'POST',
10355
+ body: JSON.stringify(data)
10356
+ }).then(handleResponse);
10357
+ };
10358
+
10359
+ /**
10360
+ * @param disabled - Disables fetching, but still returns cached values.
10361
+ * https://tanstack.com/query/v4/docs/framework/react/guides/disabling-queries
10362
+ */
10363
+ var usePublicWarnings = function usePublicWarnings(disabled) {
10364
+ if (disabled === void 0) {
10365
+ disabled = false;
10366
+ }
10367
+ return useAuthQuery(['public-warning-list'], getPublicWarningList, disabled, 1000 * 60 * 5);
10368
+ };
10369
+ var useMutatePublicWarningEditor = function useMutatePublicWarningEditor() {
10370
+ var queryClient = useQueryClient();
10371
+ var _useAuthenticationCon = useAuthenticationContext(),
10372
+ auth = _useAuthenticationCon.auth;
10373
+ var dispatch = useDispatch();
10374
+ return useMutation(Object.assign({
10375
+ mutationFn: function mutationFn(_ref) {
10376
+ var id = _ref.id,
10377
+ isEditor = _ref.isEditor;
10378
+ if (!auth) {
10379
+ throw new Error('Authentication context not found');
10380
+ }
10381
+ return updatePublicWarningEditor(id, isEditor, auth);
10382
+ }
10383
+ }, optimisticUpdate(['public-warning-list'], queryClient, function (warning, _ref2) {
10384
+ var isEditor = _ref2.isEditor;
10385
+ return Object.assign({}, warning, {
10386
+ editor: isEditor ? auth.username : undefined
10387
+ });
10388
+ }, function (error) {
10389
+ dispatch(publicWarningFormActions.setFormError({
10390
+ message: error.message
10391
+ }));
10392
+ }), {
10393
+ onSuccess: function () {
10394
+ var _onSuccess = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data, _ref3) {
10395
+ var isEditor;
10396
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
10397
+ while (1) switch (_context.prev = _context.next) {
10398
+ case 0:
10399
+ isEditor = _ref3.isEditor;
10400
+ dispatch(snackbarActions.openSnackbar({
10401
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
10402
+ key: isEditor ? 'warning-editor-add-editor' : 'warning-editor-remove-editor'
10403
+ }));
10404
+ case 2:
10405
+ case "end":
10406
+ return _context.stop();
10407
+ }
10408
+ }, _callee);
10409
+ }));
10410
+ function onSuccess(_x, _x2) {
10411
+ return _onSuccess.apply(this, arguments);
10412
+ }
10413
+ return onSuccess;
10414
+ }()
10415
+ }));
10416
+ };
10417
+ var useMutateWarning = function useMutateWarning(snackBarMessage) {
10418
+ var queryClient = useQueryClient();
10419
+ var _useAuthenticationCon2 = useAuthenticationContext(),
10420
+ auth = _useAuthenticationCon2.auth;
10421
+ var dispatch = useDispatch();
10422
+ return useMutation(Object.assign({
10423
+ mutationFn: function mutationFn(_ref4) {
10424
+ var id = _ref4.id,
10425
+ data = _ref4.data;
10426
+ if (!auth) {
10427
+ throw new Error('Authentication context not found');
10428
+ }
10429
+ if (id) {
10430
+ return updatePublicWarning(id, auth, data);
10431
+ }
10432
+ return postPublicWarning(auth, data);
10433
+ }
10434
+ }, optimisticUpdate(['public-warning-list'], queryClient, function (_, _ref5) {
10435
+ var data = _ref5.data,
10436
+ id = _ref5.id;
10437
+ return Object.assign({}, data, {
10438
+ id: id,
10439
+ lastUpdatedTime: new Date().toISOString()
10440
+ });
10441
+ }, function (error) {
10442
+ dispatch(publicWarningFormActions.setFormError({
10443
+ message: error.message
10444
+ }));
10445
+ }), {
10446
+ onSuccess: function () {
10447
+ var _onSuccess2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(data, variables) {
10448
+ var location, _variables$data, warningDetail, status, newId, newWarning;
10449
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
10450
+ while (1) switch (_context2.prev = _context2.next) {
10451
+ case 0:
10452
+ location = data == null ? void 0 : data.get('location');
10453
+ _variables$data = variables.data, warningDetail = _variables$data.warningDetail, status = _variables$data.status;
10454
+ if (
10455
+ // DRAFT_PUBLISHED warnings have linked_to_id to the published warning it is based on
10456
+ // When publishing a DRAFT_PUBLISHED warning we need to update the published warning and delete the draft
10457
+ warningDetail.linked_to_id && status === PublicWarningStatus.PUBLISHED) {
10458
+ queryClient.setQueryData(['public-warning-list'], function (old) {
10459
+ return old == null ? void 0 : old.reduce(function (acc, warning) {
10460
+ if (warning.id === warningDetail.linked_to_id) {
10461
+ return acc;
10462
+ }
10463
+ var id = warning.id === warningDetail.id ? warningDetail.linked_to_id : warningDetail.id;
10464
+ return [].concat(acc, [Object.assign({}, warning, {
10465
+ id: id,
10466
+ warningDetail: Object.assign({}, warningDetail, {
10467
+ id: id
10468
+ })
10469
+ })]);
10470
+ }, []);
10471
+ });
10472
+ }
10473
+ if (location) {
10474
+ // When making a new warning we get it's ID from the location header
10475
+ newId = getIdFromUrl(location);
10476
+ newWarning = Object.assign({}, variables.data, {
10477
+ id: newId,
10478
+ lastUpdatedTime: new Date().toISOString(),
10479
+ warningDetail: Object.assign({}, warningDetail, {
10480
+ id: newId,
10481
+ domain: 'public'
10482
+ })
10483
+ });
10484
+ queryClient.setQueryData(['public-warning-list'], function (old) {
10485
+ return [].concat(old || [], [newWarning]);
10486
+ });
10487
+ dispatch(publicWarningFormActions.openPublicWarningFormDialog({
10488
+ warning: newWarning,
10489
+ formState: '',
10490
+ panelId: variables.panelId
10491
+ }));
10492
+ }
10493
+ dispatch(snackbarActions.openSnackbar({
10494
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
10495
+ key: snackBarMessage
10496
+ }));
10497
+ if (variables.data.status === PublicWarningStatus.PUBLISHED) {
10498
+ dispatch(uiActions.setToggleOpenDialog({
10499
+ type: publicWarningDialogType,
10500
+ setOpen: false
10501
+ }));
10502
+ }
10503
+ case 6:
10504
+ case "end":
10505
+ return _context2.stop();
10506
+ }
10507
+ }, _callee2);
10508
+ }));
10509
+ function onSuccess(_x3, _x4) {
10510
+ return _onSuccess2.apply(this, arguments);
10511
+ }
10512
+ return onSuccess;
10513
+ }()
10514
+ }));
10515
+ };
10516
+ var usePublishWarning = function usePublishWarning() {
10517
+ return useMutateWarning('warning-publish-succes');
10518
+ };
10519
+ var useSaveWarning = function useSaveWarning() {
10520
+ return useMutateWarning('warning-save-succes');
10521
+ };
10522
+
10278
10523
  var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
10279
10524
  var editor = _ref.editor,
10280
10525
  defaultMapPreset = _ref.defaultMapPreset,
10281
10526
  selectedAviationProduct = _ref.selectedAviationProduct,
10282
10527
  _ref$warningType = _ref.warningType,
10283
10528
  warningType = _ref$warningType === void 0 ? 'public' : _ref$warningType,
10284
- mode = _ref.mode,
10285
- onFormSubmit = _ref.onFormSubmit;
10286
- var publicWarning = useSelector(getPublicWarning);
10287
- var publicWarningObject = useSelector(getPublicWarningObject);
10288
- var publicWarningFormAction = useSelector(getPublicWarningFormState);
10289
- var publicWarningFormError = useSelector(getPublicWarningFormError);
10529
+ mode = _ref.mode;
10530
+ var _useSelector = useSelector(selectPublicWarningState),
10531
+ warning = _useSelector.warning,
10532
+ object = _useSelector.object,
10533
+ formState = _useSelector.formState,
10534
+ error = _useSelector.error,
10535
+ panelId = _useSelector.panelId;
10536
+ var _usePublishWarning = usePublishWarning(),
10537
+ publishWarning = _usePublishWarning.mutateAsync;
10538
+ var _useSaveWarning = useSaveWarning(),
10539
+ saveWarning = _useSaveWarning.mutateAsync;
10290
10540
  var _useAuthenticationCon = useAuthenticationContext$1(),
10291
10541
  auth = _useAuthenticationCon.auth;
10292
10542
  var isEditor = editor === (auth == null ? void 0 : auth.username) || false;
10293
10543
  var dispatch = useDispatch();
10294
- var publishForm = function publishForm(newFormValues) {
10295
- if (warningType === 'public') {
10296
- dispatch(publicWarningFormActions.publishWarning({
10297
- publicWarning: {
10298
- warningDetail: newFormValues,
10299
- status: PublicWarningStatus.PUBLISHED,
10300
- type: warningType
10301
- },
10302
- refetchWarnings: onFormSubmit
10303
- }));
10304
- }
10305
- };
10544
+ var publishForm = /*#__PURE__*/function () {
10545
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(newFormValues) {
10546
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
10547
+ while (1) switch (_context.prev = _context.next) {
10548
+ case 0:
10549
+ return _context.abrupt("return", publishWarning({
10550
+ id: newFormValues.id || newFormValues.linked_to_id || '',
10551
+ data: {
10552
+ warningDetail: newFormValues.id ? newFormValues : Object.assign({}, newFormValues, {
10553
+ id: newFormValues.linked_to_id
10554
+ }),
10555
+ status: PublicWarningStatus.PUBLISHED,
10556
+ type: 'public'
10557
+ }
10558
+ }));
10559
+ case 1:
10560
+ case "end":
10561
+ return _context.stop();
10562
+ }
10563
+ }, _callee);
10564
+ }));
10565
+ return function publishForm(_x) {
10566
+ return _ref2.apply(this, arguments);
10567
+ };
10568
+ }();
10306
10569
  var clearForm = function clearForm() {
10307
10570
  dispatch(publicWarningFormActions.removeAllAreas());
10308
10571
  };
10309
- var saveForm = function saveForm(newFormValues) {
10310
- var status = newFormValues.linked_to_id ? PublicWarningStatus.DRAFT_PUBLISHED : PublicWarningStatus.DRAFT;
10311
- if (warningType === 'public') {
10312
- dispatch(publicWarningFormActions.saveWarning({
10313
- publicWarning: {
10314
- warningDetail: newFormValues,
10315
- status: status,
10316
- editor: auth == null ? void 0 : auth.username,
10317
- type: warningType
10318
- },
10319
- refetchWarnings: onFormSubmit
10320
- }));
10321
- }
10322
- };
10572
+ var saveForm = /*#__PURE__*/function () {
10573
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(newFormValues) {
10574
+ var status;
10575
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
10576
+ while (1) switch (_context2.prev = _context2.next) {
10577
+ case 0:
10578
+ status = newFormValues.linked_to_id ? PublicWarningStatus.DRAFT_PUBLISHED : PublicWarningStatus.DRAFT;
10579
+ return _context2.abrupt("return", saveWarning({
10580
+ id: newFormValues.id,
10581
+ data: {
10582
+ warningDetail: newFormValues,
10583
+ status: status,
10584
+ editor: auth == null ? void 0 : auth.username,
10585
+ type: 'public'
10586
+ },
10587
+ panelId: panelId
10588
+ }));
10589
+ case 2:
10590
+ case "end":
10591
+ return _context2.stop();
10592
+ }
10593
+ }, _callee2);
10594
+ }));
10595
+ return function saveForm(_x2) {
10596
+ return _ref3.apply(this, arguments);
10597
+ };
10598
+ }();
10323
10599
  var onFormDirty = function onFormDirty(isFormDirty) {
10324
10600
  dispatch(publicWarningFormActions.setFormDirty({
10325
10601
  isFormDirty: isFormDirty
@@ -10328,20 +10604,20 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
10328
10604
  var getIsReadOnly = function getIsReadOnly() {
10329
10605
  // public warning related
10330
10606
  if (warningType === 'public') {
10331
- if (publicWarningFormAction === 'readonly') {
10607
+ if (formState === 'readonly') {
10332
10608
  return true;
10333
10609
  }
10334
- if ((publicWarning == null ? void 0 : publicWarning.status) === 'TODO') {
10610
+ if ((warning == null ? void 0 : warning.status) === 'TODO') {
10335
10611
  return false;
10336
10612
  }
10337
10613
  // Readonly in case you are not creating a new warning and you are not set as the editor
10338
- return !isEditor && (publicWarning == null ? void 0 : publicWarning.status) !== undefined;
10614
+ return !isEditor && (warning == null ? void 0 : warning.status) !== undefined;
10339
10615
  }
10340
10616
  // aviation related
10341
10617
  if ((selectedAviationProduct == null ? void 0 : selectedAviationProduct.status) === 'DRAFT') {
10342
10618
  return false;
10343
10619
  }
10344
- if (publicWarningFormAction === 'edit') {
10620
+ if (formState === 'edit') {
10345
10621
  return false;
10346
10622
  }
10347
10623
  if (mode === 'new') {
@@ -10350,28 +10626,33 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
10350
10626
  return true;
10351
10627
  };
10352
10628
  var isReadOnly = getIsReadOnly();
10353
- var formMode = publicWarningFormAction === 'edit' ? 'edit' : mode;
10629
+ var formMode = formState === 'edit' ? 'edit' : mode;
10354
10630
  var onAddObject = function onAddObject() {
10355
10631
  dispatch(uiActions.setToggleOpenDialog({
10356
10632
  type: uiTypes.DialogTypes.AreaObjectLoader,
10357
10633
  setOpen: true
10358
10634
  }));
10359
10635
  };
10636
+ var onSetViewModeResetArea = function onSetViewModeResetArea(area) {
10637
+ dispatch(publicWarningFormActions.addArea({
10638
+ area: area[0]
10639
+ }));
10640
+ };
10360
10641
  return jsx(PublicWarningsForm, {
10361
- object: publicWarningObject,
10362
- publicWarningDetails: publicWarning == null ? void 0 : publicWarning.warningDetail,
10642
+ object: object,
10643
+ publicWarningDetails: warning == null ? void 0 : warning.warningDetail,
10363
10644
  onPublishForm: publishForm,
10364
10645
  onSaveForm: saveForm,
10365
10646
  onClearForm: clearForm,
10366
- formAction: publicWarningFormAction,
10367
10647
  isReadOnly: isReadOnly,
10368
- error: publicWarningFormError,
10648
+ error: error,
10369
10649
  onFormDirty: onFormDirty,
10370
10650
  defaultMapPreset: defaultMapPreset,
10371
10651
  onAddObject: onAddObject,
10372
10652
  selectedAviationProduct: selectedAviationProduct,
10373
10653
  warningType: warningType,
10374
- mode: formMode
10654
+ mode: formMode,
10655
+ onSetViewModeResetArea: onSetViewModeResetArea
10375
10656
  });
10376
10657
  };
10377
10658
 
@@ -11296,103 +11577,6 @@ var duplicateAviationProduct = function duplicateAviationProduct(aviationWarning
11296
11577
  });
11297
11578
  };
11298
11579
 
11299
- /* *
11300
- * Licensed under the Apache License, Version 2.0 (the "License");
11301
- * you may not use this file except in compliance with the License.
11302
- * You may obtain a copy of the License at
11303
- *
11304
- * http://www.apache.org/licenses/LICENSE-2.0
11305
- *
11306
- * Unless required by applicable law or agreed to in writing, software
11307
- * distributed under the License is distributed on an "AS IS" BASIS,
11308
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11309
- * See the License for the specific language governing permissions and
11310
- * limitations under the License.
11311
- *
11312
- * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
11313
- * Copyright 2024 - Finnish Meteorological Institute (FMI)
11314
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
11315
- * */
11316
- var config = getConfig();
11317
- var publicWarningBaseUrl = config.GW_DRAWINGS_BASE_URL || '';
11318
- // API
11319
- var getPublicWarningList = function getPublicWarningList(auth) {
11320
- return fetch(publicWarningBaseUrl + "/warnings", {
11321
- headers: getHeaders(auth)
11322
- }).then(handleResponse).then(function (warnings) {
11323
- return warnings.map(function (warning) {
11324
- return Object.assign({}, warning, {
11325
- type: 'public'
11326
- });
11327
- });
11328
- });
11329
- };
11330
- var updatePublicWarningEditor = function updatePublicWarningEditor(warningId, isEditor, auth) {
11331
- return fetch(publicWarningBaseUrl + "/warnings/" + warningId + "?editor=" + (isEditor ? 'true' : 'false') + "&force=true", {
11332
- headers: getHeaders(auth),
11333
- method: 'POST'
11334
- }).then(handleResponse);
11335
- };
11336
-
11337
- /**
11338
- * @param disabled - Disables fetching, but still returns cached values.
11339
- * https://tanstack.com/query/v4/docs/framework/react/guides/disabling-queries
11340
- */
11341
- var usePublicWarnings = function usePublicWarnings(disabled) {
11342
- if (disabled === void 0) {
11343
- disabled = false;
11344
- }
11345
- return useAuthQuery(['public-warning-list'], getPublicWarningList, disabled, 1000 * 60 * 5);
11346
- };
11347
- var useMutatePublicWarningEditor = function useMutatePublicWarningEditor() {
11348
- var queryClient = useQueryClient();
11349
- var _useAuthenticationCon = useAuthenticationContext(),
11350
- auth = _useAuthenticationCon.auth;
11351
- var dispatch = useDispatch();
11352
- return useMutation(Object.assign({
11353
- mutationFn: function mutationFn(_ref) {
11354
- var id = _ref.id,
11355
- isEditor = _ref.isEditor;
11356
- if (!auth) {
11357
- throw new Error('Authentication context not found');
11358
- }
11359
- return updatePublicWarningEditor(id, isEditor, auth);
11360
- }
11361
- }, optimisticUpdate(['public-warning-list'], queryClient, function (w, _ref2) {
11362
- var isEditor = _ref2.isEditor;
11363
- return Object.assign({}, w, {
11364
- editor: isEditor ? auth.username : undefined
11365
- });
11366
- }, function (error) {
11367
- dispatch(publicWarningFormActions.setFormError({
11368
- message: error.message
11369
- }));
11370
- }), {
11371
- onSettled: function () {
11372
- var _onSettled = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data, e, _ref3) {
11373
- var isEditor;
11374
- return _regeneratorRuntime().wrap(function _callee$(_context) {
11375
- while (1) switch (_context.prev = _context.next) {
11376
- case 0:
11377
- isEditor = _ref3.isEditor;
11378
- dispatch(snackbarActions.openSnackbar({
11379
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
11380
- key: isEditor ? 'warning-editor-add-editor' : 'warning-editor-remove-editor'
11381
- }));
11382
- case 2:
11383
- case "end":
11384
- return _context.stop();
11385
- }
11386
- }, _callee);
11387
- }));
11388
- function onSettled(_x, _x2, _x3) {
11389
- return _onSettled.apply(this, arguments);
11390
- }
11391
- return onSettled;
11392
- }()
11393
- }));
11394
- };
11395
-
11396
11580
  /* *
11397
11581
  * Licensed under the Apache License, Version 2.0 (the "License");
11398
11582
  * you may not use this file except in compliance with the License.
@@ -11602,12 +11786,16 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
11602
11786
  dispatch(publicWarningFormActions.setFormValues({
11603
11787
  formState: isReadOnly ? 'readonly' : ''
11604
11788
  }));
11789
+ dispatch(uiActions.setToggleOpenDialog({
11790
+ type: uiTypes.DialogTypes.AreaObjectLoader,
11791
+ setOpen: false
11792
+ }));
11605
11793
  updatePublicWarningEditor.mutate({
11606
11794
  id: selectedWarningId,
11607
11795
  isEditor: !isReadOnly
11608
11796
  });
11609
11797
  return _context2.abrupt("return", true);
11610
- case 14:
11798
+ case 15:
11611
11799
  case "end":
11612
11800
  return _context2.stop();
11613
11801
  }
@@ -11729,10 +11917,7 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
11729
11917
  defaultMapPreset: defaultMapPreset,
11730
11918
  selectedAviationProduct: selectedAviationProduct,
11731
11919
  warningType: updatedWarningType,
11732
- mode: mode,
11733
- onFormSubmit: function onFormSubmit() {
11734
- return refetchWarnings();
11735
- }
11920
+ mode: mode
11736
11921
  })
11737
11922
  }), jsx(AreaObjectLoaderConnect, {})]
11738
11923
  });
@@ -13174,7 +13359,9 @@ var slice = createSlice({
13174
13359
  filterState = _action$payload.filterState,
13175
13360
  panelId = _action$payload.panelId;
13176
13361
  if (panelId) {
13177
- draft.filterState[panelId] = filterState;
13362
+ var _current;
13363
+ var currentFilterState = ((_current = current(draft)) == null ? void 0 : _current.filterState[panelId]) || initialFilters;
13364
+ draft.filterState[panelId] = Object.assign({}, currentFilterState, filterState);
13178
13365
  }
13179
13366
  }
13180
13367
  }
@@ -13254,6 +13441,23 @@ var selectors = /*#__PURE__*/Object.freeze({
13254
13441
  selectAllPublicWarnings: selectAllPublicWarnings
13255
13442
  });
13256
13443
 
13444
+ /* *
13445
+ * Licensed under the Apache License, Version 2.0 (the "License");
13446
+ * you may not use this file except in compliance with the License.
13447
+ * You may obtain a copy of the License at
13448
+ *
13449
+ * http://www.apache.org/licenses/LICENSE-2.0
13450
+ *
13451
+ * Unless required by applicable law or agreed to in writing, software
13452
+ * distributed under the License is distributed on an "AS IS" BASIS,
13453
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13454
+ * See the License for the specific language governing permissions and
13455
+ * limitations under the License.
13456
+ *
13457
+ * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
13458
+ * Copyright 2024 - Finnish Meteorological Institute (FMI)
13459
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
13460
+ * */
13257
13461
  var getLevelsForDomainFilter = function getLevelsForDomainFilter(domainFilter) {
13258
13462
  return Object.keys(domainFilter).flatMap(function (domain) {
13259
13463
  return domainFilter[domain] ? domainLevels[domain] : [];
@@ -13264,31 +13468,36 @@ var getPhenomenaForDomainFilter = function getPhenomenaForDomainFilter(domainFil
13264
13468
  return domainFilter[domain] ? domainPhenomena[domain] : [];
13265
13469
  });
13266
13470
  };
13267
- var getFilterOptions = function getFilterOptions(defaultFilter, allOptions, savedFilter) {
13268
- var pickedFilterOptions = pick(defaultFilter, [emptyFilterId].concat(allOptions));
13269
- // keep options state from savedFilter if it still exists
13270
- var updatedOptions = assign(pickedFilterOptions, pick(savedFilter || {}, Object.keys(pickedFilterOptions)));
13271
- var _getSelectedOptions = getSelectedOptions(updatedOptions),
13471
+ /** Get filter object
13472
+ * @param savedFilter The savedFilter with all options
13473
+ * @param visibleOptions The options that should be shown
13474
+ * @returns pickedFilterObject - The filter object with only the relevant options
13475
+ * @returns allSelected - A value for whether or not every visible option is selected
13476
+ */
13477
+ var getFilterOptions = function getFilterOptions(savedFilter, visibleOptions) {
13478
+ var pickedFilterObject = pick(savedFilter, [emptyFilterId].concat(visibleOptions));
13479
+ var _getSelectedOptions = getSelectedOptions(pickedFilterObject),
13272
13480
  allSelected = _getSelectedOptions.allSelected;
13273
- return [updatedOptions, allSelected];
13481
+ return [pickedFilterObject, allSelected];
13274
13482
  };
13275
13483
  var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, savedFilterState, presetFilterState) {
13276
- var pickedDomainFilter = savedFilterState.domain,
13277
- pickedPhenomenonFilter = savedFilterState.phenomenon,
13278
- pickedLevelFilter = savedFilterState.level,
13279
- pickedSourceFilter = savedFilterState.source,
13280
- pickedIncidentFilter = savedFilterState.incident;
13281
- /// level
13484
+ var savedDomainFilter = savedFilterState.domain,
13485
+ savedPhenomenonFilter = savedFilterState.phenomenon,
13486
+ savedLevelFilter = savedFilterState.level,
13487
+ savedSourceFilter = savedFilterState.source,
13488
+ savedIncidentFilter = savedFilterState.incident;
13489
+ /** Levels for selected domain(s) */
13282
13490
  var relevantLevels = useMemo(function () {
13283
- return getLevelsForDomainFilter(pickedDomainFilter);
13284
- }, [pickedDomainFilter]);
13285
- var _getFilterOptions = getFilterOptions(defaultLevelFilter, relevantLevels, pickedLevelFilter),
13286
- updatedPickedLevels = _getFilterOptions[0],
13491
+ return getLevelsForDomainFilter(savedDomainFilter);
13492
+ }, [savedDomainFilter]);
13493
+ var _getFilterOptions = getFilterOptions(savedLevelFilter, relevantLevels),
13494
+ pickedLevelFilter = _getFilterOptions[0],
13287
13495
  allLevelsSelected = _getFilterOptions[1];
13288
- // phenomenon
13496
+ /** Phenomena for selected domain(s) */
13289
13497
  var domainPhenomena = useMemo(function () {
13290
- return getPhenomenaForDomainFilter(pickedDomainFilter);
13291
- }, [pickedDomainFilter]);
13498
+ return getPhenomenaForDomainFilter(savedDomainFilter);
13499
+ }, [savedDomainFilter]);
13500
+ /** Phenomena in the warnings */
13292
13501
  var warningsPhenomena = useMemo(function () {
13293
13502
  return getFiltersFromWarnings(warnings, 'phenomenon');
13294
13503
  }, [warnings]);
@@ -13297,9 +13506,8 @@ var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, sa
13297
13506
  return warningsPhenomena.includes(phenomenon);
13298
13507
  });
13299
13508
  }, [warningsPhenomena, domainPhenomena]);
13300
- relevantPhenomena.push(emptyFilterId);
13301
- var _getFilterOptions2 = getFilterOptions(defaultPhenomenonFilter, relevantPhenomena, pickedPhenomenonFilter),
13302
- updatedPickedPhenomena = _getFilterOptions2[0],
13509
+ var _getFilterOptions2 = getFilterOptions(savedPhenomenonFilter, relevantPhenomena),
13510
+ pickedPhenomenaFilter = _getFilterOptions2[0],
13303
13511
  allPhenomenaSelected = _getFilterOptions2[1];
13304
13512
  // source
13305
13513
  var relevantSources = useMemo(function () {
@@ -13307,46 +13515,54 @@ var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, sa
13307
13515
  }, [warnings]);
13308
13516
  var defaultSourceFilter = useMemo(function () {
13309
13517
  return Object.fromEntries(relevantSources.map(function (key) {
13310
- return [key, true];
13518
+ var presetValue = presetFilterState == null ? void 0 : presetFilterState.source[key];
13519
+ return [key, presetValue === undefined ? true : presetValue];
13311
13520
  }));
13312
- }, [relevantSources]);
13313
- var _getFilterOptions3 = getFilterOptions(defaultSourceFilter, relevantSources, pickedSourceFilter),
13314
- updatedPickedSources = _getFilterOptions3[0],
13315
- allSourcesSelected = _getFilterOptions3[1];
13316
- // incident
13521
+ },
13522
+ // eslint-disable-next-line react-hooks/exhaustive-deps
13523
+ [relevantSources]);
13524
+ var _getSelectedOptions2 = getSelectedOptions(savedSourceFilter),
13525
+ allSourcesSelected = _getSelectedOptions2.allSelected;
13526
+ /** Incidents in the warnings */
13317
13527
  var relevantIncidents = useMemo(function () {
13318
13528
  return getFiltersFromWarnings(warnings, 'incident');
13319
13529
  }, [warnings]);
13530
+ /** FilterObject based on relevant incidents with values from the preset */
13320
13531
  var defaultIncidentFilter = useMemo(function () {
13321
13532
  return Object.fromEntries(relevantIncidents.map(function (key) {
13322
- return [key, true];
13533
+ var presetValue = presetFilterState == null ? void 0 : presetFilterState.incident[key];
13534
+ return [key, presetValue === undefined ? true : presetValue];
13323
13535
  }));
13324
- }, [relevantIncidents]);
13325
- var _getFilterOptions4 = getFilterOptions(defaultIncidentFilter, relevantIncidents, pickedIncidentFilter),
13326
- updatedPickedIncidents = _getFilterOptions4[0],
13327
- allIncidentsSelected = _getFilterOptions4[1];
13536
+ }, [relevantIncidents, presetFilterState == null ? void 0 : presetFilterState.incident]);
13537
+ var _getSelectedOptions3 = getSelectedOptions(savedIncidentFilter),
13538
+ allIncidentsSelected = _getSelectedOptions3.allSelected;
13539
+ var populatedIncidentAndSourceFilter = useMemo(function () {
13540
+ return {
13541
+ incident: defaultIncidentFilter,
13542
+ source: defaultSourceFilter
13543
+ };
13544
+ }, [defaultIncidentFilter, defaultSourceFilter]);
13545
+ var initialFiltersWithPresets = useMemo(function () {
13546
+ return {
13547
+ incident: defaultIncidentFilter || defaultEmptyFilter,
13548
+ source: defaultSourceFilter || defaultEmptyFilter,
13549
+ domain: Object.assign({}, initialFilters.domain, presetFilterState == null ? void 0 : presetFilterState.domain),
13550
+ phenomenon: Object.assign({}, initialFilters.phenomenon, presetFilterState == null ? void 0 : presetFilterState.phenomenon),
13551
+ level: Object.assign({}, initialFilters.level, presetFilterState == null ? void 0 : presetFilterState.level)
13552
+ };
13553
+ },
13554
+ // eslint-disable-next-line react-hooks/exhaustive-deps
13555
+ [presetFilterState]);
13556
+ useEffect(function () {
13557
+ onUpdateFilters(populatedIncidentAndSourceFilter, true);
13558
+ }, [populatedIncidentAndSourceFilter, onUpdateFilters]);
13328
13559
  useEffect(function () {
13329
13560
  // when the preset changes, update the filters
13330
- if (presetFilterState) {
13331
- var initialFiltersWithPresets = {
13332
- incident: Object.assign({}, makeFilterFromList(relevantIncidents), presetFilterState.incident),
13333
- source: Object.assign({}, makeFilterFromList(relevantSources), presetFilterState.source),
13334
- domain: Object.assign({}, initialFilters.domain, presetFilterState.domain),
13335
- phenomenon: Object.assign({}, initialFilters.phenomenon, presetFilterState.phenomenon),
13336
- level: Object.assign({}, initialFilters.level, presetFilterState.level)
13337
- };
13338
- onUpdateFilters(initialFiltersWithPresets, 'system');
13339
- } else {
13340
- // for a preset without filters saved use the initial filters
13341
- onUpdateFilters(Object.assign({}, initialFilters, {
13342
- incident: makeFilterFromList(relevantIncidents),
13343
- source: makeFilterFromList(relevantSources)
13344
- }), 'system');
13345
- }
13561
+ onUpdateFilters(initialFiltersWithPresets, true);
13346
13562
  // eslint-disable-next-line react-hooks/exhaustive-deps
13347
- }, [presetFilterState, onUpdateFilters]);
13348
- var _getSelectedOptions2 = getSelectedOptions(pickedDomainFilter),
13349
- allDomainSelected = _getSelectedOptions2.allSelected;
13563
+ }, [initialFiltersWithPresets, onUpdateFilters]);
13564
+ var _getSelectedOptions4 = getSelectedOptions(savedDomainFilter),
13565
+ allDomainSelected = _getSelectedOptions4.allSelected;
13350
13566
  var allSelected = allDomainSelected && allLevelsSelected && allPhenomenaSelected && allIncidentsSelected && allSourcesSelected;
13351
13567
  /**
13352
13568
  * @param filterKey - Name of the filter | "ALL" filters
@@ -13358,44 +13574,40 @@ var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, sa
13358
13574
  var levelFilter = value ? defaultLevelFilter : defaultEmptyFilter;
13359
13575
  if (filterKey === 'ALL') {
13360
13576
  onUpdateFilters({
13361
- domain: updateState(pickedDomainFilter, 'ALL', value),
13577
+ domain: updateState(savedDomainFilter, 'ALL', value),
13362
13578
  level: updateState(levelFilter, 'ALL', value),
13363
- phenomenon: updateState(pickedPhenomenonFilter, 'ALL', value),
13364
- incident: updateState(pickedIncidentFilter, 'ALL', value),
13365
- source: updateState(pickedSourceFilter, 'ALL', value)
13366
- }, 'user');
13579
+ phenomenon: updateState(savedPhenomenonFilter, 'ALL', value),
13580
+ incident: updateState(savedIncidentFilter, 'ALL', value),
13581
+ source: updateState(savedSourceFilter, 'ALL', value)
13582
+ });
13367
13583
  } else if (filterKey === 'domain') {
13368
- var newDomain = updateState(pickedDomainFilter, optionKey, value, only);
13369
- var _relevantLevels = getLevelsForDomainFilter(newDomain);
13370
- var _getFilterOptions5 = getFilterOptions(defaultLevelFilter, _relevantLevels, pickedLevelFilter),
13371
- newLevel = _getFilterOptions5[0];
13372
- onUpdateFilters(Object.assign({}, savedFilterState, {
13373
- domain: newDomain,
13374
- level: newLevel // levels depend on selected domains
13375
- }), 'user');
13584
+ var newDomain = updateState(savedDomainFilter, optionKey, value, only);
13585
+ onUpdateFilters({
13586
+ domain: newDomain
13587
+ });
13376
13588
  } else if (filterKey === 'level') {
13377
- onUpdateFilters(Object.assign({}, savedFilterState, {
13378
- level: updateState(pickedLevelFilter, optionKey, value, only)
13379
- }), 'user');
13589
+ onUpdateFilters({
13590
+ level: updateState(savedLevelFilter, optionKey, value, only)
13591
+ });
13380
13592
  } else if (filterKey === 'phenomenon') {
13381
- onUpdateFilters(Object.assign({}, savedFilterState, {
13382
- phenomenon: updateState(pickedPhenomenonFilter, optionKey, value, only)
13383
- }), 'user');
13593
+ onUpdateFilters({
13594
+ phenomenon: updateState(savedPhenomenonFilter, optionKey, value, only)
13595
+ });
13384
13596
  } else if (filterKey === 'source') {
13385
- onUpdateFilters(Object.assign({}, savedFilterState, {
13386
- source: updateState(pickedSourceFilter, optionKey, value, only)
13387
- }), 'user');
13597
+ onUpdateFilters({
13598
+ source: updateState(savedSourceFilter, optionKey, value, only)
13599
+ });
13388
13600
  } else if (filterKey === 'incident') {
13389
- onUpdateFilters(Object.assign({}, savedFilterState, {
13390
- incident: updateState(pickedIncidentFilter, optionKey, value, only)
13391
- }), 'user');
13601
+ onUpdateFilters({
13602
+ incident: updateState(savedIncidentFilter, optionKey, value, only)
13603
+ });
13392
13604
  }
13393
13605
  };
13394
13606
  var byFilterState = useCallback(function (warning) {
13395
- var levelDomain = ['SIG', 'AIR'].find(function (d) {
13396
- return d === warning.warningDetail.level;
13607
+ var levelDomain = ['SIG', 'AIR'].find(function (dom) {
13608
+ return dom === warning.warningDetail.level;
13397
13609
  }) ? Domain.aviation : Domain["public"];
13398
- if (!pickedDomainFilter[levelDomain]) {
13610
+ if (!savedDomainFilter[levelDomain]) {
13399
13611
  return false;
13400
13612
  }
13401
13613
  var level = getValue(Level, warning.warningDetail.level);
@@ -13403,33 +13615,33 @@ var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, sa
13403
13615
  return false;
13404
13616
  }
13405
13617
  var phenomenon = getValue(AllPhenomenaKeys, warning.warningDetail.phenomenon);
13406
- if (!pickedPhenomenonFilter[phenomenon]) {
13618
+ if (!pickedPhenomenaFilter[phenomenon]) {
13407
13619
  return false;
13408
13620
  }
13409
13621
  var source = relevantSources.find(function (source) {
13410
13622
  return source === warning.warningDetail.warningProposalSource;
13411
13623
  }) || emptyFilterId;
13412
- if (!updatedPickedSources[source]) {
13624
+ if (!savedSourceFilter[source]) {
13413
13625
  return false;
13414
13626
  }
13415
13627
  var incident = relevantIncidents.find(function (incident) {
13416
13628
  return incident === warning.warningDetail.incident;
13417
13629
  }) || emptyFilterId;
13418
- if (!updatedPickedIncidents[incident]) {
13630
+ if (!savedIncidentFilter[incident]) {
13419
13631
  return false;
13420
13632
  }
13421
13633
  return true;
13422
- }, [pickedDomainFilter, pickedLevelFilter, pickedPhenomenonFilter, relevantSources, updatedPickedSources, relevantIncidents, updatedPickedIncidents]);
13634
+ }, [savedDomainFilter, pickedLevelFilter, pickedPhenomenaFilter, relevantSources, savedSourceFilter, relevantIncidents, savedIncidentFilter]);
13423
13635
  return {
13424
13636
  allSelected: allSelected,
13425
13637
  updateFilter: updateFilter,
13426
13638
  byFilterState: byFilterState,
13427
13639
  filterState: {
13428
- domain: pickedDomainFilter,
13429
- level: updatedPickedLevels,
13430
- phenomenon: updatedPickedPhenomena,
13431
- incident: updatedPickedIncidents,
13432
- source: updatedPickedSources
13640
+ domain: savedDomainFilter,
13641
+ level: pickedLevelFilter,
13642
+ phenomenon: pickedPhenomenaFilter,
13643
+ incident: savedIncidentFilter,
13644
+ source: savedSourceFilter
13433
13645
  }
13434
13646
  };
13435
13647
  };
@@ -13747,11 +13959,14 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
13747
13959
  openSnackbar(snackbarMessage);
13748
13960
  refetchWarnings();
13749
13961
  };
13750
- var onUpdateFilters = React__default.useCallback(function (filterState, origin) {
13962
+ var onUpdateFilters = React__default.useCallback(function (filterState, systemUpdate) {
13963
+ if (systemUpdate === void 0) {
13964
+ systemUpdate = false;
13965
+ }
13751
13966
  dispatch(publicWarningActions.setWarningFilters({
13752
13967
  filterState: filterState,
13753
13968
  panelId: panelId,
13754
- origin: origin
13969
+ systemUpdate: systemUpdate
13755
13970
  }));
13756
13971
  }, [dispatch, panelId]);
13757
13972
  var filterHookState = useWarningFilters(combinedWarnings, onUpdateFilters, savedFilterState, presetFilterState);
@@ -13879,52 +14094,28 @@ var componentsLookUp = function componentsLookUp(payload, apiProps) {
13879
14094
  }
13880
14095
  };
13881
14096
 
13882
- var getErrorMessage = function getErrorMessage(error) {
13883
- return isAxiosError(error) ? getAxiosErrorMessage(error) : error.message;
13884
- };
13885
14097
  var publicWarningFormListener = createListenerMiddleware();
13886
14098
  publicWarningFormListener.startListening({
13887
- actionCreator: publicWarningFormActions.publishWarning,
14099
+ actionCreator: publicWarningFormActions.openPublicWarningFormDialog,
13888
14100
  effect: function () {
13889
14101
  var _effect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref, listenerApi) {
13890
- var payload, publicWarning, refetchWarnings, publishedWarning, isDialogOpen;
14102
+ var payload, panelId;
13891
14103
  return _regeneratorRuntime().wrap(function _callee$(_context) {
13892
14104
  while (1) switch (_context.prev = _context.next) {
13893
14105
  case 0:
13894
14106
  payload = _ref.payload;
13895
14107
  listenerApi.cancelActiveListeners();
13896
- _context.prev = 2;
13897
- publicWarning = payload.publicWarning, refetchWarnings = payload.refetchWarnings;
13898
- _context.next = 6;
13899
- return saveOrUpdateWarning(publicWarning);
13900
- case 6:
13901
- publishedWarning = _context.sent;
13902
- if (refetchWarnings) {
13903
- refetchWarnings();
13904
- }
13905
- listenerApi.dispatch(publicWarningFormActions.publishWarningSuccess({
13906
- publicWarning: publishedWarning,
13907
- message: {
13908
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
13909
- key: 'warning-publish-succes'
13910
- }
13911
- }));
14108
+ panelId = payload.panelId;
13912
14109
  listenerApi.dispatch(uiActions.setToggleOpenDialog({
14110
+ setOpen: true,
13913
14111
  type: publicWarningDialogType,
13914
- setOpen: false
14112
+ sourcePanelId: panelId
13915
14113
  }));
13916
- _context.next = 16;
13917
- break;
13918
- case 12:
13919
- _context.prev = 12;
13920
- _context.t0 = _context["catch"](2);
13921
- isDialogOpen = uiSelectors.getisDialogOpen(listenerApi.getState(), publicWarningDialogType);
13922
- errorEffect(listenerApi.dispatch, getErrorMessage(_context.t0), isDialogOpen);
13923
- case 16:
14114
+ case 4:
13924
14115
  case "end":
13925
14116
  return _context.stop();
13926
14117
  }
13927
- }, _callee, null, [[2, 12]]);
14118
+ }, _callee);
13928
14119
  }));
13929
14120
  function effect(_x, _x2) {
13930
14121
  return _effect.apply(this, arguments);
@@ -13933,201 +14124,14 @@ publicWarningFormListener.startListening({
13933
14124
  }()
13934
14125
  });
13935
14126
  publicWarningFormListener.startListening({
13936
- actionCreator: publicWarningFormActions.saveWarning,
14127
+ actionCreator: uiActions.setToggleOpenDialog,
13937
14128
  effect: function () {
13938
14129
  var _effect2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
13939
- var payload, publicWarning, refetchWarnings, savedWarning, isDialogOpen;
14130
+ var payload;
13940
14131
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
13941
14132
  while (1) switch (_context2.prev = _context2.next) {
13942
14133
  case 0:
13943
14134
  payload = _ref2.payload;
13944
- listenerApi.cancelActiveListeners();
13945
- _context2.prev = 2;
13946
- publicWarning = payload.publicWarning, refetchWarnings = payload.refetchWarnings;
13947
- _context2.next = 6;
13948
- return saveOrUpdateWarning(publicWarning);
13949
- case 6:
13950
- savedWarning = _context2.sent;
13951
- if (refetchWarnings) {
13952
- refetchWarnings();
13953
- }
13954
- listenerApi.dispatch(publicWarningFormActions.saveWarningSuccess({
13955
- publicWarning: savedWarning,
13956
- message: {
13957
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
13958
- key: 'warning-save-succes'
13959
- }
13960
- }));
13961
- _context2.next = 15;
13962
- break;
13963
- case 11:
13964
- _context2.prev = 11;
13965
- _context2.t0 = _context2["catch"](2);
13966
- isDialogOpen = uiSelectors.getisDialogOpen(listenerApi.getState(), publicWarningDialogType);
13967
- errorEffect(listenerApi.dispatch, getErrorMessage(_context2.t0), isDialogOpen);
13968
- case 15:
13969
- case "end":
13970
- return _context2.stop();
13971
- }
13972
- }, _callee2, null, [[2, 11]]);
13973
- }));
13974
- function effect(_x3, _x4) {
13975
- return _effect2.apply(this, arguments);
13976
- }
13977
- return effect;
13978
- }()
13979
- });
13980
- // Side effects/snackbar listeners
13981
- publicWarningFormListener.startListening({
13982
- matcher: isAnyOf(publicWarningFormActions.publishWarningSuccess, publicWarningFormActions.saveWarningSuccess),
13983
- effect: function () {
13984
- var _effect3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref3, listenerApi) {
13985
- var payload, message, isDialogOpen;
13986
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
13987
- while (1) switch (_context3.prev = _context3.next) {
13988
- case 0:
13989
- payload = _ref3.payload;
13990
- listenerApi.cancelActiveListeners();
13991
- message = payload.message;
13992
- listenerApi.dispatch(snackbarActions.openSnackbar(message));
13993
- isDialogOpen = uiSelectors.getisDialogOpen(listenerApi.getState(), publicWarningDialogType);
13994
- toggleDialogLoadingEffect(listenerApi.dispatch, isDialogOpen, false);
13995
- case 6:
13996
- case "end":
13997
- return _context3.stop();
13998
- }
13999
- }, _callee3);
14000
- }));
14001
- function effect(_x5, _x6) {
14002
- return _effect3.apply(this, arguments);
14003
- }
14004
- return effect;
14005
- }()
14006
- });
14007
- publicWarningFormListener.startListening({
14008
- matcher: isAnyOf(publicWarningFormActions.publishWarning, publicWarningFormActions.saveWarning),
14009
- effect: function () {
14010
- var _effect4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_, listenerApi) {
14011
- var isDialogOpen;
14012
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
14013
- while (1) switch (_context4.prev = _context4.next) {
14014
- case 0:
14015
- listenerApi.cancelActiveListeners();
14016
- isDialogOpen = uiSelectors.getisDialogOpen(listenerApi.getState(), publicWarningDialogType);
14017
- toggleDialogLoadingEffect(listenerApi.dispatch, isDialogOpen, true);
14018
- case 3:
14019
- case "end":
14020
- return _context4.stop();
14021
- }
14022
- }, _callee4);
14023
- }));
14024
- function effect(_x7, _x8) {
14025
- return _effect4.apply(this, arguments);
14026
- }
14027
- return effect;
14028
- }()
14029
- });
14030
- publicWarningFormListener.startListening({
14031
- actionCreator: publicWarningFormActions.openPublicWarningFormDialog,
14032
- effect: function () {
14033
- var _effect5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref4, listenerApi) {
14034
- var payload, panelId;
14035
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
14036
- while (1) switch (_context5.prev = _context5.next) {
14037
- case 0:
14038
- payload = _ref4.payload;
14039
- listenerApi.cancelActiveListeners();
14040
- panelId = payload.panelId;
14041
- listenerApi.dispatch(uiActions.setToggleOpenDialog({
14042
- setOpen: true,
14043
- type: publicWarningDialogType,
14044
- sourcePanelId: panelId
14045
- }));
14046
- case 4:
14047
- case "end":
14048
- return _context5.stop();
14049
- }
14050
- }, _callee5);
14051
- }));
14052
- function effect(_x9, _x10) {
14053
- return _effect5.apply(this, arguments);
14054
- }
14055
- return effect;
14056
- }()
14057
- });
14058
- var saveOrUpdateWarning = /*#__PURE__*/function () {
14059
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(publicWarning) {
14060
- var warningsApi, warningDetail, status, warning, newWarningId;
14061
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
14062
- while (1) switch (_context6.prev = _context6.next) {
14063
- case 0:
14064
- warningsApi = getWarningsApi();
14065
- warningDetail = publicWarning.warningDetail, status = publicWarning.status;
14066
- if (!warningDetail.id) {
14067
- _context6.next = 6;
14068
- break;
14069
- }
14070
- _context6.next = 5;
14071
- return warningsApi.updateWarning(warningDetail.id, publicWarning);
14072
- case 5:
14073
- return _context6.abrupt("return", publicWarning);
14074
- case 6:
14075
- if (!(status === 'PUBLISHED' && warningDetail.linked_to_id)) {
14076
- _context6.next = 11;
14077
- break;
14078
- }
14079
- warning = Object.assign({}, publicWarning, {
14080
- warningDetail: Object.assign({}, warningDetail, {
14081
- id: warningDetail.linked_to_id
14082
- })
14083
- });
14084
- _context6.next = 10;
14085
- return warningsApi.updateWarning(warningDetail.linked_to_id, warning);
14086
- case 10:
14087
- return _context6.abrupt("return", warning);
14088
- case 11:
14089
- _context6.next = 13;
14090
- return warningsApi.saveWarningAs(publicWarning);
14091
- case 13:
14092
- newWarningId = _context6.sent;
14093
- return _context6.abrupt("return", Object.assign({}, publicWarning, {
14094
- warningDetail: Object.assign({}, warningDetail, {
14095
- id: newWarningId
14096
- })
14097
- }));
14098
- case 15:
14099
- case "end":
14100
- return _context6.stop();
14101
- }
14102
- }, _callee6);
14103
- }));
14104
- return function saveOrUpdateWarning(_x11) {
14105
- return _ref5.apply(this, arguments);
14106
- };
14107
- }();
14108
- var toggleDialogLoadingEffect = function toggleDialogLoadingEffect(dispatch, isDialogOpen, isLoading) {
14109
- if (isDialogOpen) {
14110
- dispatch(uiActions.toggleIsLoadingDialog({
14111
- isLoading: isLoading,
14112
- type: publicWarningDialogType
14113
- }));
14114
- }
14115
- };
14116
- var errorEffect = function errorEffect(dispatch, message, isDialogOpen) {
14117
- dispatch(publicWarningFormActions.setFormError({
14118
- message: message
14119
- }));
14120
- toggleDialogLoadingEffect(dispatch, isDialogOpen, false);
14121
- };
14122
- publicWarningFormListener.startListening({
14123
- actionCreator: uiActions.setToggleOpenDialog,
14124
- effect: function () {
14125
- var _effect6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(_ref6, listenerApi) {
14126
- var payload;
14127
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
14128
- while (1) switch (_context7.prev = _context7.next) {
14129
- case 0:
14130
- payload = _ref6.payload;
14131
14135
  if (!payload.setOpen && payload.type === publicWarningDialogType) {
14132
14136
  listenerApi.dispatch(uiActions.setToggleOpenDialog({
14133
14137
  setOpen: false,
@@ -14136,12 +14140,12 @@ publicWarningFormListener.startListening({
14136
14140
  }
14137
14141
  case 2:
14138
14142
  case "end":
14139
- return _context7.stop();
14143
+ return _context2.stop();
14140
14144
  }
14141
- }, _callee7);
14145
+ }, _callee2);
14142
14146
  }));
14143
- function effect(_x12, _x13) {
14144
- return _effect6.apply(this, arguments);
14147
+ function effect(_x3, _x4) {
14148
+ return _effect2.apply(this, arguments);
14145
14149
  }
14146
14150
  return effect;
14147
14151
  }()
@@ -14215,7 +14219,7 @@ warningsDrawingsListener.startListening({
14215
14219
  isLoading: false,
14216
14220
  type: drawingDialogType
14217
14221
  }));
14218
- errorMessage = isAxiosError$1(taskError) ? getAxiosErrorMessage(taskError) : taskError.message;
14222
+ errorMessage = isAxiosError(taskError) ? getAxiosErrorMessage(taskError) : taskError.message;
14219
14223
  listenerApi.dispatch(uiActions.setErrorDialog({
14220
14224
  type: drawingDialogType,
14221
14225
  error: errorMessage