Handle non-async middleware (#790)
This commit is contained in:
parent
e96f1c4d39
commit
ae49759f1e
@ -1,5 +1,6 @@
|
|||||||
"""The main Pynecone app."""
|
"""The main Pynecone app."""
|
||||||
|
|
||||||
|
import asyncio
|
||||||
import inspect
|
import inspect
|
||||||
from typing import Any, Callable, Coroutine, Dict, List, Optional, Tuple, Type, Union
|
from typing import Any, Callable, Coroutine, Dict, List, Optional, Tuple, Type, Union
|
||||||
|
|
||||||
@ -167,9 +168,12 @@ class App(Base):
|
|||||||
An optional state to return.
|
An optional state to return.
|
||||||
"""
|
"""
|
||||||
for middleware in self.middleware:
|
for middleware in self.middleware:
|
||||||
out = await middleware.preprocess(app=self, state=state, event=event)
|
if asyncio.iscoroutinefunction(middleware.preprocess):
|
||||||
|
out = await middleware.preprocess(app=self, state=state, event=event)
|
||||||
|
else:
|
||||||
|
out = middleware.preprocess(app=self, state=state, event=event)
|
||||||
if out is not None:
|
if out is not None:
|
||||||
return out
|
return out # type: ignore
|
||||||
|
|
||||||
async def postprocess(
|
async def postprocess(
|
||||||
self, state: State, event: Event, delta: Delta
|
self, state: State, event: Event, delta: Delta
|
||||||
@ -191,11 +195,16 @@ class App(Base):
|
|||||||
An optional state to return.
|
An optional state to return.
|
||||||
"""
|
"""
|
||||||
for middleware in self.middleware:
|
for middleware in self.middleware:
|
||||||
out = await middleware.postprocess(
|
if asyncio.iscoroutinefunction(middleware.postprocess):
|
||||||
app=self, state=state, event=event, delta=delta
|
out = await middleware.postprocess(
|
||||||
)
|
app=self, state=state, event=event, delta=delta
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
out = middleware.postprocess(
|
||||||
|
app=self, state=state, event=event, delta=delta
|
||||||
|
)
|
||||||
if out is not None:
|
if out is not None:
|
||||||
return out
|
return out # type: ignore
|
||||||
|
|
||||||
def add_middleware(self, middleware: Middleware, index: Optional[int] = None):
|
def add_middleware(self, middleware: Middleware, index: Optional[int] = None):
|
||||||
"""Add middleware to the app.
|
"""Add middleware to the app.
|
||||||
|
Loading…
Reference in New Issue
Block a user