diff --git a/app/javascript/assets/icons/biodiversity.svg b/app/javascript/assets/icons/biodiversity.svg
index c3b615b030..71bfc21723 100755
--- a/app/javascript/assets/icons/biodiversity.svg
+++ b/app/javascript/assets/icons/biodiversity.svg
@@ -1,5 +1,5 @@
diff --git a/app/javascript/assets/icons/climate.svg b/app/javascript/assets/icons/climate.svg
index 45df571405..0b39a4978c 100755
--- a/app/javascript/assets/icons/climate.svg
+++ b/app/javascript/assets/icons/climate.svg
@@ -1,5 +1,5 @@
diff --git a/app/javascript/assets/icons/explore.svg b/app/javascript/assets/icons/explore.svg
index 1889644bc9..5d0f273ee7 100755
--- a/app/javascript/assets/icons/explore.svg
+++ b/app/javascript/assets/icons/explore.svg
@@ -1,5 +1,5 @@
diff --git a/app/javascript/assets/icons/forest-change.svg b/app/javascript/assets/icons/forest-change.svg
index 4be42b2bcc..ac32707c9a 100755
--- a/app/javascript/assets/icons/forest-change.svg
+++ b/app/javascript/assets/icons/forest-change.svg
@@ -1,5 +1,5 @@
diff --git a/app/javascript/assets/icons/land-cover.svg b/app/javascript/assets/icons/land-cover.svg
index 1635f4fedb..775595e7f4 100755
--- a/app/javascript/assets/icons/land-cover.svg
+++ b/app/javascript/assets/icons/land-cover.svg
@@ -1,5 +1,5 @@
diff --git a/app/javascript/assets/icons/land-use.svg b/app/javascript/assets/icons/land-use.svg
index 15d1fed12f..5db6950bde 100755
--- a/app/javascript/assets/icons/land-use.svg
+++ b/app/javascript/assets/icons/land-use.svg
@@ -1,5 +1,5 @@
diff --git a/app/javascript/components/maps/components/menu/menu-component.jsx b/app/javascript/components/maps/components/menu/menu-component.jsx
index d4b1b66b51..f6df270c28 100644
--- a/app/javascript/components/maps/components/menu/menu-component.jsx
+++ b/app/javascript/components/maps/components/menu/menu-component.jsx
@@ -140,7 +140,9 @@ class MapMenu extends PureComponent {
setMenuSettings={setMenuSettings}
onToggleLayer={this.onToggleLayer}
{...props}
- {...rest}
+ {...menuSection === 'datasets' && {
+ ...rest
+ }}
/>
)}
diff --git a/app/javascript/components/maps/main-map/components/recent-imagery/recent-imagery.js b/app/javascript/components/maps/main-map/components/recent-imagery/recent-imagery.js
index 531092ffe7..9bf1ef6c7b 100644
--- a/app/javascript/components/maps/main-map/components/recent-imagery/recent-imagery.js
+++ b/app/javascript/components/maps/main-map/components/recent-imagery/recent-imagery.js
@@ -89,7 +89,7 @@ class RecentImageryContainer extends PureComponent {
});
}
// get the rest of the tiles
- if (!dataStatus.haveAllData && !loadingMoreTiles && active) {
+ if (dataStatus && !dataStatus.haveAllData && !loadingMoreTiles && active) {
getMoreTiles({
sources,
dataStatus,
diff --git a/app/javascript/components/modals/meta/meta-actions.js b/app/javascript/components/modals/meta/meta-actions.js
index 374fc26632..cf7b545b61 100644
--- a/app/javascript/components/modals/meta/meta-actions.js
+++ b/app/javascript/components/modals/meta/meta-actions.js
@@ -9,9 +9,10 @@ export const setModalMeta = createThunkAction(
'setModalMeta',
(metaKey, metaWhitelist, tableWhitelist, customCitation) => (
dispatch,
- state
+ getState
) => {
- if (!state().modalMeta.loading) {
+ const { modalMeta } = getState();
+ if (modalMeta && !modalMeta.loading) {
dispatch(
setModalMetaLoading({ loading: true, error: false, open: true })
);
diff --git a/app/javascript/components/modals/modal/modal-component.jsx b/app/javascript/components/modals/modal/modal-component.jsx
index 144e9669e4..993dc26f9a 100644
--- a/app/javascript/components/modals/modal/modal-component.jsx
+++ b/app/javascript/components/modals/modal/modal-component.jsx
@@ -46,7 +46,7 @@ class CustomModal extends PureComponent {
}
CustomModal.propTypes = {
- isOpen: PropTypes.bool.isRequired,
+ isOpen: PropTypes.bool,
onRequestClose: PropTypes.func.isRequired,
contentLabel: PropTypes.string,
customStyles: PropTypes.object,
diff --git a/app/javascript/providers/country-data-provider/actions.js b/app/javascript/providers/country-data-provider/actions.js
index 4c472ae0a7..6c6441a616 100644
--- a/app/javascript/providers/country-data-provider/actions.js
+++ b/app/javascript/providers/country-data-provider/actions.js
@@ -49,8 +49,9 @@ export const getCountries = createThunkAction(
export const getRegions = createThunkAction(
'getRegions',
- country => (dispatch, state) => {
- if (!state().countryData.isRegionsLoading) {
+ country => (dispatch, getState) => {
+ const { countryData } = getState();
+ if (countryData && !countryData.isRegionsLoading) {
dispatch(setRegionsLoading(true));
getRegionsProvider(country)
.then(response => {
@@ -74,8 +75,9 @@ export const getRegions = createThunkAction(
export const getSubRegions = createThunkAction(
'getSubRegions',
- ({ adm0, adm1 }) => (dispatch, state) => {
- if (!state().countryData.isSubRegionsLoading) {
+ ({ adm0, adm1 }) => (dispatch, getState) => {
+ const { countryData } = getState();
+ if (countryData && !countryData.isSubRegionsLoading) {
dispatch(setSubRegionsLoading(true));
getSubRegionsProvider(adm0, adm1)
.then(subRegions => {
@@ -100,8 +102,9 @@ export const getSubRegions = createThunkAction(
export const getCountryLinks = createThunkAction(
'getCountryLinks',
- () => (dispatch, state) => {
- if (!state().countryData.isCountryLinksLoading) {
+ () => (dispatch, getState) => {
+ const { countryData } = getState();
+ if (countryData && !countryData.isCountryLinksLoading) {
dispatch(setCountryLinksLoading(true));
getCountryLinksProvider()
.then(response => {
diff --git a/app/javascript/providers/geostore-provider/actions.js b/app/javascript/providers/geostore-provider/actions.js
index f2289a76e2..a5a800746c 100644
--- a/app/javascript/providers/geostore-provider/actions.js
+++ b/app/javascript/providers/geostore-provider/actions.js
@@ -7,8 +7,9 @@ export const setGeostore = createAction('setGeostore');
export const getGeostore = createThunkAction(
'getGeostore',
- ({ type, adm0, adm1, adm2, token }) => (dispatch, state) => {
- if (!state().geostore.loading) {
+ ({ type, adm0, adm1, adm2, token }) => (dispatch, getState) => {
+ const { geostore } = getState();
+ if (geostore && !geostore.loading) {
dispatch(setGeostoreLoading({ loading: true, error: false }));
getGeostoreProvider({ type, adm0, adm1, adm2, token })
.then(response => {
diff --git a/app/javascript/providers/ptw-provider/actions.js b/app/javascript/providers/ptw-provider/actions.js
index 8422fb2aa5..cab77c624d 100644
--- a/app/javascript/providers/ptw-provider/actions.js
+++ b/app/javascript/providers/ptw-provider/actions.js
@@ -7,24 +7,28 @@ import { getPTWProvider } from 'services/places-to-watch';
export const setPTWLoading = createAction('setPTWLoading');
export const setPTW = createAction('setPTW');
-export const getPTW = createThunkAction('getPTW', () => (dispatch, state) => {
- if (!state().ptw.loading) {
- dispatch(setPTWLoading(true));
- getPTWProvider()
- .then(response => {
- const { rows } = response.data;
- if (rows && !!rows.length) {
- const ptw = uniqBy(rows, 'cartodb_id').map(p => ({
- ...p,
- bbox: reverseLatLng(JSON.parse(p.bbox).coordinates[0])
- }));
- dispatch(setPTW(uniqBy(ptw, 'cartodb_id')));
- }
- dispatch(setPTWLoading(false));
- })
- .catch(error => {
- dispatch(setPTWLoading(false));
- console.info(error);
- });
+export const getPTW = createThunkAction(
+ 'getPTW',
+ () => (dispatch, getState) => {
+ const { ptw } = getState();
+ if (ptw && !ptw.loading) {
+ dispatch(setPTWLoading(true));
+ getPTWProvider()
+ .then(response => {
+ const { rows } = response.data;
+ if (rows && !!rows.length) {
+ const ptwResponse = uniqBy(rows, 'cartodb_id').map(p => ({
+ ...p,
+ bbox: reverseLatLng(JSON.parse(p.bbox).coordinates[0])
+ }));
+ dispatch(setPTW(uniqBy(ptwResponse, 'cartodb_id')));
+ }
+ dispatch(setPTWLoading(false));
+ })
+ .catch(error => {
+ dispatch(setPTWLoading(false));
+ console.info(error);
+ });
+ }
}
-});
+);
diff --git a/app/javascript/providers/whitelists-provider/whitelists-provider-actions.js b/app/javascript/providers/whitelists-provider/whitelists-provider-actions.js
index cd8c58a03a..1951f00887 100644
--- a/app/javascript/providers/whitelists-provider/whitelists-provider-actions.js
+++ b/app/javascript/providers/whitelists-provider/whitelists-provider-actions.js
@@ -17,8 +17,9 @@ export const setRegionWhitelist = createAction('setRegionWhitelist');
export const getCountryWhitelist = createThunkAction(
'getCountryWhitelist',
- adm0 => (dispatch, state) => {
- if (!state().whitelists.countriesLoading) {
+ adm0 => (dispatch, getState) => {
+ const { whitelists } = getState();
+ if (whitelists && !whitelists.countriesLoading) {
dispatch(setCountryWhitelistLoading(true));
getCountryWhitelistProvider(adm0)
.then(response => {
@@ -36,8 +37,9 @@ export const getCountryWhitelist = createThunkAction(
export const getRegionWhitelist = createThunkAction(
'getRegionWhitelist',
- ({ adm0, adm1, adm2 }) => (dispatch, state) => {
- if (!state().whitelists.regionsLoading) {
+ ({ adm0, adm1, adm2 }) => (dispatch, getState) => {
+ const { whitelists } = getState();
+ if (whitelists && !whitelists.regionsLoading) {
dispatch(setRegionWhitelistLoading(true));
getRegionWhitelistProvider(adm0, adm1, adm2)
.then(response => {