// ==UserScript==
// @name Khan Respostas 1.4
// @version 1.4
// @description Respostas Khan
// @author Emerson
// @match https://pt.khanacademy.org/*
// @grant none
// @namespace https://greasyfork.org/pt-BR/users/305931-emerson-bardusco
// @downloadURL none
// ==/UserScript==
(function () {
if (typeof khanRespostasCarregado !== 'boolean' || !khanRespostasCarregado) {
khanRespostasCarregado = true;
const overlayHTML = `
`;
function get(x) {
return document.getElementById(x);
}
const overlay = document.createElement("div");
overlay.innerHTML = overlayHTML;
document.body.appendChild(overlay);
const acc = get("accordian"),
darkToggle = get("darkToggle"),
ansbutton = get("inputans");
acc.onclick = function () {
const panel = get("box2");
panel.style.display = panel.style.display === "grid" ? "none" : "grid";
};
document.addEventListener("keydown", (event) => {
if (event.key === "m" || event.key === "M") {
const panel = get("box2");
panel.style.display = panel.style.display === "grid" ? "none" : "grid";
}
});
document.addEventListener('keydown', (event) => {
if (event.key === 'M') {
let panel = get("box2");
if (panel.style.display == "grid") panel.style.display = "none";
else { panel.style.display = "grid"; }
}
});
'use strict';
window.loaded = false;
class Answer {
constructor(answer, type) {
this.body = answer;
this.type = type;
}
get isMultiChoice() {
return this.type == "multiple_choice";
}
get isFreeResponse() {
return this.type == "free-response";
}
get isExpression() {
return this.type == "expression";
}
get isDropdown() {
return this.type == "dropdown";
}
log() {
const answer = this.body;
answer.map(ans => {
if (typeof ans == "string") {
if (ans.includes("web+graphie")) {
this.body[this.body.indexOf(ans)] = "";
this.printImage(ans);
} else { answer[answer.indexOf(ans)] = ans.replaceAll("$", "");
}
}
});
}
}
const originalFetch = window.fetch;
window.fetch = function () {
return originalFetch.apply(this, arguments).then(async (res) => {
if (res.url.includes("/getAssessmentItem")) {
const clone = res.clone();
const json = await clone.json();
let item, question;
item = json.data.assessmentItem.item;
question = item.itemData.questions[0];
if (question.presentation.widgets[0].type === "multiple_choice") {
const answer = question.presentation.widgets[0].choices.filter(
(choice) => choice.correct
);
new Answer([answer[0].id], "multiple_choice").log();
} else if (question.presentation.widgets[0].type === "free-response") {
new Answer([question.response.value], "free-response").log();
} else if (question.presentation.widgets[0].type === "expression") {
new Answer([question.response.value], "expression").log();
} else if (question.presentation.widgets[0].type === "dropdown") {
const answer = question.presentation.widgets[0].choices.filter(
(choice) => choice.correct
);
new Answer([answer[0].id], "dropdown").log();
}
}
return res;
});
};
}
})();