subtracks/src/components/SplashPage.tsx
austinried ee7658ccf8 upgrade rntp to 2.0.0-rc16
...but it was broken for adding tracks before current
so there's a PR open for that now and a local fix installed
2021-07-01 10:21:01 +09:00

82 lines
2.0 KiB
TypeScript

import React, { useEffect, useState } from 'react';
import { Text, View } from 'react-native';
import RNFS from 'react-native-fs';
import TrackPlayer, { Capability, Track } from 'react-native-track-player';
import paths from '../paths';
async function mkdir(path: string): Promise<void> {
const exists = await RNFS.exists(path);
if (exists) {
const isDir = (await RNFS.stat(path)).isDirectory();
if (!isDir) {
throw new Error(`path exists and is not a directory: ${path}`);
} else {
return;
}
}
return await RNFS.mkdir(path);
}
const SplashPage: React.FC<{}> = ({ children }) => {
const [ready, setReady] = useState(false);
const minSplashTime = new Promise(resolve => setTimeout(resolve, 1));
const prepare = async () => {
await mkdir(paths.imageCache);
await mkdir(paths.songCache);
await mkdir(paths.songs);
await TrackPlayer.setupPlayer();
TrackPlayer.updateOptions({
capabilities: [
Capability.Play,
Capability.Pause,
Capability.Stop,
Capability.SkipToNext,
Capability.SkipToPrevious,
],
compactCapabilities: [
Capability.Play,
Capability.Pause,
Capability.SkipToNext,
Capability.SkipToPrevious,
],
});
const castlevania: Track = {
id: 'castlevania',
url: 'http://www.vgmuseum.com/mrp/cv1/music/03.mp3',
title: 'Stage 1: Castle Entrance',
artist: 'Kinuyo Yamashita and S.Terishima',
duration: 110,
artwork: 'https://webgames.host/uploads/2017/03/castlevania-3-draculas-curse.jpg',
genre: 'BGM',
date: new Date(1989, 1).toISOString(),
}
await TrackPlayer.add([castlevania]);
// TrackPlayer.play();
}
const promise = Promise.all([
prepare(), minSplashTime,
]);
useEffect(() => {
promise.then(() => {
setReady(true);
});
})
if (!ready) {
return <Text>Loading THE GOOD SHIT...</Text>
}
return (
<View style={{ flex: 1 }}>{children}</View>
);
}
export default SplashPage;