Files

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 };