mirror of
https://github.com/expo/appjs25-eas-update-workshop-code.git
synced 2026-11-14 17:48:09 -10:00
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
/* for bypassing API Routes and just saving data inside your app's local storage */
|
|
|
|
import AsyncStorage from "@react-native-async-storage/async-storage";
|
|
import { keys } from "lodash";
|
|
|
|
const storage = {
|
|
async getItem(key: string) {
|
|
const value = await AsyncStorage.getItem(key);
|
|
return value ? JSON.parse(value) : null;
|
|
},
|
|
async setItem(key: string, value: any) {
|
|
return AsyncStorage.setItem(key, JSON.stringify(value));
|
|
},
|
|
};
|
|
|
|
const artwork = require("@/data/api/cma_artwork.json");
|
|
|
|
class LocalDatabase {
|
|
async getFavorites() {
|
|
const favs = (await storage.getItem("favs")) || {};
|
|
return keys(favs)
|
|
.filter((favsKey) => favs[favsKey])
|
|
.map((id) => ({
|
|
id,
|
|
image: artwork.data.find((item: any) => item.id === id).images.web.url,
|
|
}));
|
|
}
|
|
|
|
async getFavoriteStatus(id: string) {
|
|
const favs = (await storage.getItem("favs")) || {};
|
|
return !!favs[id];
|
|
}
|
|
|
|
async setFavoriteStatus(id: string, fav: boolean) {
|
|
const favs = (await storage.getItem("favs")) || {};
|
|
favs[id] = fav;
|
|
await storage.setItem("favs", favs);
|
|
}
|
|
}
|
|
|
|
export { LocalDatabase };
|