UNPKG

sketch-module-user-preferences

Version:
40 lines (37 loc) 1.47 kB
const SUITE_PREFIX = 'plugin.sketch.' function isPresent (data) { return data != null } module.exports = { getUserPreferences: function (pluginName, defaultPrefs) { var prefs = {} var store = NSUserDefaults.alloc().initWithSuiteName(SUITE_PREFIX + pluginName) Object.keys(defaultPrefs).forEach(function (k) { if (typeof defaultPrefs[k] === 'boolean') { prefs[k] = isPresent(store.boolForKey(k)) ? Boolean(store.boolForKey(k)) : defaultPrefs[k] } else if (typeof defaultPrefs[k] === 'number') { prefs[k] = isPresent(store.doubleForKey(k)) ? store.doubleForKey(k) : defaultPrefs[k] } else if (typeof defaultPrefs[k] === 'string') { prefs[k] = isPresent(store.stringForKey(k)) ? '' + store.stringForKey(k) : defaultPrefs[k] } else if (Array.isArray(defaultPrefs[k])) { prefs[k] = store.arrayForKey(k) || defaultPrefs[k] } else { prefs[k] = store.dictionaryForKey(k) || defaultPrefs[k] } }) return prefs }, setUserPreferences: function (pluginName, prefs) { var store = NSUserDefaults.alloc().initWithSuiteName(SUITE_PREFIX + pluginName) Object.keys(prefs).forEach(function (k) { if (typeof prefs[k] === 'boolean') { store.setBool_forKey(prefs[k], k) } else if (typeof prefs[k] === 'number') { store.setDouble_forKey(prefs[k], k) } else { store.setObject_forKey(prefs[k], k) } }) store.synchronize() } }