Extract URL loader component

This commit is contained in:
He4eT 2021-02-24 23:04:41 +05:00
commit eb8025791b
3 changed files with 37 additions and 21 deletions

View file

@ -4,8 +4,8 @@
import { engineByFilename } from '~/src/common/engines'
export const prepareVM = ({ url, setStatus, setVM }) => _ => {
const st = (step, details) => args => {
setStatus({ step, details })
const st = (stage, details) => args => {
setStatus({ stage, details })
return args
}
@ -23,7 +23,7 @@ export const prepareVM = ({ url, setStatus, setVM }) => _ => {
.then(st('loading', 'Running...'))
.catch(e => {
console.error(e)
setStatus({ level: 'fail', details: e.message })
setStatus({ stage: 'fail', details: e.message })
})
}

View file

@ -0,0 +1,32 @@
import { h } from 'preact'
import { useState, useEffect } from 'preact/hooks'
import { prepareVM } from '~/src/common/if'
const INITIAL_STATUS = {
stage: 'loading',
details: 'Loading...'
}
export default function ({url}) {
console.log(123, url)
const [status, setStatus] = useState(INITIAL_STATUS)
const [vm, setVM] = useState(null)
useEffect(prepareVM({
url,
setStatus,
setVM
}), [url])
useEffect(() => {
if (vm) console.log('success', vm)
}, [vm])
return (
<main>
{url}
{status.details}
</main>)
}

View file

@ -1,31 +1,15 @@
import { h } from 'preact'
import { useState, useEffect } from 'preact/hooks'
import { prepareVM } from '~/src/common/if'
const INITIAL_STATUS = {
level: 'loading',
details: 'Loading...'
}
import UrlPlayer from '~/src/components/player/UrlPlayer'
export default function ({setTheme, theme, encodedUrl}) {
const [url] = useState(decodeURIComponent(encodedUrl))
const [status, setStatus] = useState(INITIAL_STATUS)
const [vm, setVM] = useState(null)
useEffect(() => setTheme(theme), [theme])
useEffect(prepareVM({
url,
setStatus,
setVM
}), [url])
useEffect(() => {
if (vm) console.log('success', vm)
}, [vm])
return (
<main>
{status.details}
<UrlPlayer url={url} />
</main>)
}