diff --git a/tests/app/application-settings/application-settings-tests.ts b/tests/app/application-settings/application-settings-tests.ts index 1840b7d14..1d2c85064 100644 --- a/tests/app/application-settings/application-settings-tests.ts +++ b/tests/app/application-settings/application-settings-tests.ts @@ -112,6 +112,17 @@ export var testFlush = function () { TKUnit.assert(appSettings.hasKey(stringKey), "There is no key: " + stringKey); }; +export var testAllKeys = function () { + appSettings.setString(stringKey, "String value"); + appSettings.setBoolean(boolKey, true); + appSettings.setNumber(numberKey, 22); + + var allKeys = appSettings.getAllKeys(); + TKUnit.assert(allKeys.indexOf(stringKey) !== -1, `${stringKey} is missing from .allKeys()`); + TKUnit.assert(allKeys.indexOf(boolKey) !== -1, `${boolKey} is missing from .allKeys()`); + TKUnit.assert(allKeys.indexOf(numberKey) !== -1, `${numberKey} is missing from .allKeys()`); +} + export var testInvalidKey = function () { try { appSettings.hasKey(undefined); diff --git a/tns-core-modules/application-settings/application-settings.android.ts b/tns-core-modules/application-settings/application-settings.android.ts index 7463d0675..ccd9e0e27 100644 --- a/tns-core-modules/application-settings/application-settings.android.ts +++ b/tns-core-modules/application-settings/application-settings.android.ts @@ -83,3 +83,15 @@ export function clear(): void { export var flush = function (): boolean { return sharedPreferences.edit().commit(); } + +export function getAllKeys(): Array { + var mappedPreferences = sharedPreferences.getAll(); + var iterator = mappedPreferences.keySet().iterator(); + var result = []; + while (iterator.hasNext()) { + let key = iterator.next(); + result.push(key); + } + + return result; +} diff --git a/tns-core-modules/application-settings/application-settings.d.ts b/tns-core-modules/application-settings/application-settings.d.ts index 12facde11..db42e213c 100644 --- a/tns-core-modules/application-settings/application-settings.d.ts +++ b/tns-core-modules/application-settings/application-settings.d.ts @@ -67,3 +67,9 @@ export function clear(): void; * @return {boolean} flag indicating if changes were saved successfully to disk. */ export function flush(): boolean; + +/** + * Get all stored keys + * @return Array containing all stored keys + */ +export function getAllKeys(): Array; diff --git a/tns-core-modules/application-settings/application-settings.ios.ts b/tns-core-modules/application-settings/application-settings.ios.ts index 57e7a19d4..3fbfc9db8 100644 --- a/tns-core-modules/application-settings/application-settings.ios.ts +++ b/tns-core-modules/application-settings/application-settings.ios.ts @@ -65,3 +65,7 @@ export var clear = function (): void { export var flush = function (): boolean { return userDefaults.synchronize(); } + +export function getAllKeys(): Array { + return utils.ios.collections.nsArrayToJSArray(userDefaults.dictionaryRepresentation().allKeys); +}