daeh / zotero-markdb-connect

Zotero plugin that links your Markdown database to Zotero. Jump directly from Zotero Items to connected Markdown files. Automatically tags Zotero Items so you can easily see which papers you've made notes for.
MIT License
518 stars 8 forks source link

bug at startup of Zotero #11

Closed WMAM closed 2 years ago

WMAM commented 2 years ago

Hi @daeh ! Just to report a minor bug. When launching Zotero, the following message appears: imagen

After that, no other issue, the plugin continues to work fine

daeh commented 2 years ago

Thanks for the heads up. It probably means that it's having trouble parsing some setting. Would you mind running this code snippet (Tools -> Developer -> Run Javascript) and posting the output?

async function runDebug () {
    const promptSaveErrors = false;
    debuglog = {};
    debuglog.version = Zotero.ObsCite.version;
    debuglog.zoteroVersion = Zotero.version;
    let prefs = {};
    for (let pref of ['matchstrategy', 'source_dir', 'zotkeyregex', 'metadatakeyword']) {
        try {
            prefs[pref] = Zotero.ObsCite.getPref(pref);
        } catch (e) {
            prefs[pref] = "Error (" + e.name + ") " + e.message;
        }
    }
    debuglog.prefs = prefs;

    let config = {};
    for (let pref of ['matchstrategy', 'source_dir', 'zotkeyregex', 'metadatakeyword', 'bbtinstalled']) {
        try {
            switch(pref) {
                case 'matchstrategy':
                    config[pref] = Zotero.ObsCite._getParam_matchstrategy();
                    break;
                case 'source_dir':
                    config[pref] = Zotero.ObsCite._getParam_vaultpath();
                    break;
                case 'zotkeyregex':
                    config[pref] = Zotero.ObsCite._getParam_zotkeyregex();
                    break;
                case 'metadatakeyword':
                    config[pref] = Zotero.ObsCite._getParam_metadatakeyword();
                    break;
                case 'bbtinstalled':
                    config[pref] = await Zotero.ObsCite._checkBBTinstalled();
                    break;
            }
        } catch (e) {
            config[pref] = "Error (" + e.name + ") " + e.message;
        }
    }
    try {
        config.checkSetting = await Zotero.ObsCite.checkSettings();
    } catch (e) {
        config.checkSetting = "Error (" + e.name + ") " + e.message;
    }
    debuglog.config = config;

    let results = {};
    try {
        await Zotero.ObsCite.processData(true);
        results.cleanrun = Zotero.ObsCite.cleanrun;
        results.ndataKeys = Zotero.ObsCite.dataKeys.length;
    } catch (e) {
        results = "Error (" + e.name + ") " + e.message;
    }
    debuglog.results = results;

    return debuglog;
}
return runDebug()
WMAM commented 2 years ago

Sorry for being late...

{ "prefs": { "matchstrategy": "bbtcitekey" "source_dir": "C:\Obsidian\Zettelkasten" "zotkeyregex": "" "metadatakeyword": "" } "config": { "matchstrategy": "bbtcitekey" "zotkeyregex": "" "metadatakeyword": "" "checkSetting": true } "results": { "cleanrun": true "ndataKeys": 24 } }

daeh commented 2 years ago

I'm not sure what's going on, but it's possible that it's failing to find BBT at initialization. If you're up for helping me sort it out, here's a version with an extra debugging trace.

https://github.com/daeh/zotero-obsidian-citations/releases/download/v0.0.13alpha/zotero-obsidian-citations-0.0.13alpha.xpi

You can manually install it (Tools -> Add-ons -> Remove ZoteroObsidianCitations, Install Add-on From File -> zotero-obsidian-citations-0.0.13alpha.xpi, then restart Zotero. If you get the same error, run this code snippet and post the output (run it as 'not async', which should be the default):

Zotero.ObsCite.debuglog

Thanks!

WMAM commented 2 years ago

Yes, the error persisted after changing to the v0.13alpha. Here is the output:

{ "version": "0.0.12" "zoteroVersion": "5.0.97-beta.63+035aac30f" "isMac": false "isLinux": false "isWin": true "prefs": { "matchstrategy": "bbtcitekey" "source_dir": "C:\Obsidian\Zettelkasten" "zotkeyregex": "" "metadatakeyword": "" } "config": { "matchstrategy": "bbtcitekey" "source_dir": "C:\Obsidian\Zettelkasten" "zotkeyregex": "" "metadatakeyword": "" "bbtinstalled": [ "0": true ] "checkSetting": false } "trace": { "checkSetting": "fail" "processData": "unreached" "ndataKeys": "unreached" "updateItems": "unreached" } "failedSetting": { "_getParam_matchstrategy": "none" "_getParam_vaultpath": "none" "_checkBBTinstalled": [] "_getParam_metadatakeyword": "none" "_getParam_zotkeyregex": "none" "matchstrategy": "none" } }

daeh commented 2 years ago

yep, that's what's going on (ZOC fails to communicate with BBT at launch, then BBT becomes available later).

I thought that I had totally over-engineered the BBT initialization check, but it seems that it wasn't enough. I'll take a look at what I might be able to improve. Thanks for the feedback, it's very helpful.

WMAM commented 2 years ago

Just in case it is useful...

The context options like "Open ObsidianMD note", do not appear until a manual sync is run.

WMAM commented 2 years ago

... and BBT plugin was last updated on January 21. Maybe they changed something in their plugin

daeh commented 2 years ago

see if this solves it:

https://github.com/daeh/zotero-obsidian-citations/releases/download/v0.0.13beta/zotero-obsidian-citations-0.0.13beta.xpi

(yeah, the Open in ObsidianMD item won't show up until the settings pass inspection, so if it doesn't pass at startup, then it won't show until the sync is manually invoked and the settings pass. That's all consistent with BBT not being found at initialization but being available later. Thanks.)

WMAM commented 2 years ago

Yes... it did!

daeh commented 2 years ago

great. thanks for reporting the issue