Application Android et IOS pour l'amicale des élèves
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AsyncStorageManager.js 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // @flow
  2. import {AsyncStorage} from "react-native";
  3. /**
  4. * Static class used to manage preferences
  5. */
  6. export default class AsyncStorageManager {
  7. static instance: AsyncStorageManager | null = null;
  8. /**
  9. * Get this class instance or create one if none is found
  10. * @returns {ThemeManager}
  11. */
  12. static getInstance(): AsyncStorageManager {
  13. return AsyncStorageManager.instance === null ?
  14. AsyncStorageManager.instance = new AsyncStorageManager() :
  15. AsyncStorageManager.instance;
  16. }
  17. preferences = {
  18. proxiwashNotifications: {
  19. key: 'proxiwashNotifications',
  20. default: '5',
  21. current : '',
  22. },
  23. proxiwashWatchedMachines : {
  24. key: 'proxiwashWatchedMachines',
  25. default: '[]',
  26. current : '',
  27. },
  28. nightMode: {
  29. key: 'nightMode',
  30. default : '0',
  31. current : '',
  32. }
  33. };
  34. async loadPreferences() {
  35. let prefKeys = [];
  36. // Get all available keys
  37. for (let [key, value] of Object.entries(this.preferences)) {
  38. prefKeys.push(value.key);
  39. }
  40. // Get corresponding values
  41. let resultArray : Array<Array<string>> = await AsyncStorage.multiGet(prefKeys);
  42. // Save those values for later use
  43. for (let i = 0; i < resultArray.length; i++) {
  44. let key : string = resultArray[i][0];
  45. let val : string | null = resultArray[i][1];
  46. if (val === null)
  47. val = this.preferences[key].default;
  48. this.preferences[key].current = val;
  49. }
  50. }
  51. savePref(key : string, val : string) {
  52. this.preferences[key].current = val;
  53. AsyncStorage.setItem(key, val);
  54. }
  55. }