From 8db43148e7f2c457f36e3e679f68c4641138a0ec Mon Sep 17 00:00:00 2001 From: Abhishek Sahu <39129685+ASahu16@users.noreply.github.com> Date: Sun, 9 Oct 2022 15:08:18 +0530 Subject: [PATCH] Update gfg.js (#310) * Update gfg.js Fix https://github.com/QasimWani/LeetHub/issues/307 * Review update * 0.0.9 * Update `output` window `querySelector` The old selector element gets removed from the DOM when the output window close is closed. --- package-lock.json | 2 +- package.json | 2 +- scripts/gfg.js | 40 +++++++++++++++++----------------------- 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0681393e..12ec8879 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "LeetHub", - "version": "0.0.8", + "version": "0.0.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index bbf93031..9c64e6c6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "LeetHub", - "version": "0.0.8", + "version": "0.0.9", "private": true, "description": "Automatically integrate your code with LeetCode and GitHub", "scripts": { diff --git a/scripts/gfg.js b/scripts/gfg.js index 75554294..c773c207 100644 --- a/scripts/gfg.js +++ b/scripts/gfg.js @@ -13,16 +13,16 @@ const UPDATE_MSG = 'Updated solution - LeetHub'; let START_MONITOR = true; const toKebabCase = (string) => { return string - .replace(/[^a-zA-Z0-9\. ]/g, '') //remove special chars + .replace(/[^a-zA-Z0-9\. ]/g, '') // remove special chars .replace(/([a-z])([A-Z])/g, '$1-$2') // get all lowercase letters that are near to uppercase ones .replace(/[\s_]+/g, '-') // replace all spaces and low dash .toLowerCase(); // convert to lower case }; function findGfgLanguage() { - const ele = document.getElementsByClassName('filter-option')[0] + const ele = document.getElementsByClassName('divider text')[0] .innerText; - let lang = ele.split('(')[0].trim(); + const lang = ele.split('(')[0].trim(); if (lang.length > 0 && languages[lang]) { return languages[lang]; } @@ -30,7 +30,7 @@ function findGfgLanguage() { } function findTitle() { - const ele = document.getElementsByClassName('problem-tab__name')[0] + const ele = document.querySelector('[class^="problems_header_content__title"] > h3') .innerText; if (ele != null) { return ele; @@ -39,9 +39,7 @@ function findTitle() { } function findDifficulty() { - const ele = document.getElementsByClassName( - 'problem-tab__problem-level', - )[0].innerText; + const ele = document.querySelectorAll('[class^="problems_header_description"]')[0].children[0].innerText; if (ele != null) { if (ele.trim() == 'Basic' || ele.trim() === 'School') { @@ -53,27 +51,24 @@ function findDifficulty() { } function getProblemStatement() { - const ele = document.getElementsByClassName('problem-statement')[0]; + const ele = document.querySelector('[class^="problems_problem_content"]'); return `${ele.outerHTML}`; } function getCode() { - let hackyScriptContent = ` - console.log("trying to get editor content"); + + const scriptContent = ` + var editor = ace.edit("ace-editor"); var editorContent = editor.getValue(); - // console.log(editorContent); var para = document.createElement("pre"); para.innerText+=editorContent; para.setAttribute("id","codeDataLeetHub") document.body.appendChild(para); - // console.log(para); `; - // console.log(hackyScriptContent); - var script = document.createElement('script'); script.id = 'tmpScript'; - script.appendChild(document.createTextNode(hackyScriptContent)); + script.appendChild(document.createTextNode(scriptContent)); ( document.body || document.head || @@ -81,7 +76,7 @@ function getCode() { ).appendChild(script); const text = document.getElementById('codeDataLeetHub').innerText; - let nodeDeletionScript = ` + const nodeDeletionScript = ` document.body.removeChild(para) `; var script = document.createElement('script'); @@ -93,7 +88,7 @@ function getCode() { document.documentElement ).appendChild(script); - return text ? text : ''; + return text || ''; } const gfgLoader = setInterval(() => { @@ -108,13 +103,13 @@ const gfgLoader = setInterval(() => { 'practice.geeksforgeeks.org/problems', ) ) { - let submitBtn = document.getElementById('run'); - // console.log("listening to events"); + const submitBtn = document.evaluate(".//button[text()='Submit']", document.body, null, XPathResult.ANY_TYPE, null).iterateNext(); + submitBtn.addEventListener('click', function () { START_MONITOR = true; const submission = setInterval(() => { - let output = document.getElementsByClassName('out')[0] + const output = document.querySelectorAll('[class^="problems_content"]')[0] .innerText; if ( output.includes('Problem Solved Successfully') && @@ -132,10 +127,9 @@ const gfgLoader = setInterval(() => { language = findGfgLanguage(); // format data - let probName = title + ` - GFG`; + const probName = `${title} - GFG`; - problemStatement = - `# ${title}\n## ${difficulty}\n` + problemStatement; + problemStatement = `# ${title}\n## ${difficulty}\n${problemStatement}`; // if language was found if (language !== null) {