Skip to content

Commit 9102942

Browse files
author
ci-bot
committed
load readme for template
1 parent e475c0b commit 9102942

File tree

16 files changed

+96
-40
lines changed

16 files changed

+96
-40
lines changed

apps/remix-ide/src/app/components/top-bar.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,19 @@ import { UpdateInfo } from 'libs/remix-ui/home-tab/src/lib/components/types/caro
1515
import { GitPlugin } from '../plugins/git'
1616
import { createWorkspace, deleteWorkspace, getWorkspaces, renameWorkspace, WorkspaceType } from 'libs/remix-ui/workspace/src/lib/actions'
1717
import { Registry } from '@remix-project/remix-lib'
18-
import { ViewPlugin } from '@remixproject/engine-web'
1918

2019
const TopBarProfile = {
2120
name: 'topbar',
2221
displayName: 'Top Bar',
2322
description: '',
2423
version: packageJson.version,
2524
icon: '',
26-
location: 'mainPanel',
25+
location: 'none',
2726
methods: ['getWorkspaces', 'createWorkspace', 'renameWorkspace', 'deleteWorkspace', 'getCurrentWorkspace', 'setWorkspace'],
2827
events: ['setWorkspace', 'workspaceRenamed', 'workspaceDeleted', 'workspaceCreated'],
2928
}
3029

31-
export class Topbar extends ViewPlugin {
30+
export class Topbar extends Plugin {
3231
dispatch: React.Dispatch<any> = () => { }
3332
appStateDispatch: React.Dispatch<AppAction> = () => { }
3433
htmlElement: HTMLDivElement

apps/remix-ide/src/app/plugins/remix-template-explorer-modal.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ const pluginProfile = {
1717
events: [],
1818
maintainedBy: 'Remix',
1919
kind: 'templateexplorermodal',
20-
location: 'mainPanel',
20+
location: 'none',
2121
version: packageJson.version,
2222
permission: true,
2323
documentation: 'https://remix-ide.readthedocs.io/en/latest/template-explorer-modal.html'
2424
}
2525

26-
export class TemplateExplorerModalPlugin extends ViewPlugin {
26+
export class TemplateExplorerModalPlugin extends Plugin {
2727
element: HTMLDivElement
2828
dispatch: React.Dispatch<any> = () => { }
2929
event: any

apps/remix-ide/src/app/plugins/remix-templates.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const profile = {
77
name: 'remix-templates',
88
displayName: 'remix-templates',
99
description: 'Remix Templates plugin',
10-
methods: ['getTemplate', 'loadTemplateInNewWindow', 'addToCurrentElectronFolder', 'loadFilesInNewWindow'],
10+
methods: ['getTemplate', 'loadTemplateInNewWindow', 'addToCurrentElectronFolder', 'loadFilesInNewWindow', 'getTemplateReadMeFile'],
1111
}
1212

1313
export class TemplatesPlugin extends Plugin {
@@ -30,8 +30,8 @@ export class TemplatesPlugin extends Plugin {
3030

3131
async getTemplateReadMeFile(templateName: string) {
3232
const files = await templateWithContent[templateName]({}, this)
33-
const readMe = files['README.md'] || files['README.txt']
34-
return readMe
33+
const readMe = files['README.md'] || files['README.txt'] || 'No ReadMe file found'
34+
return { readMe, type: files['README.md'] ? 'md' : files['README.txt'] ? 'txt' : 'none' }
3535
}
3636
// electron only method
3737

libs/remix-ui/template-explorer-modal/reducers/template-explorer-reducer.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ export const templateExplorerReducer = (state: TemplateExplorerWizardState, acti
6161
case TemplateExplorerWizardAction.SET_WORKSPACE_GENERATED_WITH_AI:
6262
return { ...state, workspaceGeneratedWithAi: action.payload }
6363
case TemplateExplorerWizardAction.END_WORKSPACE_WIZARD:
64-
return { ...state, wizardStep: 'finishSetup' }
64+
return { ...state, wizardStep: 'confirm' }
65+
case TemplateExplorerWizardAction.FINALIZE_WORKSPACE_CREATION: {
66+
return initialState
67+
}
6568
case TemplateExplorerWizardAction.SET_SELECTED_TAG: {
6669
return { ...state, selectedTag: action.payload }
6770
}

libs/remix-ui/template-explorer-modal/src/components/contract-wizard.tsx

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Editor from '@monaco-editor/react'
33
import * as erc20 from '../contractCode/erc20'
44
import * as erc721 from '../contractCode/erc721'
55
import * as erc1155 from '../contractCode/erc1155'
6-
import { AccessControlType, ContractTypeStrategy, ContractWizardAction } from '../../types/template-explorer-types'
6+
import { AccessControlType, ContractTypeStrategy, ContractWizardAction, TemplateExplorerWizardAction } from '../../types/template-explorer-types'
77
import { getErc1155ContractCode, getErc20ContractCode, getErc721ContractCode } from '../utils/contractWizardUtils'
88
import { TemplateExplorerContext } from '../../context/template-explorer-context'
99
import { CustomTooltip } from '@remix-ui/helper'
@@ -164,15 +164,8 @@ export function ContractWizard () {
164164
</div>
165165

166166
<button className="btn btn-primary btn-sm" data-id="validateWorkspaceButton" onClick={async () => {
167-
console.log('about to create workspace')
168-
await facade.createWorkspace({
169-
workspaceName: state.workspaceTemplateChosen.displayName,
170-
workspaceTemplateName: state.workspaceTemplateChosen.value,
171-
opts: { mintable: state.contractOptions.mintable, burnable: state.contractOptions.burnable, pausable: state.contractOptions.pausable, uups: state.contractUpgradability.uups, transparent: state.contractUpgradability.transparent },
172-
isEmpty: false,
173-
isGitRepo: state.initializeAsGitRepo,
174-
createCommit: true
175-
})
167+
console.log('about to confirm workspace creation')
168+
dispatch({ type: TemplateExplorerWizardAction.END_WORKSPACE_WIZARD })
176169
}}>Validate workspace</button>
177170
</div>
178171
</div>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import React, { useContext } from 'react'
2+
import { MiniFileExplorer } from './miniFileExplorer'
3+
import { Editor } from '@monaco-editor/react'
4+
import { ContractWizardAction } from '../../types/template-explorer-types'
5+
import { storageContractCode, ownerContractCode, ballotContractCode } from '../contractCode/remixDefault'
6+
import { TemplateExplorerContext } from '../../context/template-explorer-context'
7+
8+
interface FinalScreenProps {
9+
strategy?: any
10+
}
11+
12+
export function FinalScreen(props: FinalScreenProps) {
13+
const { state, dispatch, facade } = useContext(TemplateExplorerContext)
14+
15+
return (
16+
<section className="d-flex flex-column gap-3 bg-light" style={{ height: '80%' }}>
17+
<div className="pt-3 ps-3 d-flex flex-row align-items-center text-dark">
18+
<span className="text-uppercase small ">Workspace Name</span>
19+
<i className="fa-solid fa-edit ms-2"></i>
20+
</div>
21+
22+
<button className="btn btn-primary btn-sm" data-id="validateWorkspaceButton" onClick={async () => {
23+
console.log('about to create workspace')
24+
await facade.createWorkspace({
25+
workspaceName: state.workspaceName,
26+
workspaceTemplateName: state.workspaceTemplateChosen.value,
27+
opts: state.contractOptions,
28+
isEmpty: false,
29+
isGitRepo: false,
30+
createCommit: true,
31+
contractContent: state.contractCode,
32+
contractName: state.tokenName
33+
})
34+
}}>Finish</button>
35+
</section>
36+
)
37+
}

libs/remix-ui/template-explorer-modal/src/components/genericWorkspaceTemplate.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,27 @@
1-
import React, { useContext, useReducer } from 'react'
1+
import React, { useContext, useEffect, useReducer, useState } from 'react'
22
import { initialState, templateExplorerReducer } from '../../reducers/template-explorer-reducer'
33
import { ContractWizardAction, TemplateExplorerWizardAction } from '../../types/template-explorer-types'
44
import { TemplateExplorerContext } from '../../context/template-explorer-context'
5+
import ReactMarkdown from 'react-markdown'
6+
import remarkGfm from 'remark-gfm'
57

68
export function GenericWorkspaceTemplate() {
79

810
const { state, dispatch, facade } = useContext(TemplateExplorerContext)
11+
const [readMe, setReadMe] = useState(null)
12+
13+
useEffect(() => {
14+
const run = async () => {
15+
const readMe = await facade.getTemplateReadMeFile(state.workspaceTemplateChosen.value)
16+
console.log('readMe', readMe)
17+
setReadMe(readMe)
18+
}
19+
run()
20+
}, [])
921

1022
return (
1123
<section className="mx-3 p-2">
12-
<div className="d-flex flex-column p-3 bg-light" style={{ minHeight: '80%' }}>
24+
<div className="d-flex flex-column p-3 bg-light" style={{ height: '50%' }}>
1325
<div>
1426
<label className="form-label text-uppercase small mb-1">Workspace name</label>
1527
</div>
@@ -38,6 +50,9 @@ export function GenericWorkspaceTemplate() {
3850
})
3951
}}>Create workspace</button>
4052
</div>
53+
<div className="mt-3 overflow-y-auto" style={{ maxHeight: '90%' }}>
54+
{ readMe && readMe?.type === 'md' ? <ReactMarkdown remarkPlugins={[remarkGfm]}>{readMe?.readMe}</ReactMarkdown> : <p>{readMe?.readMe}</p> }
55+
</div>
4156
</div>
4257
</section>
4358
)

libs/remix-ui/template-explorer-modal/src/lib/remix-ui-template-explorer-modal.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { TemplateExplorerBody } from '../components/template-explorer-body'
99
import { TemplateExplorerWizardAction, TemplateExplorerWizardState } from '../../types/template-explorer-types'
1010
import { GenericWorkspaceTemplate } from '../components/genericWorkspaceTemplate'
1111
import { GenerateWorkspaceWithAi } from '../components/generateWorkspaceWithAi'
12+
import { FinalScreen } from '../components/finalScreen'
1213

1314
export interface RemixUiTemplateExplorerModalProps {
1415
dispatch: any
@@ -52,6 +53,7 @@ export function RemixUiTemplateExplorerModal (props: RemixUiTemplateExplorerModa
5253
{state.wizardStep === 'genAI' ? <GenerateWorkspaceWithAi /> : null}
5354
{state.wizardStep === 'wizard' ? <ContractWizard /> : null}
5455
{state.wizardStep === 'remixdefault' ? <WorkspaceDetails strategy={state} /> : null}
56+
{state.wizardStep === 'confirm' ? <FinalScreen /> : null}
5557
</div>
5658
</section>
5759
</section>

libs/remix-ui/template-explorer-modal/src/utils/workspaceUtils.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ export class TemplateExplorerModalFacade {
4949
dispatch({ type: TemplateExplorerWizardAction.SET_WORKSPACE_NAME, payload: '' })
5050
}
5151

52-
async getozerc20Workspace() {
53-
52+
async getTemplateReadMeFile(templateName: string) {
53+
const readMe = await this.plugin.call('remix-templates', 'getTemplateReadMeFile', templateName)
54+
return { readMe: readMe.readMe, type: readMe.type }
5455
}
5556
}

libs/remix-ui/template-explorer-modal/types/template-explorer-types.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export interface TemplateExplorerWizardState {
3636
tokenName?: string
3737
}
3838

39-
export type WizardStep = 'template' | 'finishSetup' | 'wizard' | 'import' | 'genAI' | 'generic' | 'remixdefault' | 'cookbook' | 'back' | 'reset' | 'zkp'
39+
export type WizardStep = 'template' | 'finishSetup' | 'wizard' | 'import' | 'genAI' | 'generic' | 'remixdefault' | 'cookbook' | 'back' | 'reset' | 'zkp' | 'confirm'
4040

4141
export interface TemplateExplorerContextType {
4242
plugin: any
@@ -201,5 +201,7 @@ export interface CreateWorkspaceDeps {
201201
isEmpty?: boolean,
202202
cb?: (err: Error, result?: string | number | boolean | Record<string, any>) => void,
203203
isGitRepo?: boolean,
204-
createCommit?: boolean
204+
createCommit?: boolean,
205+
contractContent?: string,
206+
contractName?: string
205207
}

0 commit comments

Comments
 (0)