From 6b45dc8b4ddd44ec1b192ff76330fa315401c0cd Mon Sep 17 00:00:00 2001 From: orangemug Date: Sun, 19 Jan 2020 20:05:11 +0000 Subject: [PATCH] Added style formatting into apistore --- src/components/modals/ExportModal.jsx | 16 +++++----------- src/libs/apistore.js | 9 ++++++++- src/libs/style.js | 13 +++++++++++++ 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/components/modals/ExportModal.jsx b/src/components/modals/ExportModal.jsx index 27ee069..51c8fd8 100644 --- a/src/components/modals/ExportModal.jsx +++ b/src/components/modals/ExportModal.jsx @@ -14,16 +14,6 @@ import style from '../../libs/style' -function stripAccessTokens(mapStyle) { - const changedMetadata = { ...mapStyle.metadata } - delete changedMetadata['maputnik:mapbox_access_token'] - delete changedMetadata['maputnik:openmaptiles_access_token'] - return { - ...mapStyle, - metadata: changedMetadata - } -} - class ExportModal extends React.Component { static propTypes = { mapStyle: PropTypes.object.isRequired, @@ -37,7 +27,11 @@ class ExportModal extends React.Component { } downloadStyle() { - const tokenStyle = format(stripAccessTokens(style.replaceAccessTokens(this.props.mapStyle))); + const tokenStyle = format( + style.stripAccessTokens( + style.replaceAccessTokens(this.props.mapStyle) + ) + ); const blob = new Blob([tokenStyle], {type: "application/json;charset=utf-8"}); let exportName; diff --git a/src/libs/apistore.js b/src/libs/apistore.js index d12f895..bf479c5 100644 --- a/src/libs/apistore.js +++ b/src/libs/apistore.js @@ -1,4 +1,5 @@ import style from './style.js' +import {format} from '@mapbox/mapbox-gl-style-spec' import ReconnectingWebSocket from 'reconnecting-websocket' export class ApiStyleStore { @@ -64,6 +65,12 @@ export class ApiStyleStore { // Save current style replacing previous version save(mapStyle) { + const styleJSON = format( + style.stripAccessTokens( + style.replaceAccessTokens(newStyle) + ) + ); + const id = mapStyle.id fetch(this.localUrl + '/styles/' + id, { method: "PUT", @@ -71,7 +78,7 @@ export class ApiStyleStore { headers: { "Content-Type": "application/json; charset=utf-8", }, - body: JSON.stringify(mapStyle) + body: styleJSON }) .catch(function(error) { if(error) console.error(error) diff --git a/src/libs/style.js b/src/libs/style.js index 5f2b494..83f4b1f 100644 --- a/src/libs/style.js +++ b/src/libs/style.js @@ -114,6 +114,18 @@ function replaceAccessTokens(mapStyle, opts={}) { return changedStyle } +function stripAccessTokens(mapStyle) { + const changedMetadata = { + ...mapStyle.metadata + }; + delete changedMetadata['maputnik:mapbox_access_token']; + delete changedMetadata['maputnik:openmaptiles_access_token']; + return { + ...mapStyle, + metadata: changedMetadata + }; +} + export default { ensureStyleValidity, emptyStyle, @@ -121,4 +133,5 @@ export default { generateId, getAccessToken, replaceAccessTokens, + stripAccessTokens, }