UNPKG

nativescript-akylas-preferences

Version:

Common API to allow users to use native (familiar) app settings screens instead of having to craft custom UIs

81 lines 3.41 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.Preferences = void 0; var preferences_common_1 = require("./preferences.common"); var app = require("@nativescript/core/application"); var ObserverClass = NSObject.extend({ observeValueForKeyPathOfObjectChangeContext: function (path) { var owner = this.owner; if (owner) { owner.notify({ eventName: 'key:' + path, object: owner, }); } }, }, {}); var Preferences = (function (_super) { __extends(Preferences, _super); function Preferences() { var _this = _super.call(this) || this; _this.userDefaults = NSUserDefaults.standardUserDefaults; _this.registered = false; app.ios.addNotificationObserver(NSUserDefaultsDidChangeNotification, function () { _this.notify({ eventName: 'change', object: _this, }); }); return _this; } Preferences.prototype.setValue = function (key, value) { this.userDefaults.setValueForKey(value, key); }; Preferences.prototype.getValue = function (key) { var standardUserDefaults = NSUserDefaults.standardUserDefaults; var us = standardUserDefaults.objectForKey(key); if (us == null) { this.registerDefaultsFromSettingsBundle(); } return this.userDefaults.objectForKey(key); }; Preferences.prototype.onListenerAdded = function (eventName, count) { if (eventName.startsWith('key:')) { var key = eventName.replace('key:', ''); if (!this._observer) { this._observer = ObserverClass.alloc().init(); this._observer['owner'] = this; } this.userDefaults.addObserverForKeyPathOptionsContext(this._observer, key, 1, null); } }; Preferences.prototype.onListenerRemoved = function (eventName, count) { }; Preferences.prototype.openSettings = function () { UIApplication.sharedApplication.openURL(NSURL.URLWithString(UIApplicationOpenSettingsURLString)); }; Preferences.prototype.clear = function () { }; Preferences.prototype.registerDefaultsFromSettingsBundle = function () { if (this.registered) { return; } this.registered = true; var settingsPath = NSBundle.mainBundle.pathForResourceOfType('Settings', 'bundle'); var settingsBundle = NSString.stringWithString(settingsPath); var rootPath = settingsBundle.stringByAppendingPathComponent('Root.plist'); var settings = NSDictionary.dictionaryWithContentsOfFile(rootPath); var preferences = settings.objectForKey('PreferenceSpecifiers'); var prefs = preferences.count; var defaultsToRegister = NSMutableDictionary.alloc().initWithCapacity(prefs); for (var i = 0; i < prefs; i++) { var prefSpecification = preferences.objectAtIndex(i); var key = prefSpecification.objectForKey('Key'); if (key) { defaultsToRegister.setObjectForKey('', key); } } this.userDefaults.registerDefaults(defaultsToRegister); this.userDefaults.synchronize(); }; return Preferences; }(preferences_common_1.Common)); exports.Preferences = Preferences; //# sourceMappingURL=preferences.ios.js.map