diff --git a/CHANGELOG.md b/CHANGELOG.md index b22cf08..f5ef185 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,12 @@ All notable changes to this project will be documented in this file. Each batch It is a summary of changes that would be pertinent to the end user of the PGEtinker website. For a comprehensive history of changes made to the project, please refer to the repository's commit history. -## 20204-07-07 +## 2024-07-12 + +- Fixed [Issue #120](https://github.com/Moros1138/PGEtinker/issues/120) + + +## 2024-07-07 - Fixed bug involving shared code persistence - Changed threshold for responsive navbar diff --git a/resources/js/app.ts b/resources/js/app.ts index c9caecb..c268470 100644 --- a/resources/js/app.ts +++ b/resources/js/app.ts @@ -226,45 +226,50 @@ export default class PGEtinker if(!this.preCompile()) return; - axios.post("/api/share", { - code: this.editorPanel.getValue() - }).then((response) => - { - this.compileSuccessHandler(response.data); + axios.get('/sanctum/csrf-cookie').then(_ => { + axios.post("/api/share", { + code: this.editorPanel.getValue() + }).then((response) => + { + this.compileSuccessHandler(response.data); + + shareDialog(response.data.shareURL, response.data.shareThumbURL) + .finally(() => + { + + }); - shareDialog(response.data.shareURL, response.data.shareThumbURL) - .finally(() => - { - - }); + }).catch((error) => + { + this.setActiveTab("editor"); + playIconElem.classList.toggle("hidden", false); + stopIconElem.classList.toggle("hidden", true); + spanElem.innerHTML = "Run"; - }).catch((error) => - { - this.setActiveTab("editor"); - playIconElem.classList.toggle("hidden", false); - stopIconElem.classList.toggle("hidden", true); - spanElem.innerHTML = "Run"; - - if(error.response) - { - if(error.response.status) + if(error.response) { - if(error.response.status == 503) + if(error.response.status) { - this.compileFailHandler("pgetinker.cpp:1:1: error: PGEtinker service has gone offline. try again later.\n"); + if(error.response.status == 503) + { + this.compileFailHandler("pgetinker.cpp:1:1: error: PGEtinker service has gone offline. try again later.\n"); + return; + } + } + + if(error.response.data.stderr) + { + this.compileFailHandler(error.response.data.stderr); return; } } - - if(error.response.data.stderr) - { - this.compileFailHandler(error.response.data.stderr); - return; - } - } - - this.compileFailHandler("pgetinker.cpp:1:1: error: compilation failed in a way that's not being handled. please make a bug report.\n"); + + this.compileFailHandler("pgetinker.cpp:1:1: error: compilation failed in a way that's not being handled. please make a bug report.\n"); + }); + }).catch(() => + { + this.compileFailHandler("pgetinker.cpp:1:1: error: calling the compiler api failed.\n"); }); } @@ -313,37 +318,44 @@ export default class PGEtinker return new Promise((resolve, reject) => { - axios.post("/api/compile", { - code: this.editorPanel.getValue() - }).then((response) => - { - this.compileSuccessHandler(response.data); - resolve(); - }).catch((error) => - { - - if(error.response) + axios.get('/sanctum/csrf-cookie').then(_ => { + axios.post("/api/compile", { + code: this.editorPanel.getValue() + }).then((response) => { - if(error.response.status) + this.compileSuccessHandler(response.data); + resolve(); + }).catch((error) => + { + + if(error.response) { - if(error.response.status == 503) + if(error.response.status) { - this.compileFailHandler("pgetinker.cpp:1:1: error: PGEtinker service has gone offline. try again later.\n"); + if(error.response.status == 503) + { + this.compileFailHandler("pgetinker.cpp:1:1: error: PGEtinker service has gone offline. try again later.\n"); + reject(); + return; + } + } + + if(error.response.data.stderr) + { + this.compileFailHandler(error.response.data.stderr); reject(); return; } } - - if(error.response.data.stderr) - { - this.compileFailHandler(error.response.data.stderr); - reject(); - return; - } - } - this.compileFailHandler("pgetinker.cpp:1:1: error: compilation failed in a way that's not being handled. please make a bug report.\n"); + this.compileFailHandler("pgetinker.cpp:1:1: error: compilation failed in a way that's not being handled. please make a bug report.\n"); + reject(); + }); + }).catch(() => + { + this.compileFailHandler("pgetinker.cpp:1:1: error: calling the compiler api failed.\n"); reject(); }); + }); } diff --git a/resources/js/components/EditorPanel.js b/resources/js/components/EditorPanel.js index 5c88e8e..afd86e8 100644 --- a/resources/js/components/EditorPanel.js +++ b/resources/js/components/EditorPanel.js @@ -132,6 +132,7 @@ export default class EditorPanel try { + await axios.get('/sanctum/csrf-cookie'); await this.monacoWrapper.getLanguageClientWrapper().start(); } catch(e) diff --git a/resources/js/lib/monacoWrapper.js b/resources/js/lib/monacoWrapper.js index 23d7fff..64bb7cc 100644 --- a/resources/js/lib/monacoWrapper.js +++ b/resources/js/lib/monacoWrapper.js @@ -34,12 +34,16 @@ export const runCppWrapper = async() => const userConfig = createUserConfig('/workspace', "", '/workspace/pgetinker.cpp'); const wrapper = new MonacoEditorLanguageClientWrapper(); - try { + try + { + await axios.get('/sanctum/csrf-cookie'); await wrapper.init(userConfig); // open files, so the LS can pick it up await vscode.workspace.openTextDocument(pgetinkerCppUri); - } catch (e) { + } + catch (e) + { console.error(e); } diff --git a/resources/js/lib/newsDialog.js b/resources/js/lib/newsDialog.js index d736def..4819d31 100644 --- a/resources/js/lib/newsDialog.js +++ b/resources/js/lib/newsDialog.js @@ -8,45 +8,48 @@ export default function newsDialog() dialog.classList.toggle("dialog", true); dialog.classList.toggle("news", true); - axios.get("/api/news").then((response) => + axios.get('/sanctum/csrf-cookie').then(_ => { - - let entries = []; - - response.data.entries.forEach((entry) => + axios.get("/api/news").then((response) => { - entries.push(`
${entry.message}
`); - }); - - dialog.innerHTML = ` -
-
News and Updates
-
-

PGEtinker has been updated. Here's what's been done:

-

${response.data.date}

-
${entries.join("")}
- -

- For more details visit the PGEtinker github repository. -

-

- Version: ${version.substring(0, 7)} -

-
- -
`; - - dialog.querySelector("button.ok").addEventListener("click", (event) => - { - dialog.remove(); - resolve(); + + let entries = []; + + response.data.entries.forEach((entry) => + { + entries.push(`
${entry.message}
`); + }); + + dialog.innerHTML = ` +
+
News and Updates
+
+

PGEtinker has been updated. Here's what's been done:

+

${response.data.date}

+
${entries.join("")}
+ +

+ For more details visit the PGEtinker github repository. +

+

+ Version: ${version.substring(0, 7)} +

+
+ +
`; + + dialog.querySelector("button.ok").addEventListener("click", (event) => + { + dialog.remove(); + resolve(); + }); + + document.body.appendChild(dialog); }); - - document.body.appendChild(dialog); - }); - + }); + }); } \ No newline at end of file diff --git a/resources/js/lib/supportersDialog.js b/resources/js/lib/supportersDialog.js index a01927c..720afb3 100644 --- a/resources/js/lib/supportersDialog.js +++ b/resources/js/lib/supportersDialog.js @@ -55,12 +55,15 @@ export default function supportersDialog() return new Promise((resolve) => { - axios.get("/api/supporters").then((response) => + axios.get('/sanctum/csrf-cookie').then(_ => { - renderSupportersDialog(response.data.supporters).then(() => resolve()); - }).catch((reason) => - { - renderSupportersDialog(reason.response.data.supporters).then(() => resolve()); + axios.get("/api/supporters").then((response) => + { + renderSupportersDialog(response.data.supporters).then(() => resolve()); + }).catch((reason) => + { + renderSupportersDialog(reason.response.data.supporters).then(() => resolve()); + }); }); }); }