1753d67752
Co-authored-by: David Rodenkirchen <drodenkirchen@linetco.com> Reviewed-on: #1
69 lines
2.6 KiB
Python
69 lines
2.6 KiB
Python
from __future__ import annotations
|
|
|
|
import logging
|
|
from asyncio import sleep
|
|
|
|
from rio import Component, Column, Row, Text, Spacer, page, Rectangle, QueryParameter, ProgressCircle
|
|
from rio.event import on_populate
|
|
|
|
from elm.services import AccountingService
|
|
|
|
logger = logging.getLogger(__name__.split(".")[-1])
|
|
|
|
@page(name="PayPal Return", url_segment="return-paypal")
|
|
class PayPalReturnPage(Component):
|
|
token: QueryParameter[str] = "No Value"
|
|
in_progress: bool = True
|
|
error_message: str = ""
|
|
success_message: str = ""
|
|
|
|
@on_populate
|
|
async def on_populate(self) -> None:
|
|
result = await self.session[AccountingService].finalize_paypal_process(self.token)
|
|
await sleep(1)
|
|
if result:
|
|
self.in_progress = False
|
|
self.success_message = "Aufladung erfolgreich. Du kannst dieses Fenster schließen."
|
|
else:
|
|
self.in_progress = False
|
|
self.error_message = "Es ist ein Fehler aufgetreten, bitte kontaktiere uns"
|
|
|
|
def build(self) -> Component:
|
|
col_contents = []
|
|
if self.in_progress:
|
|
col_contents.append(ProgressCircle(min_size=5, color=self.session.theme.primary_color))
|
|
col_contents.append(Text("Wir prüfen deine Aufladung", overflow="wrap", justify="center"))
|
|
else:
|
|
if self.error_message:
|
|
col_contents.append(Text(self.error_message, overflow="wrap", justify="center", fill=self.session.theme.danger_color))
|
|
elif self.success_message:
|
|
col_contents.append(Text(self.success_message, overflow="wrap", justify="center", fill=self.session.theme.success_color))
|
|
|
|
return Row(
|
|
Rectangle(
|
|
content=Column(
|
|
Rectangle(
|
|
content=Rectangle(
|
|
content=Text("Paypal Aufladung", margin=0.5, selectable=False, overflow="wrap"),
|
|
fill=self.session.theme.header_box_background_color,
|
|
margin=0.4
|
|
),
|
|
stroke_width=0.1,
|
|
stroke_color=self.session.theme.box_border_color,
|
|
),
|
|
Column(
|
|
*col_contents,
|
|
margin=1,
|
|
spacing=1
|
|
),
|
|
Spacer()
|
|
),
|
|
fill=self.session.theme.box_color,
|
|
stroke_width=0.1,
|
|
stroke_color=self.session.theme.box_border_color,
|
|
min_width=1 if self.session.is_mobile() else 25
|
|
),
|
|
align_x=0.5,
|
|
align_y=0.5
|
|
)
|