From 4846a66814a4e9975c034f1b53afbda671ef4537 Mon Sep 17 00:00:00 2001 From: bufan Date: Thu, 1 Feb 2024 11:51:55 +0800 Subject: [PATCH 1/5] quick start guide frame --- packages/client/dashboard/src/App.tsx | 2 +- .../src/components/icons/guideSteps/1.png | Bin 0 -> 30962 bytes .../src/components/icons/guideSteps/2.png | Bin 0 -> 34267 bytes .../src/components/icons/guideSteps/3.png | Bin 0 -> 34513 bytes .../src/components/icons/guideSteps/4.png | Bin 0 -> 35542 bytes .../src/components/icons/guideSteps/5.png | Bin 0 -> 32734 bytes .../src/components/model/ModelSDK.tsx | 64 +-- .../node/CreateCeramicNodeModal.tsx | 8 +- .../dashboard/src/container/CeramicNodes.tsx | 2 +- .../dashboard/src/container/DappCreate.tsx | 177 --------- .../src/container/DappQuickStart.tsx | 368 ++++++++++++++++++ .../dashboard/src/container/DappSdk.tsx | 6 +- 12 files changed, 418 insertions(+), 209 deletions(-) create mode 100644 packages/client/dashboard/src/components/icons/guideSteps/1.png create mode 100644 packages/client/dashboard/src/components/icons/guideSteps/2.png create mode 100644 packages/client/dashboard/src/components/icons/guideSteps/3.png create mode 100644 packages/client/dashboard/src/components/icons/guideSteps/4.png create mode 100644 packages/client/dashboard/src/components/icons/guideSteps/5.png delete mode 100644 packages/client/dashboard/src/container/DappCreate.tsx create mode 100644 packages/client/dashboard/src/container/DappQuickStart.tsx diff --git a/packages/client/dashboard/src/App.tsx b/packages/client/dashboard/src/App.tsx index 6a31fca..29e5cf0 100644 --- a/packages/client/dashboard/src/App.tsx +++ b/packages/client/dashboard/src/App.tsx @@ -21,7 +21,7 @@ import Nav from './components/nav/Nav' import { CERAMIC_TESTNET_HOST, WALLET_CONNECT_PROJECT_ID } from './constants' import CeramicNodes from './container/CeramicNodes' import Components from './container/Components' -import DappCreate from './container/DappCreate' +import DappCreate from './container/DappQuickStart' import DappEditor from './container/DappEditor' import DappHome from './container/DappHome' import DappInfo from './container/DappInfo' diff --git a/packages/client/dashboard/src/components/icons/guideSteps/1.png b/packages/client/dashboard/src/components/icons/guideSteps/1.png new file mode 100644 index 0000000000000000000000000000000000000000..5575091d276750761580e7c453e55beafc374e03 GIT binary patch literal 30962 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%0D1hH;CJ23-6Th!U~)dC-1 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

;6pe6p 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 R!s7q{002ovPDHLkV1gIGgb4ru literal 0 HcmV?d00001 diff --git a/packages/client/dashboard/src/components/model/ModelSDK.tsx b/packages/client/dashboard/src/components/model/ModelSDK.tsx index 00b0994..ba98bb6 100644 --- a/packages/client/dashboard/src/components/model/ModelSDK.tsx +++ b/packages/client/dashboard/src/components/model/ModelSDK.tsx @@ -8,20 +8,19 @@ import 'prismjs/plugins/line-numbers/prism-line-numbers.js' import { useCallback, useEffect, useState } from 'react' import { Tab, TabList, TabPanel, Tabs } from 'react-aria-components' import styled from 'styled-components' -import { getModelSDK } from '../../api/model' -import useSelectedDapp from '../../hooks/useSelectedDapp' +import { getModelSDK, getModelsInfoByIds } from '../../api/model' import { GraphqlGenType, Network } from '../../types.d' import { sdkTemplate } from './sdkTemplate' -export default function ModelSDK({ +export default function ModelSDK ({ modelId, - modelName, + network, + modelName }: { modelId: string - modelName: string + network: Network + modelName?: string }) { - const { selectedDapp } = useSelectedDapp() - const [codes, setCodes] = useState< { id: number; title: string; content: string }[] >([]) @@ -35,25 +34,26 @@ export default function ModelSDK({ } const zip = new JSZip() - codes.forEach((item) => { + codes.forEach(item => { zip.file(item.title, item.content) }) zip .generateAsync({ type: 'blob' }) .then(function (content) { - FileSaver.saveAs(content, `${camelCase(modelName)}SDK.zip`) + FileSaver.saveAs(content, `${camelCase(modelName ||'')}SDK.zip`) }) .catch(console.error) }, [codes, modelName]) const fetchModelSDK = useCallback(async () => { + if (!modelId || !network || !modelName) return try { setLoading(true) setErrMsg('') const resp = await getModelSDK({ - network: selectedDapp?.network as Network, + network: network, modelId: modelId, - type: genType, + type: genType }) if (resp.data.code !== 0) { throw new Error(resp.data.msg) @@ -66,7 +66,7 @@ export default function ModelSDK({ } const runtimeComposite = data.find( - (item) => item.filename === 'runtime-composite.ts' + item => item.filename === 'runtime-composite.ts' ) if (!runtimeComposite) { throw new Error('no runtime-composite') @@ -89,14 +89,14 @@ export const definition = ${JSON.stringify( [ { filename: `S3${modelName}Model.ts`, - content: sdkContent, + content: sdkContent }, runtimeComposite, - graphql, + graphql ].map((item, i) => ({ title: item.filename, content: item.content, - id: i, + id: i })) ) } catch (error) { @@ -105,12 +105,24 @@ export const definition = ${JSON.stringify( } finally { setLoading(false) } - }, [selectedDapp?.network, modelId, genType, modelName]) + }, [network, modelId, genType, modelName]) useEffect(() => { fetchModelSDK() }, [fetchModelSDK]) + useEffect(() => { + if (!modelId || !network) return + if (!modelName) { + getModelsInfoByIds({ + network, + ids: [modelId] + }).then(resp => { + modelName = resp.data.data[0].stream_content.name + }) + } + }, [network, modelId, genType, modelName]) + return ( {/* */} {(errMsg && ( -

+

An Error Occurred Please Try Again Later.

-

{errMsg}

+

{errMsg}

)) || ( <> @@ -137,16 +149,20 @@ export const definition = ${JSON.stringify( - {(item) => {item.title}} + {item => ( + + {item.title} + + )} - {codes.map((item) => ( - + {codes.map(item => ( + ))} @@ -159,7 +175,7 @@ export const definition = ${JSON.stringify( ) } -export function Code({ name, content }: { name: string; content: string }) { +export function Code ({ name, content }: { name: string; content: string }) { useEffect(() => { Prism.highlightAll() }, [content]) @@ -168,7 +184,7 @@ export function Code({ name, content }: { name: string; content: string }) { return (
diff --git a/packages/client/dashboard/src/components/node/CreateCeramicNodeModal.tsx b/packages/client/dashboard/src/components/node/CreateCeramicNodeModal.tsx index 9fbbab3..b0b7fe8 100644 --- a/packages/client/dashboard/src/components/node/CreateCeramicNodeModal.tsx +++ b/packages/client/dashboard/src/components/node/CreateCeramicNodeModal.tsx @@ -18,8 +18,8 @@ export default function CreateCeramicNodeModal ({ onSussess }: { fixedNetwork?: CeramicNetwork - closeModal: () => void - onSussess: () => void + closeModal?: () => void + onSussess?: () => void }) { const [submitting, setSubmitting] = useState(false) const [network, setNetwork] = useState( @@ -55,8 +55,8 @@ export default function CreateCeramicNodeModal ({ if (resp.data.code !== 0) { throw new Error(resp.data.msg) } - onSussess() - closeModal() + onSussess?.() + closeModal?.() } catch (error) { console.error(error) } finally { diff --git a/packages/client/dashboard/src/container/CeramicNodes.tsx b/packages/client/dashboard/src/container/CeramicNodes.tsx index 92bae35..0c11a3b 100644 --- a/packages/client/dashboard/src/container/CeramicNodes.tsx +++ b/packages/client/dashboard/src/container/CeramicNodes.tsx @@ -159,7 +159,7 @@ function DeleteNodeButton ({ node }: { node: CeramicDto }) { ) } -function CeramicNodeInfo ({ node }: { node: CeramicDto }) { +export function CeramicNodeInfo ({ node }: { node: CeramicDto }) { const session = useSession() return ( diff --git a/packages/client/dashboard/src/container/DappCreate.tsx b/packages/client/dashboard/src/container/DappCreate.tsx deleted file mode 100644 index 21d20b0..0000000 --- a/packages/client/dashboard/src/container/DappCreate.tsx +++ /dev/null @@ -1,177 +0,0 @@ -import { - useAuthentication, - useSession -} from '@us3r-network/auth-with-rainbowkit' -import { useCallback, useState } from 'react' -import { useNavigate } from 'react-router-dom' -import styled from 'styled-components' -import { createDapp } from '../api/dapp' -import EnumSelect from '../components/common/EnumSelect' -import { useAppCtx } from '../context/AppCtx' -import { Network } from '../types.d' - -export default function DappCreate () { - const navigate = useNavigate() - const [network, setNetwork] = useState(Network.TESTNET) - const { signIn } = useAuthentication() - const session = useSession() - const { loadDapps } = useAppCtx() - - const [appName, setAppName] = useState('') - const [creating, setCreating] = useState(false) - - const createAction = useCallback(async () => { - if (!session?.id) { - signIn() - return - } - - try { - setCreating(true) - const resp = await createDapp( - { name: appName, network }, - session.serialize() - ) - if (resp.data.code !== 0) { - throw new Error(resp.data.msg) - } - await loadDapps() - navigate(`/dapp/${resp.data.data.id}/index`) - } catch (error) { - console.error(error) - } finally { - setCreating(false) - } - }, [appName, navigate, network, session, signIn, loadDapps]) - - return ( - -
-

Create Application

-
-
- * App Name: - setAppName(e.target.value)} - /> -
- - - -
- - {creating ? ( - - ) : ( - - )} -
-
-
-
- ) -} - -const DappCreateContainer = styled.main` - > div { - display: flex; - flex-direction: column; - gap: 20px; - - h1 { - font-style: italic; - font-weight: 700; - font-size: 24px; - line-height: 28px; - margin: 0; - margin-top: 20px; - color: #ffffff; - } - - > div { - background: #1b1e23; - border-radius: 20px; - display: flex; - flex-direction: column; - justify-content: center; - padding: 40px; - gap: 40px; - - .app-name { - display: flex; - flex-direction: column; - - > span { - font-weight: 500; - font-size: 16px; - line-height: 24px; - margin-bottom: 8px; - } - - > input { - background: #1a1e23; - outline: none; - border: 1px solid #39424c; - border-radius: 12px; - height: 48px; - padding: 0px 16px; - color: #ffffff; - font-weight: 400; - font-size: 16px; - line-height: 24px; - } - } - - .btns { - display: flex; - align-items: center; - justify-content: end; - gap: 20px; - - button { - font-weight: 500; - font-size: 16px; - line-height: 24px; - - text-align: center; - - width: 120px; - background: none; - outline: none; - border: none; - cursor: pointer; - border: 1px solid #39424c; - border-radius: 24px; - height: 48px; - &.cancel { - background: #1b1e23; - - color: #ffffff; - } - - &.create { - color: #14171a; - background: #ffffff; - border-radius: 24px; - } - - > img { - height: 27px; - } - } - } - } - } -` diff --git a/packages/client/dashboard/src/container/DappQuickStart.tsx b/packages/client/dashboard/src/container/DappQuickStart.tsx new file mode 100644 index 0000000..60568cc --- /dev/null +++ b/packages/client/dashboard/src/container/DappQuickStart.tsx @@ -0,0 +1,368 @@ +import { + useAuthentication, + useSession +} from '@us3r-network/auth-with-rainbowkit' +import { useCallback, useState } from 'react' +import { Tab, TabList, TabPanel, Tabs } from 'react-aria-components' +import { useNavigate } from 'react-router-dom' +import styled from 'styled-components' +import { createDapp } from '../api/dapp' +import EnumSelect from '../components/common/EnumSelect' +import { useAppCtx } from '../context/AppCtx' +import { CeramicNetwork, Network } from '../types.d' + +import Step_1_Icon from '../components/icons/guideSteps/1.png' +import Step_2_Icon from '../components/icons/guideSteps/2.png' +import Step_3_Icon from '../components/icons/guideSteps/3.png' +import Step_4_Icon from '../components/icons/guideSteps/4.png' +import Step_5_Icon from '../components/icons/guideSteps/5.png' +import { CompositeList } from '../components/model/ExploreCompositeList' +import CreateCeramicNodeModal from '../components/node/CreateCeramicNodeModal' +import ModelSDK from '../components/model/ModelSDK' +import { useCeramicNodeCtx } from '../context/CeramicNodeCtx' +import { CeramicNodeInfo } from './CeramicNodes' +import useSelectedDapp from '../hooks/useSelectedDapp' +import { getModelsInfoByIds } from '../api/model' + +const steps = [ + { + id: 1, + title: 'Create Application', + icon: Step_1_Icon, + content: + 'Fill in some simple information to start developing your App or DApp.', + component: CreateDapp + }, + { + id: 2, + title: 'Deploy Node', + icon: Step_2_Icon, + content: 'Before you start, you also need to deploy a node for your App.', + component: DeployNode + }, + { + id: 3, + title: 'Explore Models, Composites and Components', + icon: Step_3_Icon, + content: + 'You can view the models, composites or components that others have created and add them to your App. Now try adding a model.', + component: Explore + }, + { + id: 4, + title: 'Start Building', + icon: Step_4_Icon, + content: + 'You can check the components and SDKs for each model for future development.', + component: StartBuilding + }, + { + id: 5, + title: 'Congratulations', + icon: Step_5_Icon, + content: + 'Okay, you should have learned how to use s3. Now, you are on your own!', + component: Congratulations + } +] + +export default function DappQuickStart () { + const [currentStep, setCurrentStep] = useState(1) + return ( + + setCurrentStep(Number(key))} + disabledKeys={[3, 4]} + > + {steps.map(item => ( + + {item.component && } + + ))} +
+
+ +

{steps[currentStep - 1].title}

+

{steps[currentStep - 1].content}

+
+ + {item => ( + +
+ {item.id} +
+
+ )} +
+
+
+
+ ) +} + +const Box = styled.main` + margin-top: 20px; + margin-bottom: 20px; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + gap: 20px; + + .steps-container { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + gap: 20px; + } + .step-info { + width: 300px; + height: 600px; + display: flex; + flex-direction: column; + align-items: start; + justify-content: end; + gap: 20px; + } + .step-tabs { + display: flex; + flex-direction: row; + align-items: center; + gap: 20px; + margin-bottom: 20px; + + .step { + display: flex; + align-items: center; + justify-content: center; + background: #1b1e23; + border-radius: 50%; + width: 40px; + height: 40px; + font-weight: 500; + font-size: 16px; + line-height: 24px; + color: #ffffff; + cursor: pointer; + } + } + .step-action { + width: 1000px; + height: 100%; + display: flex; + flex-direction: column; + gap: 20px; + } +` + +function CreateDapp () { + const navigate = useNavigate() + const [network, setNetwork] = useState(Network.TESTNET) + const { signIn } = useAuthentication() + const session = useSession() + const { loadDapps } = useAppCtx() + + const [appName, setAppName] = useState('') + const [creating, setCreating] = useState(false) + + const createAction = useCallback(async () => { + if (!session?.id) { + signIn() + return + } + + try { + setCreating(true) + const resp = await createDapp( + { name: appName, network }, + session.serialize() + ) + if (resp.data.code !== 0) { + throw new Error(resp.data.msg) + } + await loadDapps() + navigate(`/dapp/${resp.data.data.id}/index`) + } catch (error) { + console.error(error) + } finally { + setCreating(false) + } + }, [appName, navigate, network, session, signIn, loadDapps]) + + return ( + +
+
+
+ * App Name: + setAppName(e.target.value)} + /> +
+ + + +
+ + {creating ? ( + + ) : ( + + )} +
+
+
+
+ ) +} + +const DappCreateContainer = styled.div` + > div { + display: flex; + flex-direction: column; + gap: 20px; + + h1 { + font-style: italic; + font-weight: 700; + font-size: 24px; + line-height: 28px; + margin: 0; + margin-top: 20px; + color: #ffffff; + } + + > div { + background: #1b1e23; + border-radius: 20px; + display: flex; + flex-direction: column; + justify-content: center; + padding: 40px; + gap: 40px; + + .app-name { + display: flex; + flex-direction: column; + + > span { + font-weight: 500; + font-size: 16px; + line-height: 24px; + margin-bottom: 8px; + } + + > input { + background: #1a1e23; + outline: none; + border: 1px solid #39424c; + border-radius: 12px; + height: 48px; + padding: 0px 16px; + color: #ffffff; + font-weight: 400; + font-size: 16px; + line-height: 24px; + } + } + + .btns { + display: flex; + align-items: center; + justify-content: end; + gap: 20px; + + button { + font-weight: 500; + font-size: 16px; + line-height: 24px; + + text-align: center; + + width: 120px; + background: none; + outline: none; + border: none; + cursor: pointer; + border: 1px solid #39424c; + border-radius: 24px; + height: 48px; + &.cancel { + background: #1b1e23; + + color: #ffffff; + } + + &.create { + color: #14171a; + background: #ffffff; + border-radius: 24px; + } + + > img { + height: 27px; + } + } + } + } + } +` + +function DeployNode () { + const { currCeramicNode } = useCeramicNodeCtx() + if (currCeramicNode) { + return + } + return ( +
+ +
+ ) +} + +function Explore () { + return ( +
+ +
+ ) +} + +function StartBuilding () { + const { currDapp } = useAppCtx() + const firstModelId = currDapp?.models?.[0] + if (firstModelId) { + return ( +
+ +
+ ) + }else{ + return
No Model in this Dapp!
+ } +} + +function Congratulations () { + return
Congratulations
+} diff --git a/packages/client/dashboard/src/container/DappSdk.tsx b/packages/client/dashboard/src/container/DappSdk.tsx index 910095b..9c304b9 100644 --- a/packages/client/dashboard/src/container/DappSdk.tsx +++ b/packages/client/dashboard/src/container/DappSdk.tsx @@ -2,14 +2,16 @@ import { useOutletContext } from 'react-router-dom' import ModelSDK from '../components/model/ModelSDK' import { DappCompositeDto, ModelStream } from '../types' import { BuildContentBox } from './DappEditor' +import { useAppCtx } from '../context/AppCtx' export default function DappSdk () { + const { currDapp } = useAppCtx() const { selectModel } = useOutletContext<{ selectModel: ModelStream selectComposite: DappCompositeDto }>() - if (selectModel) { + if (selectModel && currDapp) { const name = selectModel.stream_content.name const modelId = selectModel.stream_id @@ -19,7 +21,7 @@ export default function DappSdk () { {name} SDK
- +
) From 24e770f351d41d24e1c927f10089a6d7dcf3b576 Mon Sep 17 00:00:00 2001 From: bufan Date: Thu, 1 Feb 2024 13:06:58 +0800 Subject: [PATCH 2/5] fix keys warning issue --- packages/client/dashboard/src/App.tsx | 12 ++++++------ .../src/components/icons/CircleIcon.tsx | 2 +- .../dashboard/src/components/model/ModelSDK.tsx | 17 ++++++++++------- .../client/dashboard/src/components/nav/Nav.tsx | 5 ++--- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/packages/client/dashboard/src/App.tsx b/packages/client/dashboard/src/App.tsx index 29e5cf0..fdb30a5 100644 --- a/packages/client/dashboard/src/App.tsx +++ b/packages/client/dashboard/src/App.tsx @@ -208,7 +208,7 @@ function BuildLayout () {
{PAGES.map(page => ( -
+
{PAGES.map(page => ( - - + + {page.label} @@ -257,7 +257,7 @@ function ExploreLayout () { {EXPLORE_PAGES.map(page => ( -
+
@@ -266,8 +266,8 @@ function ExploreLayout () {
{EXPLORE_PAGES.map(page => ( - - + + {page.label} diff --git a/packages/client/dashboard/src/components/icons/CircleIcon.tsx b/packages/client/dashboard/src/components/icons/CircleIcon.tsx index b429880..33aeb61 100644 --- a/packages/client/dashboard/src/components/icons/CircleIcon.tsx +++ b/packages/client/dashboard/src/components/icons/CircleIcon.tsx @@ -7,7 +7,7 @@ export default function CircleIcon ({ bgc = '#5BA85A' }: { bgc?: string }) { fill='none' xmlns='http://www.w3.org/2000/svg' > - + ) } diff --git a/packages/client/dashboard/src/components/model/ModelSDK.tsx b/packages/client/dashboard/src/components/model/ModelSDK.tsx index ba98bb6..dce1f20 100644 --- a/packages/client/dashboard/src/components/model/ModelSDK.tsx +++ b/packages/client/dashboard/src/components/model/ModelSDK.tsx @@ -40,7 +40,7 @@ export default function ModelSDK ({ zip .generateAsync({ type: 'blob' }) .then(function (content) { - FileSaver.saveAs(content, `${camelCase(modelName ||'')}SDK.zip`) + FileSaver.saveAs(content, `${camelCase(modelName || '')}SDK.zip`) }) .catch(console.error) }, [codes, modelName]) @@ -153,7 +153,7 @@ export const definition = ${JSON.stringify( items={codes} > {item => ( - + {item.title} )} @@ -161,11 +161,14 @@ export const definition = ${JSON.stringify( - {codes.map(item => ( - - - - ))} + {codes.map(item => { + console.log('item', item) + return ( + + + + ) + })} )} diff --git a/packages/client/dashboard/src/components/nav/Nav.tsx b/packages/client/dashboard/src/components/nav/Nav.tsx index aca3359..81fe5df 100644 --- a/packages/client/dashboard/src/components/nav/Nav.tsx +++ b/packages/client/dashboard/src/components/nav/Nav.tsx @@ -3,7 +3,6 @@ import { Link, NavLink } from 'react-router-dom' import styled from 'styled-components' import { DOCS_URL } from '../../constants' import ChartIcon from '../icons/ChartIcon' -import ChevronRight from '../icons/ChevronRight' import ComponentIcon from '../icons/ComponentIcon' import DocIcon from '../icons/DocIcon' import ExploreIcon from '../icons/ExploreIcon' @@ -101,7 +100,7 @@ export default function Nav ({ appId }: { appId: string }) {
{navItems.map(item => ( - + ))}
@@ -162,7 +161,7 @@ function NavItemRenderer ({ {item.items && (
{item.items.map(item => ( - + ))}
)} From d9290d229b27fcb4ebb55105b99e27faa846e56c Mon Sep 17 00:00:00 2001 From: bufan Date: Thu, 1 Feb 2024 14:00:29 +0800 Subject: [PATCH 3/5] use radio over tabs in App.tsx --- packages/client/dashboard/src/App.tsx | 143 +++++++++++------- .../dashboard/src/styles/react-aria/index.css | 1 - .../dashboard/src/styles/react-aria/tabs.css | 66 -------- 3 files changed, 88 insertions(+), 122 deletions(-) delete mode 100644 packages/client/dashboard/src/styles/react-aria/tabs.css diff --git a/packages/client/dashboard/src/App.tsx b/packages/client/dashboard/src/App.tsx index fdb30a5..10c7726 100644 --- a/packages/client/dashboard/src/App.tsx +++ b/packages/client/dashboard/src/App.tsx @@ -3,7 +3,7 @@ import { ProfileStateProvider } from '@us3r-network/profile' import dayjs from 'dayjs' import relativeTime from 'dayjs/plugin/relativeTime' import { useEffect, useState } from 'react' -import { Tab, TabList, TabPanel, Tabs } from 'react-aria-components' +import { Radio, RadioGroup } from 'react-aria-components' import { NavLink, Outlet, @@ -21,12 +21,12 @@ import Nav from './components/nav/Nav' import { CERAMIC_TESTNET_HOST, WALLET_CONNECT_PROJECT_ID } from './constants' import CeramicNodes from './container/CeramicNodes' import Components from './container/Components' -import DappCreate from './container/DappQuickStart' import DappEditor from './container/DappEditor' import DappHome from './container/DappHome' import DappInfo from './container/DappInfo' import DappMetrics from './container/DappMetrics' import DappPlayground from './container/DappPlayground' +import DappCreate from './container/DappQuickStart' import DappSdk from './container/DappSdk' import ExploreComposite from './container/ExploreComposite' import ExploreModel from './container/ExploreModel' @@ -203,34 +203,26 @@ function BuildLayout () { setSelectComposite(data) }} selectComposite={selectComposite} - editable={pathname.includes('model-editor')} + editable={pathname.includes('editor')} />
- + + {PAGES.map(page => ( -
- - - -
+ + {page.label} + ))} -
- - {PAGES.map(page => ( - - - {page.label} - - - ))} - -
-
+
) @@ -238,8 +230,8 @@ function BuildLayout () { function ExploreLayout () { const { pathname } = useLocation() - const defaultExploreKey = pathname.split('/explore/')[1] - const EXPLORE_PAGES = [ + const defaultKey = pathname.split('/explore/')[1] + const PAGES = [ { id: 'model', label: 'Models' @@ -255,26 +247,18 @@ function ExploreLayout () { ] return ( - - {EXPLORE_PAGES.map(page => ( -
- - - -
+ + + {PAGES.map(page => ( + + {page.label} + ))} -
- - {EXPLORE_PAGES.map(page => ( - - - {page.label} - - - ))} - -
-
+
) } @@ -283,21 +267,70 @@ const LayoutContainer = styled.div` width: 100%; margin-top: 20px; margin-bottom: 20px; + position: relative; display: flex; + flex-direction: row; gap: 20px; - .tab-list { + .tabs { position: absolute; top: 0px; right: 0px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + border: 1px solid white; + border-radius: 999px; } - .tab-panel { - position: absolute; - width: 100%; - top: 0; - margin: 0; - padding: 0; + + .tab { + --text-color-base: black; + --text-color-disabled: var(--text-color-base); + --highlight-background: white; + --border-color: transparent; + + padding: 10px 20px; + cursor: pointer; + outline: none; + position: relative; + color: white; + transition: color 200ms; + forced-color-adjust: none; + border-radius: 999px; + a { + color: var(--text-color); + } + + &[data-hovered], + &[data-focused] { + color: white; + } + + &[data-selected] { + background-color: var(--highlight-background); + color: var(--text-color-base); + a { + color: var(--text-color-base); + } + } + + &[data-disabled] { + color: var(--text-color-disabled); + &[data-selected] { + --border-color: var(--text-color-disabled); + } + } + + &[data-focus-visible]:after { + content: ''; + position: absolute; + inset: 4px; + border-radius: 4px; + border: 2px solid var(--focus-ring-color); + } } - .build-content{ + .build-content { flex-grow: 1; + width: 0; } ` diff --git a/packages/client/dashboard/src/styles/react-aria/index.css b/packages/client/dashboard/src/styles/react-aria/index.css index 5b3fddc..58dea42 100644 --- a/packages/client/dashboard/src/styles/react-aria/index.css +++ b/packages/client/dashboard/src/styles/react-aria/index.css @@ -6,5 +6,4 @@ @import 'menu.css'; @import 'modal.css'; @import 'popover.css'; -@import 'tabs.css'; @import 'textfield.css'; diff --git a/packages/client/dashboard/src/styles/react-aria/tabs.css b/packages/client/dashboard/src/styles/react-aria/tabs.css deleted file mode 100644 index d8958d0..0000000 --- a/packages/client/dashboard/src/styles/react-aria/tabs.css +++ /dev/null @@ -1,66 +0,0 @@ -/* Tabs */ -.react-aria-Tabs { - position: relative; - --text-color-base:black; - --highlight-background: white; - width: 100%; -} - -.react-aria-TabList { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - - &[data-orientation=horizontal] { - border: 1px solid var(--border-color); - border-radius: 999px; - } -} - -.react-aria-Tab { - padding: 10px 20px; - cursor: default; - outline: none; - position: relative; - color: var(--text-color-base); - transition: color 200ms; - --border-color: transparent; - forced-color-adjust: none; - border-radius: 999px; - a { - color: var(--text-color); - } - - &[data-hovered], - &[data-focused] { - color: var(--text-color-hover); - } - - &[data-selected] { - background-color: var(--highlight-background); - color: var(--text-color-base); - a { - color: var(--text-color-base); - } - } - - &[data-disabled] { - color: var(--text-color-disabled); - &[data-selected] { - --border-color: var(--text-color-disabled); - } - } - - &[data-focus-visible]:after { - content: ''; - position: absolute; - inset: 4px; - border-radius: 4px; - border: 2px solid var(--focus-ring-color); - } -} - -.react-aria-TabPanel { - -} \ No newline at end of file From fc58442665183e78878a5dee2d6db9db2879a45c Mon Sep 17 00:00:00 2001 From: bufan Date: Thu, 1 Feb 2024 23:22:57 +0800 Subject: [PATCH 4/5] quick start guide --- .../src/components/model/ExploreModelList.tsx | 5 +- .../src/components/model/ModelSDK.tsx | 22 +- .../node/CreateCeramicNodeModal.tsx | 16 +- .../dashboard/src/container/CeramicNodes.tsx | 31 +- .../src/container/DappQuickStart.tsx | 441 +++++++++++------- .../dashboard/src/container/MyDapps.tsx | 7 +- .../client/dashboard/src/context/AppCtx.tsx | 14 +- .../dashboard/src/hooks/useSelectedDapp.ts | 6 +- packages/client/dashboard/src/types.d.ts | 7 +- 9 files changed, 333 insertions(+), 216 deletions(-) diff --git a/packages/client/dashboard/src/components/model/ExploreModelList.tsx b/packages/client/dashboard/src/components/model/ExploreModelList.tsx index 462e2e4..cb72a24 100644 --- a/packages/client/dashboard/src/components/model/ExploreModelList.tsx +++ b/packages/client/dashboard/src/components/model/ExploreModelList.tsx @@ -379,7 +379,7 @@ function Actions ({ const { s3ModelCollection } = useSelectedDapp() const [staring, setStaring] = useState(false) - const { loadDapps } = useAppCtx() + const { loadDapps, loadCurrDapp } = useAppCtx() const { selectedDapp } = useSelectedDapp() const [adding, setAdding] = useState(false) const addModelToDapp = useCallback( @@ -403,13 +403,14 @@ function Actions ({ ceramicNodeId ) await loadDapps() + await loadCurrDapp() } catch (err) { console.error(err) } finally { setAdding(false) } }, - [loadDapps, selectedDapp, session, setAdding, hasIndexed, ceramicNodeId] + [session, selectedDapp, ceramicNodeId, hasIndexed, loadDapps, loadCurrDapp] ) const collectModel = useCallback( diff --git a/packages/client/dashboard/src/components/model/ModelSDK.tsx b/packages/client/dashboard/src/components/model/ModelSDK.tsx index dce1f20..8e1b91e 100644 --- a/packages/client/dashboard/src/components/model/ModelSDK.tsx +++ b/packages/client/dashboard/src/components/model/ModelSDK.tsx @@ -111,17 +111,17 @@ export const definition = ${JSON.stringify( fetchModelSDK() }, [fetchModelSDK]) - useEffect(() => { - if (!modelId || !network) return - if (!modelName) { - getModelsInfoByIds({ - network, - ids: [modelId] - }).then(resp => { - modelName = resp.data.data[0].stream_content.name - }) - } - }, [network, modelId, genType, modelName]) + // useEffect(() => { + // if (!modelId || !network) return + // if (!modelName) { + // getModelsInfoByIds({ + // network, + // ids: [modelId] + // }).then(resp => { + // modelName = resp.data.data[0].stream_content.name + // }) + // } + // }, [network, modelId, genType, modelName]) return ( diff --git a/packages/client/dashboard/src/components/node/CreateCeramicNodeModal.tsx b/packages/client/dashboard/src/components/node/CreateCeramicNodeModal.tsx index b0b7fe8..8d9afac 100644 --- a/packages/client/dashboard/src/components/node/CreateCeramicNodeModal.tsx +++ b/packages/client/dashboard/src/components/node/CreateCeramicNodeModal.tsx @@ -19,7 +19,7 @@ export default function CreateCeramicNodeModal ({ }: { fixedNetwork?: CeramicNetwork closeModal?: () => void - onSussess?: () => void + onSussess: () => void }) { const [submitting, setSubmitting] = useState(false) const [network, setNetwork] = useState( @@ -77,9 +77,11 @@ export default function CreateCeramicNodeModal ({

Create Ceramic Node

- + {closeModal && ( + + )}
@@ -124,7 +126,11 @@ export default function CreateCeramicNodeModal ({ )) || ( - )} diff --git a/packages/client/dashboard/src/container/CeramicNodes.tsx b/packages/client/dashboard/src/container/CeramicNodes.tsx index 0c11a3b..7181deb 100644 --- a/packages/client/dashboard/src/container/CeramicNodes.tsx +++ b/packages/client/dashboard/src/container/CeramicNodes.tsx @@ -10,7 +10,13 @@ import { useSession } from '@us3r-network/auth-with-rainbowkit' import dayjs from 'dayjs' import { useEffect, useState } from 'react' -import { Button, Dialog, DialogTrigger, Modal, ModalOverlay } from 'react-aria-components' +import { + Button, + Dialog, + DialogTrigger, + Modal, + ModalOverlay +} from 'react-aria-components' import styled from 'styled-components' import PlusIcon from '../components/icons/PlusIcon' import TrashIcon from '../components/icons/TrashIcon' @@ -41,7 +47,7 @@ export default function CeramicNodes () { }, 5000) } } - return ()=>{ + return () => { if (timer) clearTimeout(timer) } }, [ceramicNodes, loadCeramicNodes]) @@ -86,9 +92,7 @@ export default function CeramicNodes () { const active = currCeramicNode?.id === item.id return (
-
+
{item.name}
{active && ( @@ -104,7 +108,7 @@ export default function CeramicNodes () { })} - {currCeramicNode && } + {currCeramicNode && } ) } @@ -159,7 +163,13 @@ function DeleteNodeButton ({ node }: { node: CeramicDto }) { ) } -export function CeramicNodeInfo ({ node }: { node: CeramicDto }) { +export function CeramicNodeInfo ({ + node, + showTerminal +}: { + node: CeramicDto + showTerminal?: boolean +}) { const session = useSession() return ( @@ -171,7 +181,7 @@ export function CeramicNodeInfo ({ node }: { node: CeramicDto }) {
- + {node.status === CeramicStatus.PREPARING ? (
{/* */} @@ -209,7 +219,7 @@ export function CeramicNodeInfo ({ node }: { node: CeramicDto }) {
) : null} - {node?.id && + {showTerminal && node?.id && (node.status === CeramicStatus.STARTING || node.status === CeramicStatus.RUNNING) && session?.did && ( @@ -341,9 +351,11 @@ const NodesListBox = styled.div` } ` const NodeInfoContainer = styled.div` + width: 100%; height: 100%; display: flex; flex-direction: column; + /* justify-content: center; */ gap: 20px; flex-shrink: 1; flex-grow: 1; @@ -351,6 +363,7 @@ const NodeInfoContainer = styled.div` const NodeInfoBox = styled.div` width: 100%; padding: 20px; + box-sizing: border-box; border-radius: 20px; border: 1px solid #39424c; background: #1b1e23; diff --git a/packages/client/dashboard/src/container/DappQuickStart.tsx b/packages/client/dashboard/src/container/DappQuickStart.tsx index 60568cc..6b22888 100644 --- a/packages/client/dashboard/src/container/DappQuickStart.tsx +++ b/packages/client/dashboard/src/container/DappQuickStart.tsx @@ -2,105 +2,289 @@ import { useAuthentication, useSession } from '@us3r-network/auth-with-rainbowkit' -import { useCallback, useState } from 'react' -import { Tab, TabList, TabPanel, Tabs } from 'react-aria-components' +import { useCallback, useEffect, useState } from 'react' +import { Button, Radio, RadioGroup } from 'react-aria-components' import { useNavigate } from 'react-router-dom' import styled from 'styled-components' import { createDapp } from '../api/dapp' import EnumSelect from '../components/common/EnumSelect' import { useAppCtx } from '../context/AppCtx' -import { CeramicNetwork, Network } from '../types.d' +import { CeramicNetwork, CeramicStatus, Network } from '../types.d' import Step_1_Icon from '../components/icons/guideSteps/1.png' import Step_2_Icon from '../components/icons/guideSteps/2.png' import Step_3_Icon from '../components/icons/guideSteps/3.png' import Step_4_Icon from '../components/icons/guideSteps/4.png' -import Step_5_Icon from '../components/icons/guideSteps/5.png' -import { CompositeList } from '../components/model/ExploreCompositeList' +// import Step_5_Icon from '../components/icons/guideSteps/5.png' +// import { CompositeList } from '../components/model/ExploreCompositeList' import CreateCeramicNodeModal from '../components/node/CreateCeramicNodeModal' import ModelSDK from '../components/model/ModelSDK' import { useCeramicNodeCtx } from '../context/CeramicNodeCtx' import { CeramicNodeInfo } from './CeramicNodes' -import useSelectedDapp from '../hooks/useSelectedDapp' -import { getModelsInfoByIds } from '../api/model' +import { uniq } from 'lodash' +import ModelList from '../components/model/ExploreModelList' +import React from 'react' -const steps = [ +const CreateDapp = () => { + const [network, setNetwork] = useState(Network.TESTNET) + const { signIn } = useAuthentication() + const session = useSession() + const { loadDapps, currDapp, setCurrAppId } = useAppCtx() + + const [appName, setAppName] = useState('') + const [creating, setCreating] = useState(false) + + const createAction = useCallback(async () => { + if (!session?.id) { + signIn() + return + } + + try { + setCreating(true) + const resp = await createDapp( + { name: appName, network }, + session.serialize() + ) + if (resp.data.code !== 0) { + throw new Error(resp.data.msg) + } + setCurrAppId(String(resp.data.data.id)) + await loadDapps() + } catch (error) { + console.error(error) + } finally { + setCreating(false) + } + }, [session, signIn, appName, network, setCurrAppId, loadDapps]) + + return ( + +
+ {currDapp ? ( +
+

App Name: {currDapp.name}

+

Network: {currDapp.network}

+

App ID: {currDapp.id}

+

Created At: {currDapp.createdAt}

+
+ ) : ( +
+
+ * App Name: + setAppName(e.target.value)} + /> +
+ + + +
+ {creating ? ( + + ) : ( + + )} +
+
+ )} +
+
+ ) +} + +const DeployNode = () => { + const { ceramicNodes, currCeramicNode, loadCeramicNodes } = + useCeramicNodeCtx() + useEffect(() => { + let timer: NodeJS.Timeout | undefined + // console.log('ceramicNodes changes: ', ceramicNodes) + if (ceramicNodes.length > 0) { + if (ceramicNodes[0].status !== CeramicStatus.RUNNING) { + timer = setTimeout(() => { + loadCeramicNodes() + }, 5000) + } + } + return () => { + if (timer) clearTimeout(timer) + } + }, [ceramicNodes, loadCeramicNodes]) + if (currCeramicNode) { + return + } + return ( + + ) +} + +const Explore = () => { + return +} + +const StartBuilding = () => { + const { currDapp } = useAppCtx() + const firstModel = currDapp?.modelDetails?.[0] + if (firstModel) { + return ( + + ) + } else { + return
No Model in this Dapp!
+ } +} + +const STEPS = [ { id: 1, title: 'Create Application', icon: Step_1_Icon, - content: + guideText: 'Fill in some simple information to start developing your App or DApp.', - component: CreateDapp + component: CreateDapp, + enable: true, + done: false }, { id: 2, title: 'Deploy Node', icon: Step_2_Icon, - content: 'Before you start, you also need to deploy a node for your App.', - component: DeployNode + guideText: 'Before you start, you also need to deploy a node for your App.', + component: DeployNode, + enable: true, + done: false }, { id: 3, title: 'Explore Models, Composites and Components', icon: Step_3_Icon, - content: + guideText: 'You can view the models, composites or components that others have created and add them to your App. Now try adding a model.', - component: Explore + component: Explore, + enable: false, + done: false }, { id: 4, title: 'Start Building', icon: Step_4_Icon, - content: + guideText: 'You can check the components and SDKs for each model for future development.', - component: StartBuilding - }, - { - id: 5, - title: 'Congratulations', - icon: Step_5_Icon, - content: - 'Okay, you should have learned how to use s3. Now, you are on your own!', - component: Congratulations + component: StartBuilding, + enable: false, + done: false } ] export default function DappQuickStart () { + const navigate = useNavigate() const [currentStep, setCurrentStep] = useState(1) + const [disabledSteps, setDisabledSteps] = useState(['3', '4']) + const [completedSteps, setCompletedSteps] = useState([]) + + const { currCeramicNode } = useCeramicNodeCtx() + const { currDapp } = useAppCtx() + + useEffect(() => { + if (currCeramicNode) { + setCompletedSteps(uniq([...completedSteps, 1])) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currCeramicNode]) + + useEffect(() => { + if (currDapp) { + setCompletedSteps(uniq([...completedSteps, 0])) + if (currDapp?.models?.length) { + setCompletedSteps(uniq([...completedSteps, 2])) + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currDapp]) + + useEffect(() => { + if (completedSteps.includes(0) && completedSteps.includes(1)) { + if (completedSteps.includes(2)) { + setDisabledSteps([]) + } else { + setDisabledSteps(['4']) + } + } else { + setDisabledSteps(['3', '4']) + } + }, [completedSteps]) + + const step = STEPS[currentStep - 1] return ( - setCurrentStep(Number(key))} - disabledKeys={[3, 4]} - > - {steps.map(item => ( - - {item.component && } - - ))} -
-
- -

{steps[currentStep - 1].title}

-

{steps[currentStep - 1].content}

-
- - {item => ( - -
- {item.id} -
-
+
+

{STEPS[currentStep - 1]?.guideText}

+ {} +
+ {currentStep < STEPS.length && + !disabledSteps.includes(String(currentStep + 1)) && ( + + )} + {currDapp && + completedSteps.includes(0) && + completedSteps.includes(1) && ( + )} -
- +
+
+ setCurrentStep(Number(value))} + > + {STEPS.map(item => ( + + {item.id} + + ))} + +
+ +

{STEPS[currentStep - 1]?.title}

+
+
) } @@ -111,28 +295,31 @@ const Box = styled.main` width: 100%; height: 100%; display: flex; - flex-direction: column; + flex-direction: row; + align-items: start; + justify-content: center; gap: 20px; .steps-container { display: flex; flex-direction: row; - align-items: center; + /* align-items: center; */ justify-content: center; gap: 20px; } .step-info { width: 300px; - height: 600px; + margin-top: 100px; + /* height: 600px; */ display: flex; - flex-direction: column; - align-items: start; - justify-content: end; + flex-direction: row; + /* align-items: center; */ + /* justify-content: end; */ gap: 20px; } .step-tabs { display: flex; - flex-direction: row; + flex-direction: column; align-items: center; gap: 20px; margin-bottom: 20px; @@ -142,6 +329,7 @@ const Box = styled.main` align-items: center; justify-content: center; background: #1b1e23; + border: 2px solid transparent; border-radius: 50%; width: 40px; height: 40px; @@ -150,91 +338,33 @@ const Box = styled.main` line-height: 24px; color: #ffffff; cursor: pointer; + + &[data-disabled] { + color: grey; + cursor: not-allowed; + } + &[data-hovered] { + border-color: white; + } + &[data-selected] { + background: #ffffff; + color: #14171a; + } } } .step-action { - width: 1000px; - height: 100%; + width: 800px; + height: 600px; display: flex; flex-direction: column; + align-items: center; + /* justify-content: center; */ gap: 20px; } ` -function CreateDapp () { - const navigate = useNavigate() - const [network, setNetwork] = useState(Network.TESTNET) - const { signIn } = useAuthentication() - const session = useSession() - const { loadDapps } = useAppCtx() - - const [appName, setAppName] = useState('') - const [creating, setCreating] = useState(false) - - const createAction = useCallback(async () => { - if (!session?.id) { - signIn() - return - } - - try { - setCreating(true) - const resp = await createDapp( - { name: appName, network }, - session.serialize() - ) - if (resp.data.code !== 0) { - throw new Error(resp.data.msg) - } - await loadDapps() - navigate(`/dapp/${resp.data.data.id}/index`) - } catch (error) { - console.error(error) - } finally { - setCreating(false) - } - }, [appName, navigate, network, session, signIn, loadDapps]) - - return ( - -
-
-
- * App Name: - setAppName(e.target.value)} - /> -
- - - -
- - {creating ? ( - - ) : ( - - )} -
-
-
-
- ) -} - const DappCreateContainer = styled.div` + width: 100%; > div { display: flex; flex-direction: column; @@ -325,44 +455,3 @@ const DappCreateContainer = styled.div` } } ` - -function DeployNode () { - const { currCeramicNode } = useCeramicNodeCtx() - if (currCeramicNode) { - return - } - return ( -
- -
- ) -} - -function Explore () { - return ( -
- -
- ) -} - -function StartBuilding () { - const { currDapp } = useAppCtx() - const firstModelId = currDapp?.models?.[0] - if (firstModelId) { - return ( -
- -
- ) - }else{ - return
No Model in this Dapp!
- } -} - -function Congratulations () { - return
Congratulations
-} diff --git a/packages/client/dashboard/src/container/MyDapps.tsx b/packages/client/dashboard/src/container/MyDapps.tsx index b7cca62..9f8cd10 100644 --- a/packages/client/dashboard/src/container/MyDapps.tsx +++ b/packages/client/dashboard/src/container/MyDapps.tsx @@ -10,9 +10,14 @@ import { useAppCtx } from '../context/AppCtx' import { ClientDApp } from '../types.d' import { createImageFromInitials } from '../utils/createImage' import { getRandomColor } from '../utils/randomColor' +import { useEffect } from 'react' export default function MyDapps() { - const { dapps } = useAppCtx() + const { dapps, setCurrAppId } = useAppCtx() + setCurrAppId('') + useEffect(() => { + setCurrAppId('') + }, [setCurrAppId]) return (
diff --git a/packages/client/dashboard/src/context/AppCtx.tsx b/packages/client/dashboard/src/context/AppCtx.tsx index efdad9e..e17ef00 100644 --- a/packages/client/dashboard/src/context/AppCtx.tsx +++ b/packages/client/dashboard/src/context/AppCtx.tsx @@ -4,7 +4,7 @@ import React, { useCallback, useContext, useEffect, - useState, + useState } from 'react' import { getDapp, getDappWithDid } from '../api/dapp' import { useGuideStepsState } from '../hooks/useGuideSteps' @@ -22,13 +22,14 @@ export interface AppContextData { currAppId: string setCurrAppId: React.Dispatch> loadDapps: () => Promise + loadCurrDapp: () => Promise guideSteps: ReturnType } const AppContext = createContext(null) -export default function AppProvider({ - children, +export default function AppProvider ({ + children }: { children: React.ReactNode }) { @@ -93,8 +94,9 @@ export default function AppProvider({ currAppId, setCurrAppId, loadDapps, + loadCurrDapp, loadingDApps: loadingDApps || loadingDApp, - guideSteps, + guideSteps }} > {children} @@ -102,12 +104,12 @@ export default function AppProvider({ ) } -export function useAppCtx() { +export function useAppCtx () { const context = useContext(AppContext) if (!context) { throw new Error('Missing connection context') } return { - ...context, + ...context } } diff --git a/packages/client/dashboard/src/hooks/useSelectedDapp.ts b/packages/client/dashboard/src/hooks/useSelectedDapp.ts index dbd2df4..338033d 100644 --- a/packages/client/dashboard/src/hooks/useSelectedDapp.ts +++ b/packages/client/dashboard/src/hooks/useSelectedDapp.ts @@ -6,7 +6,7 @@ import { useAppCtx } from '../context/AppCtx' import { Network } from '../types.d' export default function useSelectedDapp() { - const { dapps } = useAppCtx() + const { dapps, currAppId } = useAppCtx() const { appId } = useParams() const selectDapps = useMemo(() => { return ( @@ -19,8 +19,8 @@ export default function useSelectedDapp() { }, [dapps]) const selectedDapp = useMemo(() => { - return selectDapps?.find((item) => item.id === Number(appId)) - }, [selectDapps, appId]) + return selectDapps?.find((item) => item.id === Number(currAppId || appId)) + }, [selectDapps, currAppId, appId]) const s3ModelCollection = useMemo(() => { if (selectedDapp?.network === Network.MAINNET) { diff --git a/packages/client/dashboard/src/types.d.ts b/packages/client/dashboard/src/types.d.ts index c979d92..eaa16dd 100644 --- a/packages/client/dashboard/src/types.d.ts +++ b/packages/client/dashboard/src/types.d.ts @@ -104,6 +104,7 @@ export type ClientDApp = { socialLinks?: { platform: string; url: string }[] tags?: string[] models?: string[] + modelDetails?: ModelStream[] composites?: DappCompositeDto[]; createdAt?: number lastModifiedAt?: number @@ -184,9 +185,9 @@ export type ModelStream = { stream_id: string controller_did: string tip: string - streamContent: { - name: string - } + // streamContent: { + // name: string + // } stream_content: { name: string description: string | null From b77a4997eae809011cc64633c2103ab37a374c29 Mon Sep 17 00:00:00 2001 From: bufan Date: Fri, 2 Feb 2024 09:35:10 +0800 Subject: [PATCH 5/5] add quick tips --- .../src/container/DappQuickStart.tsx | 72 ++++++++++++++----- 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/packages/client/dashboard/src/container/DappQuickStart.tsx b/packages/client/dashboard/src/container/DappQuickStart.tsx index 6b22888..467e8e0 100644 --- a/packages/client/dashboard/src/container/DappQuickStart.tsx +++ b/packages/client/dashboard/src/container/DappQuickStart.tsx @@ -60,15 +60,20 @@ const CreateDapp = () => { return ( -
- {currDapp ? ( + {currDapp ? ( +

App Name: {currDapp.name}

Network: {currDapp.network}

App ID: {currDapp.id}

Created At: {currDapp.createdAt}

- ) : ( +

+ Your dapp has been created; proceed to the next step to continue. +

+
+ ) : ( +
* App Name: @@ -97,8 +102,12 @@ const CreateDapp = () => { )}
- )} -
+

+ Fill in the required information to create a dapp, and testnet + network is recommended during the development. +

+
+ )}
) } @@ -121,18 +130,40 @@ const DeployNode = () => { } }, [ceramicNodes, loadCeramicNodes]) if (currCeramicNode) { - return + return ( + <> + +

+ Since you already have a Ceramic node set up, you can proceed to the + next step. +

+ + ) } return ( - + <> + {' '} +

+ You must create a Ceramic node, as all data operations will be executed + on this node. +

+ ) } const Explore = () => { - return + return ( + <> + +

+ Browse through the current collection of models and choose a model that + you wish to incorporate into your dapp. +

+ + ) } const StartBuilding = () => { @@ -140,11 +171,18 @@ const StartBuilding = () => { const firstModel = currDapp?.modelDetails?.[0] if (firstModel) { return ( - + <> + {' '} + +

+ Using the automatically generated SDK, you can now directly perform + CRUD operations on data; let's begin coding. +

+ ) } else { return
No Model in this Dapp!
@@ -235,7 +273,6 @@ export default function DappQuickStart () { return (
-

{STEPS[currentStep - 1]?.guideText}

{}
{currentStep < STEPS.length && @@ -283,6 +320,7 @@ export default function DappQuickStart () {

{STEPS[currentStep - 1]?.title}

+

{STEPS[currentStep - 1]?.guideText}