Skip to content

Commit 9691b69

Browse files
Merge pull request #55 from contentstack/fix/json-viewer
npm i fix
2 parents 079989b + 828372b commit 9691b69

File tree

9 files changed

+428
-398
lines changed

9 files changed

+428
-398
lines changed

package-lock.json

Lines changed: 270 additions & 274 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@
2020
"typescript": "^4.8.4",
2121
"web-vitals": "^2.1.4"
2222
},
23+
"overrides": {
24+
"react-json-view": {
25+
"react": "18.2.0",
26+
"react-dom": "18.2.0"
27+
}
28+
},
2329
"scripts": {
2430
"start": "react-scripts start",
2531
"build": "react-scripts build",

src/components/layout.tsx

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
1-
import React, { useEffect, useState } from 'react';
2-
import { Outlet, useNavigate } from 'react-router-dom';
3-
import Header from './header';
4-
import Footer from './footer';
5-
import DevTools from './devtools';
6-
import { getHeaderRes, getFooterRes, getAllEntries } from '../helper/index.d';
7-
import { onEntryChange } from '../sdk/entry.d';
8-
import { EntryProps, Entry, NavLink, Links, HeaderProps, FooterProps, NavmenuProps, HeadermenuProps} from "../typescript/layout";
9-
10-
export default function Layout({ entry }: {entry: EntryProps}) {
1+
import React, { useEffect, useState } from "react";
2+
import { Outlet, useNavigate } from "react-router-dom";
3+
import Header from "./header";
4+
import Footer from "./footer";
5+
import DevTools from "./devtools";
6+
import { getHeaderRes, getFooterRes, getAllEntries } from "../helper";
7+
import { onEntryChange } from "../sdk/entry";
8+
import {
9+
EntryProps,
10+
Entry,
11+
NavLink,
12+
Links,
13+
HeaderProps,
14+
FooterProps,
15+
NavmenuProps,
16+
HeadermenuProps,
17+
} from "../typescript/layout";
1118

19+
export default function Layout({ entry }: { entry: EntryProps }) {
1220
const history = useNavigate();
1321
const [getLayout, setLayout] = useState({
1422
header: {} as HeaderProps,
@@ -70,8 +78,8 @@ export default function Layout({ entry }: {entry: EntryProps}) {
7078
}, []);
7179

7280
useEffect(() => {
73-
console.error('error...', error);
74-
error && history('/error');
81+
console.error("error...", error);
82+
error && history("/error");
7583
}, [error]);
7684

7785
return (
Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,40 @@
1-
import Stack from "../sdk/entry.d";
1+
import Stack from "../sdk/entry";
22
import { addEditableTags } from "@contentstack/utils";
33

44
const liveEdit = process.env.REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS === "true";
55

66
export const getHeaderRes = async () => {
7-
const response = await Stack.getEntry({
7+
const response = (await Stack.getEntry({
88
contentTypeUid: "header",
99
referenceFieldPath: ["navigation_menu.page_reference"],
1010
jsonRtePath: ["notification_bar.announcement_text"],
11-
});
11+
})) as any;
1212
liveEdit && addEditableTags(response[0][0], "header", true);
1313
return response[0][0];
1414
};
1515

1616
export const getFooterRes = async () => {
17-
const response = await Stack.getEntry({
17+
const response = (await Stack.getEntry({
1818
contentTypeUid: "footer",
1919
jsonRtePath: ["copyright"],
20-
});
20+
referenceFieldPath: undefined,
21+
})) as any;
2122
liveEdit && addEditableTags(response[0][0], "footer", true);
2223
return response[0][0];
2324
};
2425

2526
export const getAllEntries = async () => {
26-
const response = await Stack.getEntry({
27+
const response = (await Stack.getEntry({
2728
contentTypeUid: "page",
28-
});
29+
jsonRtePath: undefined,
30+
referenceFieldPath: undefined,
31+
})) as any;
2932
liveEdit && addEditableTags(response[0], "page", true);
3033
return response[0];
3134
};
3235

33-
export const getPageRes = async (entryUrl) => {
34-
const response = await Stack.getEntryByUrl({
36+
export const getPageRes = async (entryUrl: string) => {
37+
const response = (await Stack.getEntryByUrl({
3538
contentTypeUid: "page",
3639
entryUrl,
3740
referenceFieldPath: ["page_components.from_blog.featured_blogs"],
@@ -40,28 +43,28 @@ export const getPageRes = async (entryUrl) => {
4043
"page_components.section_with_buckets.buckets.description",
4144
"page_components.section_with_html_code.description",
4245
],
43-
});
46+
})) as any;
4447
liveEdit && addEditableTags(response[0], "page", true);
4548
return response[0];
4649
};
4750

4851
export const getBlogListRes = async () => {
49-
const response = await Stack.getEntry({
52+
const response = (await Stack.getEntry({
5053
contentTypeUid: "blog_post",
5154
referenceFieldPath: ["author", "related_post"],
5255
jsonRtePath: ["body"],
53-
});
56+
})) as any;
5457
liveEdit && addEditableTags(response[0], "blog_post", true);
5558
return response[0];
5659
};
5760

58-
export const getBlogPostRes = async (entryUrl) => {
59-
const response = await Stack.getEntryByUrl({
61+
export const getBlogPostRes = async (entryUrl: string) => {
62+
const response = (await Stack.getEntryByUrl({
6063
contentTypeUid: "blog_post",
6164
entryUrl,
6265
referenceFieldPath: ["author", "related_post"],
6366
jsonRtePath: ["body", "related_post.body"],
64-
});
67+
})) as any;
6568
liveEdit && addEditableTags(response[0], "blog_post", true);
6669
return response[0];
6770
};

src/pages/blog-post.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import parse from "html-react-parser";
55

66
import ArchiveRelative from "../components/archive-relative";
77
import RenderComponents from "../components/render-components";
8-
import { getPageRes, getBlogPostRes } from "../helper/index.d";
8+
import { getPageRes, getBlogPostRes } from "../helper";
99
import Skeleton from "react-loading-skeleton";
1010
import { Prop, Banner, Post } from "../typescript/pages";
1111
import { useLivePreviewCtx } from "../context/live-preview-context-provider";

src/pages/blog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { useNavigate } from "react-router-dom";
33
import ArchiveRelative from "../components/archive-relative";
44
import RenderComponents from "../components/render-components";
55
import BlogList from "../components/blog-list";
6-
import { getBlogListRes, getPageRes } from "../helper/index.d";
6+
import { getBlogListRes, getPageRes } from "../helper";
77
import Skeleton from "react-loading-skeleton";
88
import { Prop, Entry, ArchiveBlogList, BlogData } from "../typescript/pages";
99
import { useLivePreviewCtx } from "../context/live-preview-context-provider";

src/pages/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from "react";
22
import { useParams, useNavigate } from "react-router-dom";
33

44
import RenderComponents from "../components/render-components";
5-
import { getPageRes } from "../helper/index.d";
5+
import { getPageRes } from "../helper";
66
import Skeleton from "react-loading-skeleton";
77
import { PageEntry, Prop } from "../typescript/pages";
88
import { useLivePreviewCtx } from "../context/live-preview-context-provider";

src/sdk/entry.d.ts renamed to src/sdk/entry.ts

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,38 @@
1+
/* eslint-disable @typescript-eslint/ban-ts-comment */
12
/* eslint-disable no-undef */
23
import * as contentstack from "contentstack";
34
import * as Utils from "@contentstack/utils";
45

56
import ContentstackLivePreview from "@contentstack/live-preview-utils";
67

8+
type GetEntry = {
9+
contentTypeUid: string;
10+
referenceFieldPath: string[] | undefined;
11+
jsonRtePath: string[] | undefined;
12+
};
13+
14+
type GetEntryByUrl = {
15+
entryUrl: string | undefined;
16+
contentTypeUid: string;
17+
referenceFieldPath: string[] | undefined;
18+
jsonRtePath: string[] | undefined;
19+
};
20+
721
const Stack = contentstack.Stack({
8-
api_key: process.env.REACT_APP_CONTENTSTACK_API_KEY,
9-
delivery_token: process.env.REACT_APP_CONTENTSTACK_DELIVERY_TOKEN,
10-
environment: process.env.REACT_APP_CONTENTSTACK_ENVIRONMENT,
11-
region: process.env.REACT_APP_CONTENTSTACK_REGION
12-
? process.env.REACT_APP_CONTENTSTACK_REGION
22+
api_key: `${process.env.REACT_APP_CONTENTSTACK_API_KEY}`,
23+
delivery_token: `${process.env.REACT_APP_CONTENTSTACK_DELIVERY_TOKEN}`,
24+
environment: `${process.env.REACT_APP_CONTENTSTACK_ENVIRONMENT}`,
25+
//@ts-ignore
26+
region: `${process.env.REACT_APP_CONTENTSTACK_REGION}`
27+
? `${process.env.REACT_APP_CONTENTSTACK_REGION}`
1328
: "us",
1429
live_preview: {
15-
management_token: process.env.REACT_APP_CONTENTSTACK_MANAGEMENT_TOKEN
16-
? process.env.REACT_APP_CONTENTSTACK_MANAGEMENT_TOKEN
30+
management_token: `${process.env.REACT_APP_CONTENTSTACK_MANAGEMENT_TOKEN}`
31+
? `${process.env.REACT_APP_CONTENTSTACK_MANAGEMENT_TOKEN}`
1732
: "",
1833
enable: true,
19-
host: process.env.REACT_APP_CONTENTSTACK_API_HOST
20-
? process.env.REACT_APP_CONTENTSTACK_API_HOST
34+
host: `${process.env.REACT_APP_CONTENTSTACK_API_HOST}`
35+
? `${process.env.REACT_APP_CONTENTSTACK_API_HOST}`
2136
: "",
2237
},
2338
});
@@ -27,21 +42,22 @@ const Stack = contentstack.Stack({
2742
*/
2843
ContentstackLivePreview.init({
2944
enable: true,
45+
//@ts-ignore
3046
stackSdk: Stack,
3147
clientUrlParams: {
32-
host: process.env.REACT_APP_CONTENTSTACK_APP_HOST
33-
? process.env.REACT_APP_CONTENTSTACK_APP_HOST
48+
host: `${process.env.REACT_APP_CONTENTSTACK_APP_HOST}`
49+
? `${process.env.REACT_APP_CONTENTSTACK_APP_HOST}`
3450
: "",
3551
},
3652
ssr: false,
3753
});
3854

39-
if (process.env.REACT_APP_CONTENTSTACK_API_HOST) {
40-
Stack.setHost(process.env.REACT_APP_CONTENTSTACK_API_HOST);
55+
if (`${process.env.REACT_APP_CONTENTSTACK_API_HOST}`) {
56+
Stack.setHost(`${process.env.REACT_APP_CONTENTSTACK_API_HOST}`);
4157
}
4258

4359
const renderOption = {
44-
["span"]: (node, next) => {
60+
["span"]: (node: any, next: any) => {
4561
return next(node.children);
4662
},
4763
};
@@ -57,7 +73,7 @@ export default {
5773
* @param {* Json RTE path} jsonRtePath
5874
*
5975
*/
60-
getEntry({ contentTypeUid, referenceFieldPath, jsonRtePath }) {
76+
getEntry({ contentTypeUid, referenceFieldPath, jsonRtePath }: GetEntry) {
6177
return new Promise((resolve, reject) => {
6278
const query = Stack.ContentType(contentTypeUid).Query();
6379
if (referenceFieldPath) query.includeReference(referenceFieldPath);
@@ -91,7 +107,12 @@ export default {
91107
* @param {* Json RTE path} jsonRtePath
92108
* @returns
93109
*/
94-
getEntryByUrl({ contentTypeUid, entryUrl, referenceFieldPath, jsonRtePath }) {
110+
getEntryByUrl({
111+
contentTypeUid,
112+
entryUrl,
113+
referenceFieldPath,
114+
jsonRtePath,
115+
}: GetEntryByUrl) {
95116
return new Promise((resolve, reject) => {
96117
const blogQuery = Stack.ContentType(contentTypeUid).Query();
97118
if (referenceFieldPath) blogQuery.includeReference(referenceFieldPath);

0 commit comments

Comments
 (0)