magic: added a way for running async functions in the top level jsx code
This commit is contained in:
+11
-5
@@ -1,20 +1,26 @@
|
||||
import renderToString from 'preact-render-to-string'
|
||||
// import { App } from './App'
|
||||
import { MetadataContext, ServerContext } from './hooks'
|
||||
import { ServerAsyncCallbacksContext, DatabaseContext, MetadataContext, ServerContext } from './hooks'
|
||||
|
||||
import { RenderedPage } from '../shared/ssr'
|
||||
import { RenderedPage, ServerAsyncCallback } from '../shared/ssr'
|
||||
import { App } from './App'
|
||||
import { DatabaseConnection } from '../shared/database'
|
||||
|
||||
export default (url: string): RenderedPage => {
|
||||
export default (url: string, db: DatabaseConnection): RenderedPage => {
|
||||
const metadata = {}
|
||||
const asyncCallbacks: ServerAsyncCallback[] = []
|
||||
|
||||
const html = renderToString(
|
||||
<MetadataContext.Provider value={metadata}>
|
||||
<ServerContext.Provider value={true}>
|
||||
<App url={url} />
|
||||
<DatabaseContext.Provider value={db}>
|
||||
<ServerAsyncCallbacksContext.Provider value={asyncCallbacks}>
|
||||
<App url={url} />
|
||||
</ServerAsyncCallbacksContext.Provider>
|
||||
</DatabaseContext.Provider>
|
||||
</ServerContext.Provider>
|
||||
</MetadataContext.Provider>
|
||||
)
|
||||
|
||||
return { html, metadata }
|
||||
return { html, metadata, asyncCallbacks }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user