Skip to content

Commit 2e3323a

Browse files
authored
Fix small issues (#228)
* Decode title and description for helmet * Reuse existing language clients * Remove unused console.log * Redirect from empty project id
1 parent 4bf94dc commit 2e3323a

File tree

3 files changed

+31
-19
lines changed

3 files changed

+31
-19
lines changed

src/components/CadenceEditor.tsx

+21-15
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ class CadenceEditor extends React.Component<
134134
languageClient?: MonacoLanguageClient;
135135
_subscription: any;
136136
editorStates: { [key: string]: EditorState };
137+
clients: { [key: string]: MonacoLanguageClient }
137138
private callbacks: Callbacks;
138139

139140
constructor(props: {
@@ -150,6 +151,7 @@ class CadenceEditor extends React.Component<
150151
super(props);
151152

152153
this.editorStates = {};
154+
this.clients = {};
153155
this.handleResize = this.handleResize.bind(this);
154156
window.addEventListener('resize', this.handleResize);
155157
configureCadence();
@@ -197,21 +199,26 @@ class CadenceEditor extends React.Component<
197199

198200
private async loadLanguageClient() {
199201
this.callbacks = this.props.callbacks;
200-
201-
this.languageClient = createCadenceLanguageClient(this.callbacks);
202-
this.languageClient.start();
203-
this.languageClient.onReady().then(() => {
202+
const clientId = this.props.activeId;
203+
if(!this.clients[clientId]){
204+
this.languageClient = createCadenceLanguageClient(this.callbacks);
205+
this.languageClient.start();
206+
await this.languageClient.onReady()
204207
this.languageClient.onNotification(
205-
CadenceCheckCompleted.methodName,
206-
async (result: CadenceCheckCompleted.Params) => {
207-
if (result.valid) {
208-
const params = await this.getParameters();
209-
this.setExecutionArguments(params);
210-
}
211-
this.processMarkers();
212-
},
208+
CadenceCheckCompleted.methodName,
209+
async (result: CadenceCheckCompleted.Params) => {
210+
if (result.valid) {
211+
const params = await this.getParameters();
212+
this.setExecutionArguments(params);
213+
}
214+
this.processMarkers();
215+
},
213216
);
214-
});
217+
this.clients[clientId] = this.languageClient;
218+
} else {
219+
this.languageClient = this.clients[clientId]
220+
}
221+
215222
}
216223

217224
private async getParameters() {
@@ -317,6 +324,7 @@ class CadenceEditor extends React.Component<
317324
const serverStatusChanged = this.props.serverReady !== prevProps.serverReady
318325
const activeIdChanged = this.props.activeId !== prevProps.activeId
319326
const typeChanged = this.props.type !== prevProps.type
327+
320328
if (serverStatusChanged || activeIdChanged || typeChanged) {
321329
if (this.props.callbacks.toServer !== null) {
322330
await this.loadLanguageClient()
@@ -344,8 +352,6 @@ class CadenceEditor extends React.Component<
344352
}
345353

346354
extract(code: string, keyWord: string): string[] {
347-
// TODO: add different processors for contract, scripts and transactions
348-
349355
const target = code
350356
.split(/\r\n|\n|\r/)
351357
.find((line) => line.includes(keyWord));

src/containers/Editor/index.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@ import { ProjectProvider } from 'providers/Project';
33
import EditorLayout from './layout';
44
import { Base } from 'layout/Base';
55
import { LOCAL_PROJECT_ID } from 'util/url';
6+
import { Redirect} from '@reach/router';
67

78
const Playground: any = (props: any) => {
89
const { projectId } = props;
910
const isLocalProject = projectId === LOCAL_PROJECT_ID;
1011

12+
if (!projectId) {
13+
return <Redirect noThrow to={`/${LOCAL_PROJECT_ID}`} />;
14+
}
15+
1116
return (
1217
<Base>
1318
<ProjectProvider urlProjectId={isLocalProject ? null : projectId}>

src/containers/Editor/layout.tsx

+5-4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
} from './components';
3333

3434
import { useProject } from 'providers/Project/projectHooks';
35+
import { decodeText } from "util/readme";
3536

3637
const FDP = [
3738
'f1383d67-6f0a-4be7-8e61-f6141ebdd92c',
@@ -72,16 +73,16 @@ const EditorLayout: React.FC = () => {
7273
return <></>;
7374
}
7475

75-
const [helmetTitle, setHelmetTitle] = useState(project.title);
76-
const [helmetDescription, setHelmetDescription] = useState(project.title);
76+
const [helmetTitle, setHelmetTitle] = useState(decodeText(project.title));
77+
const [helmetDescription, setHelmetDescription] = useState(decodeText(project.title));
7778

7879
useEffect(() => {
7980
if (project.title) {
8081
const titleDebounce = setTimeout(() => {
81-
setHelmetTitle(project.title);
82+
setHelmetTitle(decodeText(project.title));
8283
}, 3000);
8384
const descriptionDebounce = setTimeout(() => {
84-
setHelmetDescription(project.description);
85+
setHelmetDescription(decodeText(project.description));
8586
}, 3000);
8687

8788
return () => {

0 commit comments

Comments
 (0)