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
JavaScript
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