From 95b7d60be40ff90dc42643677b85bf26c66f4e66 Mon Sep 17 00:00:00 2001 From: Cmdr McDonald Date: Mon, 21 Nov 2016 11:33:34 +0000 Subject: [PATCH] Fix URL strings for query parameter method --- src/app/Coriolis.jsx | 4 +++- src/app/pages/ComparisonPage.jsx | 2 +- src/app/pages/OutfittingPage.jsx | 2 ++ src/app/shipyard/Serializer.js | 4 ++-- src/app/shipyard/Ship.js | 6 +++--- src/app/utils/CompanionApiUtils.js | 4 ++++ src/app/utils/UtilityFunctions.js | 15 +++++---------- 7 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/app/Coriolis.jsx b/src/app/Coriolis.jsx index 010bb600..2e180587 100644 --- a/src/app/Coriolis.jsx +++ b/src/app/Coriolis.jsx @@ -7,7 +7,8 @@ import Persist from './stores/Persist'; import Header from './components/Header'; import Tooltip from './components/Tooltip'; import ModalImport from './components/ModalImport'; -import * as Utils from './utils/UtilityFunctions'; +import * as CompanionApiUtils from './utils/CompanionApiUtils'; +import { outfitURL } from './utils/UrlGenerators' import AboutPage from './pages/AboutPage'; import NotFoundPage from './pages/NotFoundPage'; @@ -73,6 +74,7 @@ export default class Coriolis extends React.Component { Router('/outfit/:ship/?', (r) => this._setPage(OutfittingPage, r)); Router('/outfit/:ship/:code?', (r) => this._setPage(OutfittingPage, r)); Router('/compare/:name?', (r) => this._setPage(ComparisonPage, r)); + Router('/comparison?', (r) => this._setPage(ComparisonPage, r)); Router('/comparison/:code', (r) => this._setPage(ComparisonPage, r)); Router('/about', (r) => this._setPage(AboutPage, r)); Router('*', (r) => this._setPage(null, r)); diff --git a/src/app/pages/ComparisonPage.jsx b/src/app/pages/ComparisonPage.jsx index 5531525f..b258247e 100644 --- a/src/app/pages/ComparisonPage.jsx +++ b/src/app/pages/ComparisonPage.jsx @@ -345,7 +345,7 @@ export default class ComparisonPage extends Page { let code = fromComparison(name, builds, selectedFacets, predicate, desc); let loc = window.location; - return `${loc.protocol}//${loc.host}/comparison/${code}`; + return loc.protocol + '//' + loc.host + '/comparison?code=' + encodeURIComponent(code); } /** diff --git a/src/app/pages/OutfittingPage.jsx b/src/app/pages/OutfittingPage.jsx index e93a5eb9..6dd3ba3a 100644 --- a/src/app/pages/OutfittingPage.jsx +++ b/src/app/pages/OutfittingPage.jsx @@ -289,6 +289,8 @@ export default class OutfittingPage extends Page { sStr = ship.getStandardString() + '.' + ship.getModificationsString(), iStr = ship.getInternalString() + '.' + ship.getModificationsString(); + Router.replace(outfitURL(ship.id, code, buildName)); + return (
diff --git a/src/app/shipyard/Serializer.js b/src/app/shipyard/Serializer.js index aa7515c2..df2a1a7a 100644 --- a/src/app/shipyard/Serializer.js +++ b/src/app/shipyard/Serializer.js @@ -211,13 +211,13 @@ export function toDetailedExport(builds) { * @return {string} Zipped Base 64 encoded JSON */ export function fromComparison(name, builds, facets, predicate, desc) { - return Utils.toUrlSafe(LZString.compressToBase64(JSON.stringify({ + return LZString.compressToBase64(JSON.stringify({ n: name, b: builds.map((b) => { return { s: b.id, n: b.buildName, c: b.toString() }; }), f: facets, p: predicate, d: desc ? 1 : 0 - }))); + })); }; /** diff --git a/src/app/shipyard/Ship.js b/src/app/shipyard/Ship.js index f5f7d0ba..46f77500 100755 --- a/src/app/shipyard/Ship.js +++ b/src/app/shipyard/Ship.js @@ -1199,7 +1199,7 @@ export default class Ship { priorities.push(slot.priority); } - this.serialized.priorities = Utils.toUrlSafe(LZString.compressToBase64(priorities.join(''))); + this.serialized.priorities = LZString.compressToBase64(priorities.join('')); return this; } @@ -1220,7 +1220,7 @@ export default class Ship { enabled.push(slot.enabled ? 1 : 0); } - this.serialized.enabled = Utils.toUrlSafe(LZString.compressToBase64(enabled.join(''))); + this.serialized.enabled = LZString.compressToBase64(enabled.join('')); return this; } @@ -1387,7 +1387,7 @@ export default class Ship { buffer.writeInt8(-1, curpos++); } - this.serialized.modifications = Utils.toUrlSafe(zlib.gzipSync(buffer).toString('base64')); + this.serialized.modifications = zlib.gzipSync(buffer).toString('base64'); } else { this.serialized.modifications = null; } diff --git a/src/app/utils/CompanionApiUtils.js b/src/app/utils/CompanionApiUtils.js index 0a85c3f8..c6c3b71f 100644 --- a/src/app/utils/CompanionApiUtils.js +++ b/src/app/utils/CompanionApiUtils.js @@ -355,6 +355,10 @@ function _addModifications(module, modifiers) { } } + // Jitter is an absolute number, so we need to divide it by 100 + if (module.getModValue('jitter')) { + module.setModValue('jitter', module.getModValue('jitter') / 100); + } // FD uses interval between bursts internally, so we need to translate this to a real rate of fire if (module.getModValue('rof')) { diff --git a/src/app/utils/UtilityFunctions.js b/src/app/utils/UtilityFunctions.js index 812ed230..1137af26 100644 --- a/src/app/utils/UtilityFunctions.js +++ b/src/app/utils/UtilityFunctions.js @@ -60,16 +60,11 @@ export function shallowEqual(objA, objB) { } /** - * Turn a base-64 encoded string in to a URL-safe version - * @param {string} data the string - * @return {string} the converted string - */ -export function toUrlSafe(data) { - return data ? data.replace(/\//g, '-').replace(/\+/g, '_') : null; -} - -/** - * Turn a URL-safe base-64 encoded string in to a normal version + * Turn a URL-safe base-64 encoded string in to a normal version. + * Coriolis used to use a different encoding system, and some old + * data might be bookmarked or on local storage, so we keep this + * around and use it when decoding data from the old-style URLs to + * be safe. * @param {string} data the string * @return {string} the converted string */