diff --git a/main.js b/main.js index a6eda64..74e7077 100644 --- a/main.js +++ b/main.js @@ -11,6 +11,8 @@ import { loadUnlock, displayUnlock, displayHint, + loadSolution, + displaySolution, } from "./pages/challenge"; import { getScoreboard, getScoreboardDetail, getBrackets } from "./pages/scoreboard"; import { updateSettings, generateToken, deleteToken } from "./pages/settings"; @@ -127,6 +129,8 @@ const pages = { loadUnlock, displayUnlock, displayHint, + loadSolution, + displaySolution, }, challenges: { getChallenges, diff --git a/pages/challenge.js b/pages/challenge.js index ecb861a..cbf05c4 100644 --- a/pages/challenge.js +++ b/pages/challenge.js @@ -120,3 +120,19 @@ export async function displaySolves(challengeId) { CTFd._functions.challenge.displaySolves(solves); } } + +export async function loadSolution(solutionId) { + const response = await CTFd.fetch(`/api/v1/solutions/${solutionId}`, { + method: "GET", + }); + + const body = await response.json(); + return body["data"]; +} + +export async function displaySolution(solutionId) { + let solution = await loadSolution(solutionId); + if (CTFd._functions.challenge.displaySolution) { + CTFd._functions.challenge.displaySolution(solution); + } +}