Modificado o Storage para ser um singleton

This commit is contained in:
Gustavo Henrique Santos Souza de Miranda 2025-03-18 16:57:24 -03:00
parent b37294e5a8
commit 296727ead2
3 changed files with 73 additions and 9 deletions

View File

@ -8,6 +8,7 @@
"name": "tracker",
"version": "1.0.0",
"dependencies": {
"@react-native-async-storage/async-storage": "^2.1.2",
"@react-navigation/native": "^7.0.15",
"@react-navigation/stack": "^7.1.2",
"expo": "~52.0.38",
@ -15,7 +16,7 @@
"expo-status-bar": "~2.0.1",
"react": "18.3.1",
"react-native": "0.76.7",
"react-native-maps": "^1.20.1"
"react-native-maps": "1.18.0"
},
"devDependencies": {
"@babel/core": "^7.20.0"
@ -3198,6 +3199,17 @@
"node": ">=14"
}
},
"node_modules/@react-native-async-storage/async-storage": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.1.2.tgz",
"integrity": "sha512-dvlNq4AlGWC+ehtH12p65+17V0Dx7IecOWl6WanF2ja38O1Dcjjvn7jVzkUHJ5oWkQBlyASurTPlTHgKXyYiow==",
"dependencies": {
"merge-options": "^3.0.4"
},
"peerDependencies": {
"react-native": "^0.0.0-0 || >=0.65 <1.0"
}
},
"node_modules/@react-native/assets-registry": {
"version": "0.76.7",
"resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.76.7.tgz",
@ -3779,8 +3791,7 @@
"node_modules/@types/geojson": {
"version": "7946.0.16",
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz",
"integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==",
"license": "MIT"
"integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="
},
"node_modules/@types/graceful-fs": {
"version": "4.1.9",
@ -5533,7 +5544,6 @@
"version": "52.0.39",
"resolved": "https://registry.npmjs.org/expo/-/expo-52.0.39.tgz",
"integrity": "sha512-EOnrgj8MHSt0o0SIBhM7jCim2QpJJNonbSATn9LqNtVgKtotIg718G/OrP5/g0GUAOBDyxHH9PfNu/aq9c0vDw==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.20.0",
"@expo/cli": "0.22.20",
@ -6603,6 +6613,14 @@
"node": ">=8"
}
},
"node_modules/is-plain-obj": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
"integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
"engines": {
"node": ">=8"
}
},
"node_modules/is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@ -7489,6 +7507,17 @@
"integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==",
"license": "MIT"
},
"node_modules/merge-options": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz",
"integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==",
"dependencies": {
"is-plain-obj": "^2.1.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@ -9140,10 +9169,9 @@
}
},
"node_modules/react-native-maps": {
"version": "1.20.1",
"resolved": "https://registry.npmjs.org/react-native-maps/-/react-native-maps-1.20.1.tgz",
"integrity": "sha512-NZI3B5Z6kxAb8gzb2Wxzu/+P2SlFIg1waHGIpQmazDSCRkNoHNY4g96g+xS0QPSaG/9xRBbDNnd2f2/OW6t6LQ==",
"license": "MIT",
"version": "1.18.0",
"resolved": "https://registry.npmjs.org/react-native-maps/-/react-native-maps-1.18.0.tgz",
"integrity": "sha512-S17nYUqeMptgIPaAZuVRo+eRelPreBBYQWw6jsxU7qQ12p+THSfFaqabcNn7fBmsXhT3T27iIl8ek8v1H8BaGw==",
"dependencies": {
"@types/geojson": "^7946.0.13"
},

View File

@ -9,6 +9,7 @@
"web": "expo start --web"
},
"dependencies": {
"@react-native-async-storage/async-storage": "^2.1.2",
"@react-navigation/native": "^7.0.15",
"@react-navigation/stack": "^7.1.2",
"expo": "~52.0.38",
@ -16,7 +17,7 @@
"expo-status-bar": "~2.0.1",
"react": "18.3.1",
"react-native": "0.76.7",
"react-native-maps": "^1.20.1"
"react-native-maps": "1.18.0"
},
"devDependencies": {
"@babel/core": "^7.20.0"

View File

@ -0,0 +1,35 @@
import AsyncStorage from "@react-native-async-storage/async-storage"
export default class Storage{
static #instance;
constructor(){
if (Storage.#instance){
throw new Error("Use the The getInstanceMethod instead of new")
}
}
static getInstance(){
if (!Storage.#instance){
Storage.#instance = new Storage
}
return Storage.#instance
}
async listData(){
const data = await AsyncStorage.multiGet(await this.getKeys())
return data
}
async getKeys(){
const keys = await AsyncStorage.getAllKeys()
return keys;
}
async saveData(index,content){
await AsyncStorage.setItem(index.toString(),JSON.stringify(content))
}
}