Skip to content

Commit

Permalink
feat(web-scraping): switch to the server-side web page content diff
Browse files Browse the repository at this point in the history
  • Loading branch information
azasypkin committed Dec 8, 2023
1 parent 22bea69 commit 6385033
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 37 deletions.
Original file line number Diff line number Diff line change
@@ -1,34 +1,26 @@
import { EuiCodeBlock, useEuiTextDiff } from '@elastic/eui';
import { EuiCodeBlock } from '@elastic/eui';

import type { WebPageContentRevision } from './web_page_data_revision';

export interface WebPageContentTrackerRevisionProps {
revision: WebPageContentRevision;
previousRevision?: WebPageContentRevision;
showDiff?: boolean;
}

function getTextToRender(text: string): [string, string | undefined] {
const parsedData = JSON.parse(text) as string | object;
if (parsedData && typeof parsedData === 'object') {
return [JSON.stringify(parsedData, null, 2), 'json'];
export function WebPageContentTrackerRevision({ revision, showDiff }: WebPageContentTrackerRevisionProps) {
let dataToRender;
try {
dataToRender = JSON.parse(revision.data) as string | object;
if (typeof dataToRender !== 'string') {
dataToRender = JSON.stringify(dataToRender, null, 2);
}
} catch {
dataToRender = revision.data;
}

return [parsedData, undefined];
}

export function WebPageContentTrackerRevision({
revision,
previousRevision,
showDiff,
}: WebPageContentTrackerRevisionProps) {
const [afterText, language] = getTextToRender(revision.data);
const [beforeText] = previousRevision && showDiff ? getTextToRender(previousRevision.data) : [afterText];

const [textToRender] = useEuiTextDiff({ beforeText, afterText });
return (
<EuiCodeBlock fontSize={'l'} language={language} isCopyable>
{!showDiff || afterText === beforeText ? afterText : textToRender}
<EuiCodeBlock fontSize={'m'} language={showDiff && dataToRender.startsWith('@@') ? 'diff' : 'json'} isCopyable>
{dataToRender}
</EuiCodeBlock>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -154,12 +154,8 @@ export default function WebPageContentTrackers() {
} else {
itemIdToExpandedRowMapValues[tracker.name] = (
<WebPageTrackerHistory kind={'content'} tracker={tracker}>
{(revision, previousRevision, showDiff) => (
<WebPageContentTrackerRevision
revision={revision as WebPageContentRevision}
previousRevision={previousRevision as WebPageContentRevision | undefined}
showDiff={showDiff}
/>
{(revision, showDiff) => (
<WebPageContentTrackerRevision revision={revision as WebPageContentRevision} showDiff={showDiff} />
)}
</WebPageTrackerHistory>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,7 @@ import { useWorkspaceContext } from '../../hooks';
export interface WebPageTrackerHistoryProps {
tracker: WebPageTracker;
kind: 'content' | 'resources';
children: (
revision: WebPageDataRevision,
previousRevision: WebPageDataRevision | undefined,
showDiff: boolean,
) => ReactNode;
children: (revision: WebPageDataRevision, showDiff: boolean) => ReactNode;
}

export function WebPageTrackerHistory({ kind, tracker, children }: WebPageTrackerHistoryProps) {
Expand Down Expand Up @@ -59,7 +55,7 @@ export function WebPageTrackerHistory({ kind, tracker, children }: WebPageTracke
setRevisions({ status: 'succeeded', data: response.data });

// Reset revision index only if it's not set or doesn't exist in the new data.
if (revisionIndex === null || revisionIndex >= response.data.length) {
if (refresh || revisionIndex === null || revisionIndex >= response.data.length) {
setRevisionIndex(response.data.length > 0 ? response.data.length - 1 : null);
}
},
Expand Down Expand Up @@ -167,11 +163,7 @@ export function WebPageTrackerHistory({ kind, tracker, children }: WebPageTracke
/>
);
} else if (revisionIndex !== null) {
history = children(
revisions.data[revisionIndex],
revisionIndex > 0 ? revisions.data[revisionIndex - 1] : undefined,
showDiff,
);
history = children(revisions.data[revisionIndex], showDiff);
} else {
const updateButton = (
<EuiButton
Expand Down

0 comments on commit 6385033

Please sign in to comment.