Revert "Explore: Remove support for legacy, compact format URLs (#49350)" (#50873)

This reverts commit a9cc3225ba.

Co-authored-by: Elfo404 <me@giordanoricci.com>
This commit is contained in:
Kristina
2022-06-15 08:44:36 -05:00
committed by GitHub
co-authored by Elfo404
parent f1834163ec
commit dfa538ff92
4 changed files with 135 additions and 67 deletions
+29 -1
View File
@@ -165,6 +165,16 @@ export function buildQueryTransaction(
export const clearQueryKeys: (query: DataQuery) => DataQuery = ({ key, ...rest }) => rest;
const isSegment = (segment: { [key: string]: string }, ...props: string[]) =>
props.some((prop) => segment.hasOwnProperty(prop));
enum ParseUrlStateIndex {
RangeFrom = 0,
RangeTo = 1,
Datasource = 2,
SegmentsStart = 3,
}
export const safeParseJson = (text?: string): any | undefined => {
if (!text) {
return;
@@ -219,7 +229,25 @@ export function parseUrlState(initial: string | undefined): ExploreUrlState {
return errorResult;
}
return parsed;
if (!Array.isArray(parsed)) {
return parsed;
}
if (parsed.length <= ParseUrlStateIndex.SegmentsStart) {
console.error('Error parsing compact URL state for Explore.');
return errorResult;
}
const range = {
from: parsed[ParseUrlStateIndex.RangeFrom],
to: parsed[ParseUrlStateIndex.RangeTo],
};
const datasource = parsed[ParseUrlStateIndex.Datasource];
const parsedSegments = parsed.slice(ParseUrlStateIndex.SegmentsStart);
const queries = parsedSegments.filter((segment) => !isSegment(segment, 'ui', 'mode', '__panelsState'));
const panelsState = parsedSegments.find((segment) => isSegment(segment, '__panelsState'))?.__panelsState;
return { datasource, queries, range, panelsState };
}
export function generateKey(index = 0): string {