fix(island): 🐛 transpilation cause Suspense
to broke promise as children
This commit is contained in:
parent
f24143964f
commit
c6eb438314
|
@ -13,8 +13,7 @@ export function AutoGrid(
|
|||
<div
|
||||
class='components__auto_grid'
|
||||
style={{
|
||||
gridTemplateColumns:
|
||||
`repeat(auto-fit, minmax(${columnWidth}, 1fr));`,
|
||||
gridTemplateColumns: `repeat(auto-fit, minmax(${columnWidth}, 1fr));`,
|
||||
...style,
|
||||
}}
|
||||
>
|
||||
|
|
|
@ -69,9 +69,7 @@ export function BlogPost(
|
|||
<div class='components__blog_post__infos'>
|
||||
<span>{`Visibilité : ${options.visibility}`}</span>
|
||||
<span>
|
||||
{`Date de délivrance : ${
|
||||
new Date(options.dueDate).toLocaleString()
|
||||
}`}
|
||||
{`Date de délivrance : ${new Date(options.dueDate).toLocaleString()}`}
|
||||
</span>
|
||||
</div>
|
||||
<div class='components__blog_post__description'>
|
||||
|
@ -90,9 +88,7 @@ export function BlogPost(
|
|||
function NewsTags({ tags }: Pick<BlogProps, 'tags'>) {
|
||||
return (
|
||||
<div class='components__blog_block__tags'>
|
||||
{tags
|
||||
? tags.map((tag) => <span>{tag}</span>)
|
||||
: <span>Aucun tag</span>}
|
||||
{tags ? tags.map((tag) => <span>{tag}</span>) : <span>Aucun tag</span>}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -54,9 +54,8 @@ export default function CardList<ApiResponse, RefType = null>(
|
|||
loader={placeholder({ ref: index === 0 ? ref : undefined })}
|
||||
fallback={fallback}
|
||||
signal={ac.signal}
|
||||
>
|
||||
{updateFromList(list, index)}
|
||||
</Suspense>
|
||||
value={updateFromList(list, index)}
|
||||
/>
|
||||
))
|
||||
return <>{placeholders}</>
|
||||
}
|
||||
|
|
|
@ -18,13 +18,14 @@ function RenderError(
|
|||
|
||||
export type Fallback = ({ error }: { error: Error }) => JSX.Element
|
||||
|
||||
export default function Suspense(
|
||||
{ loader, fallback, signal, children }: {
|
||||
export type SuspenseProps = {
|
||||
loader: JSX.Element
|
||||
children: Promise<JSX.Element>
|
||||
fallback?: Fallback
|
||||
signal?: AbortSignal
|
||||
},
|
||||
} & ({ children: Promise<JSX.Element> } | { value: Promise<JSX.Element> })
|
||||
|
||||
export default function Suspense(
|
||||
{ loader, fallback, signal, ...props }: SuspenseProps,
|
||||
) {
|
||||
const displayed = useSignal(loader)
|
||||
let loaded = false
|
||||
|
@ -38,7 +39,9 @@ export default function Suspense(
|
|||
}
|
||||
})
|
||||
|
||||
children
|
||||
//Prevent transpilation error due to children expected to not be a promise
|
||||
const inner = 'value' in props ? props.value : props.children
|
||||
inner
|
||||
.then((element) => {
|
||||
if (signal?.aborted) return
|
||||
displayed.value = element
|
||||
|
|
|
@ -2,7 +2,12 @@ import { db } from ':src/db/mod.ts'
|
|||
import type { SessionHandlers } from ':src/session/mod.ts'
|
||||
import { respondApi } from ':src/utils.ts'
|
||||
import { getRelyingParty } from ':src/webauthn/mod.ts'
|
||||
import { Credential, Passkey, Ref, User } from '@cohabit/resources-manager/models'
|
||||
import {
|
||||
Credential,
|
||||
Passkey,
|
||||
Ref,
|
||||
User,
|
||||
} from '@cohabit/resources-manager/models'
|
||||
import {
|
||||
generateAuthenticationOptions,
|
||||
verifyAuthenticationResponse,
|
||||
|
|
|
@ -12,7 +12,12 @@ import type {
|
|||
//TODO improve workspace imports
|
||||
import { db } from ':src/db/mod.ts'
|
||||
import { getRelyingParty } from ':src/webauthn/mod.ts'
|
||||
import { Credential, Passkey, Ref, User } from '@cohabit/resources-manager/models'
|
||||
import {
|
||||
Credential,
|
||||
Passkey,
|
||||
Ref,
|
||||
User,
|
||||
} from '@cohabit/resources-manager/models'
|
||||
import { encodeBase64 } from '@std/encoding'
|
||||
|
||||
type Params = { step: 'start' | 'finish' }
|
||||
|
|
|
@ -29,9 +29,8 @@ export default function Home() {
|
|||
<section>
|
||||
<h2>Nos machines</h2>
|
||||
<p>
|
||||
Vous avez besoin d'aide pour concrétiser votre projet ? Le
|
||||
Fablab vous accompagnes dans vos projets, grâce à son parc
|
||||
de machine...
|
||||
Vous avez besoin d'aide pour concrétiser votre projet ? Le Fablab vous
|
||||
accompagnes dans vos projets, grâce à son parc de machine...
|
||||
</p>
|
||||
<AutoGrid columnWidth='15rem' style={{ alignItems: 'center' }}>
|
||||
<>
|
||||
|
@ -63,29 +62,26 @@ export default function Home() {
|
|||
<section>
|
||||
<h2>Présentation</h2>
|
||||
<p>
|
||||
Coh@bit est un fablab de l'université de Bordeaux ouvert à
|
||||
tous les publics depuis 2016. Du collégien à
|
||||
l'enseignant-chercheur, l'équipe du fablab accompagne les
|
||||
adhérents dans la réalisation de leurs projets de
|
||||
fabrication autour du numérique.
|
||||
Coh@bit est un fablab de l'université de Bordeaux ouvert à tous les
|
||||
publics depuis 2016. Du collégien à l'enseignant-chercheur, l'équipe
|
||||
du fablab accompagne les adhérents dans la réalisation de leurs
|
||||
projets de fabrication autour du numérique.
|
||||
</p>
|
||||
<p>
|
||||
Venez découvrir un tout nouvelle univers où vous pouvez
|
||||
concrétiser vos projet, découvrir des personnes avec les
|
||||
même affinités que vous, cultiver votre savoir et savoir
|
||||
faire, dans l'entraide et le partage.
|
||||
Venez découvrir un tout nouvelle univers où vous pouvez concrétiser
|
||||
vos projet, découvrir des personnes avec les même affinités que vous,
|
||||
cultiver votre savoir et savoir faire, dans l'entraide et le partage.
|
||||
</p>
|
||||
<p>
|
||||
Créer par Frédéric Bos (Directeur de l'IUT de Bordeaux) en
|
||||
2014, Coh@bit (Creative Open House at Bordeaux Institut of
|
||||
Technology) est une association réunissant deux entités : le
|
||||
Fablab et le Technoshop.
|
||||
Créer par Frédéric Bos (Directeur de l'IUT de Bordeaux) en 2014,
|
||||
Coh@bit (Creative Open House at Bordeaux Institut of Technology) est
|
||||
une association réunissant deux entités : le Fablab et le Technoshop.
|
||||
</p>
|
||||
<p>
|
||||
Ouvert à tous les publics depuis 2016, allant de
|
||||
l'enseignant-chercheur au collégien, l'équipe du fablab
|
||||
accompagne les adhérents dans la réalisation de leurs
|
||||
projets de fabrication numérique.
|
||||
l'enseignant-chercheur au collégien, l'équipe du fablab accompagne les
|
||||
adhérents dans la réalisation de leurs projets de fabrication
|
||||
numérique.
|
||||
</p>
|
||||
<CohabitInfoTable />
|
||||
</section>
|
||||
|
|
|
@ -75,9 +75,7 @@ async function getAuthorAndParseContent(
|
|||
`git/commits/${file.last_commit_sha}?stat=false&verification=false&files=false`,
|
||||
baseEndpoint,
|
||||
)
|
||||
const infos = await fetch(commitUrl).then((response) =>
|
||||
response.json()
|
||||
) as {
|
||||
const infos = await fetch(commitUrl).then((response) => response.json()) as {
|
||||
created: string
|
||||
author: { login: string }
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@ import type { MailAddress } from '@cohabit/resources-manager/types'
|
|||
// Import Datas
|
||||
import { exists } from '$std/fs/exists.ts'
|
||||
import { ensureDir } from '$std/fs/mod.ts'
|
||||
import groups from ":src/db/mock/groups.json" with { type: 'json' }
|
||||
import users from ":src/db/mock/users.json" with { type: 'json' }
|
||||
import groups from ':src/db/mock/groups.json' with { type: 'json' }
|
||||
import users from ':src/db/mock/users.json' with { type: 'json' }
|
||||
|
||||
await ensureDir('./cache')
|
||||
const dbPath = './cache/db.sqlite'
|
||||
|
|
Loading…
Reference in a new issue