Switch to using a version number instead of hashing the content
Signed-off-by: Alex Lorenzi <alorenzi@spotify.com> Signed-off-by: Sydney Achinger <sydneynicoleachinger@spotify.com>
This commit is contained in:
committed by
Sydney Achinger
parent
94778dd4ee
commit
dd780ece4f
@@ -25,6 +25,7 @@ import React, {
|
||||
} from 'react';
|
||||
import useAsync, { AsyncState } from 'react-use/esm/useAsync';
|
||||
import useAsyncRetry from 'react-use/esm/useAsyncRetry';
|
||||
import useCounter from 'react-use/esm/useCounter';
|
||||
|
||||
import {
|
||||
CompoundEntityRef,
|
||||
@@ -64,7 +65,8 @@ export type TechDocsReaderPageValue = {
|
||||
entityMetadata: AsyncState<TechDocsEntityMetadata>;
|
||||
shadowRoot?: ShadowRoot;
|
||||
setShadowRoot: Dispatch<SetStateAction<ShadowRoot | undefined>>;
|
||||
setShadowRootVersionHash: Dispatch<SetStateAction<string | undefined>>;
|
||||
shadowRootVersion: number;
|
||||
incShadowRootVersion: () => void;
|
||||
title: string;
|
||||
setTitle: Dispatch<SetStateAction<string>>;
|
||||
subtitle: string;
|
||||
@@ -81,7 +83,8 @@ const defaultTechDocsReaderPageValue: TechDocsReaderPageValue = {
|
||||
setTitle: () => {},
|
||||
setSubtitle: () => {},
|
||||
setShadowRoot: () => {},
|
||||
setShadowRootVersionHash: () => {},
|
||||
shadowRootVersion: 0,
|
||||
incShadowRootVersion: () => {},
|
||||
metadata: { loading: true },
|
||||
entityMetadata: { loading: true },
|
||||
entityRef: { kind: '', name: '', namespace: '' },
|
||||
@@ -136,9 +139,7 @@ export const TechDocsReaderPageProvider = memo(
|
||||
const [shadowRoot, setShadowRoot] = useState<ShadowRoot | undefined>(
|
||||
defaultTechDocsReaderPageValue.shadowRoot,
|
||||
);
|
||||
const [, setShadowRootVersionHash] = useState<string | undefined>(
|
||||
undefined,
|
||||
);
|
||||
const [shadowRootVersion, { inc }] = useCounter(0);
|
||||
|
||||
useEffect(() => {
|
||||
if (shadowRoot && !metadata.value && !metadata.loading) {
|
||||
@@ -158,7 +159,8 @@ export const TechDocsReaderPageProvider = memo(
|
||||
entityMetadata,
|
||||
shadowRoot,
|
||||
setShadowRoot,
|
||||
setShadowRootVersionHash,
|
||||
shadowRootVersion,
|
||||
incShadowRootVersion: inc,
|
||||
title,
|
||||
setTitle,
|
||||
subtitle,
|
||||
|
||||
+3
-8
@@ -34,8 +34,6 @@ import { TechDocsStateIndicator } from '../TechDocsStateIndicator';
|
||||
import { useTechDocsReaderDom } from './dom';
|
||||
import { withTechDocsReaderProvider } from '../TechDocsReaderProvider';
|
||||
import { TechDocsReaderPageContentAddons } from './TechDocsReaderPageContentAddons';
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { createHash } from 'crypto';
|
||||
|
||||
const useStyles = makeStyles({
|
||||
search: {
|
||||
@@ -82,7 +80,7 @@ export const TechDocsReaderPageContent = withTechDocsReaderProvider(
|
||||
entityMetadata: { value: entityMetadata, loading: entityMetadataLoading },
|
||||
entityRef,
|
||||
setShadowRoot,
|
||||
setShadowRootVersionHash,
|
||||
incShadowRootVersion,
|
||||
} = useTechDocsReaderPage();
|
||||
const dom = useTechDocsReaderDom(entityRef);
|
||||
const path = window.location.pathname;
|
||||
@@ -104,16 +102,13 @@ export const TechDocsReaderPageContent = withTechDocsReaderProvider(
|
||||
|
||||
const handleAppend = useCallback(
|
||||
(newShadowRoot: ShadowRoot) => {
|
||||
const newShadowRootVersionHash = createHash('sha256')
|
||||
.update(newShadowRoot.innerHTML)
|
||||
.digest('hex');
|
||||
setShadowRoot(newShadowRoot);
|
||||
setShadowRootVersionHash(newShadowRootVersionHash);
|
||||
incShadowRootVersion();
|
||||
if (onReady instanceof Function) {
|
||||
onReady();
|
||||
}
|
||||
},
|
||||
[setShadowRoot, setShadowRootVersionHash, onReady],
|
||||
[setShadowRoot, incShadowRootVersion, onReady],
|
||||
);
|
||||
|
||||
// No entity metadata = 404. Don't render content at all.
|
||||
|
||||
Reference in New Issue
Block a user