diff --git a/backend/src/api.ts b/backend/src/api.ts
index e917c4b..5105cc8 100644
--- a/backend/src/api.ts
+++ b/backend/src/api.ts
@@ -21,28 +21,6 @@ export class Session {
this.config = langs[lang];
this.term = { pty: null, live: false };
this.code = "";
- try {
- this.ws.send(
- JSON.stringify({
- event: "setMonacoLanguage",
- monacoLanguage: this.config.monacoLang,
- })
- );
- } catch (err) {
- //
- }
- if (this.config.template) {
- try {
- this.ws.send(
- JSON.stringify({
- event: "insertTemplate",
- template: this.config.template,
- })
- );
- } catch (err) {
- //
- }
- }
this.run().catch(console.error);
ws.on("message", this.handleClientMessage);
}
diff --git a/backend/src/server.ts b/backend/src/server.ts
index d5d70bb..5801027 100644
--- a/backend/src/server.ts
+++ b/backend/src/server.ts
@@ -33,7 +33,7 @@ app.get("/", (_, res) => {
app.get("/:lang", (req, res) => {
if (langs[req.params.lang]) {
res.render(appRoot.path + "/frontend/pages/app", {
- name: langs[req.params.lang].name,
+ config: { id: req.params.lang, ...langs[req.params.lang] },
});
} else {
res.send(`No such language: ${req.params.lang}`);
diff --git a/frontend/pages/app.ejs b/frontend/pages/app.ejs
index 4b7849d..bc2e09a 100644
--- a/frontend/pages/app.ejs
+++ b/frontend/pages/app.ejs
@@ -2,7 +2,7 @@
- <%= name %> - Riju
+ <%= config.name %> - Riju
-
+
+
diff --git a/frontend/src/app.ts b/frontend/src/app.ts
index 6bf6b89..e9a08ad 100644
--- a/frontend/src/app.ts
+++ b/frontend/src/app.ts
@@ -6,7 +6,13 @@ import { FitAddon } from "xterm-addon-fit";
import "xterm/css/xterm.css";
-const lang = document.location.pathname.slice(1);
+interface RijuConfig {
+ id: string;
+ monacoLang: string;
+ template: string;
+}
+
+const config: RijuConfig = (window as any).rijuConfig;
const term = new Terminal();
const fitAddon = new FitAddon();
@@ -16,17 +22,17 @@ term.open(document.getElementById("terminal"));
fitAddon.fit();
window.addEventListener("resize", () => fitAddon.fit());
+term.write("Connecting to server...");
+
const initialRetryDelayMs = 200;
let retryDelayMs = initialRetryDelayMs;
-let allowInsertingTemplate = true;
-
function tryConnect() {
console.log("Connecting to server...");
socket = new WebSocket(
(document.location.protocol === "http:" ? "ws://" : "wss://") +
document.location.host +
- `/api/v1/ws?lang=${encodeURIComponent(lang)}`
+ `/api/v1/ws?lang=${encodeURIComponent(config.id)}`
);
socket.addEventListener("open", () => {
console.log("Successfully connected to server");
@@ -53,25 +59,6 @@ function tryConnect() {
}
term.write(message.output);
return;
- case "setMonacoLanguage":
- if (typeof message.monacoLanguage !== "string") {
- console.error("Unexpected message from server:", message);
- return;
- }
- monaco.editor.setModelLanguage(
- editor.getModel(),
- message.monacoLanguage
- );
- return;
- case "insertTemplate":
- if (typeof message.template !== "string") {
- console.error("Unexpected message from server:", message);
- return;
- }
- if (allowInsertingTemplate) {
- editor.getModel().setValue(message.template);
- }
- return;
default:
console.error("Unexpected message from server:", message);
return;
@@ -106,9 +93,8 @@ const editor = monaco.editor.create(document.getElementById("editor"), {
scrollbar: { verticalScrollbarSize: 0 },
});
window.addEventListener("resize", () => editor.layout());
-editor.onDidChangeModelContent(() => {
- allowInsertingTemplate = false;
-});
+editor.getModel().setValue(config.template);
+monaco.editor.setModelLanguage(editor.getModel(), config.monacoLang);
document.getElementById("runButton").addEventListener("click", () => {
socket.send(JSON.stringify({ event: "runCode", code: editor.getValue() }));