1import Ionicons from '@expo/vector-icons/build/Ionicons';
2import MaterialIcons from '@expo/vector-icons/build/MaterialIcons';
3import { Assets as StackAssets } from '@react-navigation/elements';
4import { Asset } from 'expo-asset';
5import * as Font from 'expo-font';
6import { Platform } from 'react-native';
7
8async function loadAssetsAsync() {
9  const assetPromises: Promise<any>[] = [
10    Asset.loadAsync(StackAssets),
11    Font.loadAsync(Ionicons.font),
12    Font.loadAsync(MaterialIcons.font),
13    Font.loadAsync({
14      'space-mono': require('../../assets/fonts/SpaceMono-Regular.ttf'),
15    }),
16  ];
17  if (Platform.OS !== 'web') {
18    assetPromises.push(
19      Font.loadAsync({
20        Roboto: 'https://github.com/google/fonts/raw/d1a2e0f/ofl/roboto/static/Roboto-Regular.ttf',
21      })
22    );
23  }
24  await Promise.all(assetPromises);
25}
26
27let oncePromise: Promise<void>;
28export default function loadAssetsAsyncOnce() {
29  oncePromise = oncePromise || loadAssetsAsync();
30  return oncePromise;
31}
32