diff --git a/src/contexts/UserAuthenticationContext.tsx b/src/contexts/UserAuthenticationContext.tsx index 3b8a7da..d0d4784 100644 --- a/src/contexts/UserAuthenticationContext.tsx +++ b/src/contexts/UserAuthenticationContext.tsx @@ -1,3 +1,4 @@ +import { loadAssetsAsync } from "@/utils/assetsCache"; import authenticateUser, { parseAuthicationErrors } from "@/utils/requests/authenticateUser"; import type { IuserInformations } from "@/utils/requests/types"; import getUserInformations, { @@ -234,6 +235,7 @@ export const UserAuthenticationContextProvider = ({ children }: { children: Reac log.debug("UserAuthenticationContext | App Startup | loading saved user data."); (async () => { try { + await loadAssetsAsync(); const authenticationData = await loadAuthenticationData(); const userInformations = await loadUserInformations(); if (authenticationData && userInformations) { diff --git a/src/utils/assetsCache.tsx b/src/utils/assetsCache.tsx new file mode 100644 index 0000000..28fa34d --- /dev/null +++ b/src/utils/assetsCache.tsx @@ -0,0 +1,35 @@ +// To load assets asynchronously + +import { Asset } from "expo-asset"; + +import { LOG } from "@logger"; + +const log = LOG.extend("assetsCache"); + +const PATH_TO_ASSETS_FOLDER = "../../assets"; + +const IMAGE_TO_CACHE = [ + require("../../assets/beasy_icon.png"), + require(`${PATH_TO_ASSETS_FOLDER}/beasy_splash.png`), + require(`${PATH_TO_ASSETS_FOLDER}/beasy_default.png`), + require(`${PATH_TO_ASSETS_FOLDER}/beasy_background.png`), +]; + +const cacheImages = () => { + return IMAGE_TO_CACHE.map((image) => { + log.verbose("cacheImages |", image); + return Asset.fromModule(image).downloadAsync(); + }); +}; + +export const cacheAssetsAsync = () => { + return Promise.all([...cacheImages()]); +}; + +export const loadAssetsAsync = async () => { + try { + await cacheAssetsAsync(); + } catch (error) { + log.error("loadAssetsAsync |", error); + } +};