[Userscript] Item Difficulty Indicator πŸŸ’πŸŸ‘πŸŸ πŸ”΄

Sadly it still doesn’t work and I have to reload review page to make it working. ViolentMonkey shows this warning:

And there is this starcktrace in the dev console:

Uncaught (in promise) TypeError: Unhandled Promise Rejection: can't access property "className", characterElement is undefined
    updateDiffInfo WaniKani Item Difficulty.user.js:1608
    VMclkefr172on WaniKani Item Difficulty.user.js:1624
    nrWrapper dashboard:7
    setTimeout handler*nrWrapper dashboard:7
    VMclkefr172on WaniKani Item Difficulty.user.js:1327
    nrWrapper dashboard:7
    o turbo.es2017-esm.js:350
    notifyApplicationAfterPageLoad turbo.es2017-esm.js:6128
    visitCompleted turbo.es2017-esm.js:5989
    visitCompleted turbo.es2017-esm.js:4918
    complete turbo.es2017-esm.js:3938
    loadResponse turbo.es2017-esm.js:4011
    render turbo.es2017-esm.js:4210
    loadResponse turbo.es2017-esm.js:4002
    visitRequestCompleted turbo.es2017-esm.js:4267
    recordResponse turbo.es2017-esm.js:3987
    requestSucceededWithResponse turbo.es2017-esm.js:4110
    receive turbo.es2017-esm.js:924
    perform turbo.es2017-esm.js:901
    issueRequest turbo.es2017-esm.js:3965
    visitStarted turbo.es2017-esm.js:4253
    start turbo.es2017-esm.js:3915
    startVisit turbo.es2017-esm.js:4804
    visitProposedToLocation turbo.es2017-esm.js:4242
    visitProposedToLocation turbo.es2017-esm.js:5970
    proposeVisit turbo.es2017-esm.js:4794
    visit turbo.es2017-esm.js:5809
    followedLinkToLocation turbo.es2017-esm.js:5959
    clickBubbled turbo.es2017-esm.js:1703
    nrWrapper dashboard:7
    nrWrapper dashboard:7
    clickCaptured turbo.es2017-esm.js:1692
    nrWrapper dashboard:7
    nrWrapper dashboard:7
    start turbo.es2017-esm.js:1678
    start turbo.es2017-esm.js:5763
    Rt turbo.es2017-esm.js:6235
    <anonymous> turbo.es2017-esm.js:7259
dashboard:1608:65

What’s weird is I’m havig similar problem with Review Plus script: [Userscript] WaniKani Reviews Plus - #108 by wojtek

Very werid.

It looks like for some reason variable characterElement is not set here:

        let answerElement;
        let characterElement;
        let mainDiv;
        const initializeIndicator = pageType !== 'lesson' ? async () => {
            if ((mainDiv = document.getElementById(mainDivId))) mainDiv.remove();
            answerElement = await awaitElement('quiz-input__input-container', true);
            characterElement = await awaitElement('character-header', true);
            characterElement.appendChild(strToElement(await diffDiv('gray', 'Inactive', true, '', false)));
            mainDiv = document.getElementById(mainDivId);
        } : async () => {
            if ((mainDiv = document.getElementById(mainDivId))) mainDiv.remove();
            characterElement = await awaitElement('character-header', true);
            document.body.appendChild(strToElement(await diffDiv('gray', 'Inactive', true, '', true)));
            mainDiv = document.getElementById(mainDivId);
        };
1 Like