diff options
Diffstat (limited to 'ext/js/data/options-util.js')
| -rw-r--r-- | ext/js/data/options-util.js | 35 | 
1 files changed, 34 insertions, 1 deletions
diff --git a/ext/js/data/options-util.js b/ext/js/data/options-util.js index 2674701f..1f2ffb05 100644 --- a/ext/js/data/options-util.js +++ b/ext/js/data/options-util.js @@ -470,7 +470,8 @@ class OptionsUtil {              {async: false, update: this._updateVersion17.bind(this)},              {async: false, update: this._updateVersion18.bind(this)},              {async: false, update: this._updateVersion19.bind(this)}, -            {async: false, update: this._updateVersion20.bind(this)} +            {async: false, update: this._updateVersion20.bind(this)}, +            {async: true,  update: this._updateVersion21.bind(this)}          ];          if (typeof targetVersion === 'number' && targetVersion < result.length) {              result.splice(targetVersion); @@ -997,4 +998,36 @@ class OptionsUtil {          }          return options;      } + +    async _updateVersion21(options) { +        await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v21.handlebars'); + +        let customTemplates = false; +        for (const {options: profileOptions} of options.profiles) { +            if (profileOptions.anki.fieldTemplates !== null) { +                customTemplates = true; +            } +        } + +        if (customTemplates && isObject(chrome.storage)) { +            chrome.storage.session.set({'needsCustomTemplatesWarning': true}); +            await this._createTab(chrome.runtime.getURL('/welcome.html')); +            chrome.storage.session.set({'openedWelcomePage': true}); +        } + +        return options; +    } + +    _createTab(url) { +        return new Promise((resolve, reject) => { +            chrome.tabs.create({url}, (tab) => { +                const e = chrome.runtime.lastError; +                if (e) { +                    reject(new Error(e.message)); +                } else { +                    resolve(tab); +                } +            }); +        }); +    }  }  |