fix(stats): Detect finished UI on submit.
This commit is contained in:
@@ -483,12 +483,16 @@ class WeeklyMonthlyUI(StatsUI):
|
||||
).with_connection(conn)
|
||||
|
||||
if modified:
|
||||
# Check whether the UI finished while we were interacting
|
||||
if not self._stopped.done():
|
||||
# If either goal type was modified, clear the rendered cache and refresh
|
||||
for page_key, (goalf, statf) in self._card_cache.items():
|
||||
# If the stat period type is the same as the current period type
|
||||
if page_key[2].period is self._stat_page.period:
|
||||
self._card_cache[page_key] = (None, statf)
|
||||
await self.refresh(thinking=interaction)
|
||||
else:
|
||||
await interaction.delete_original_response()
|
||||
await press.response.send_modal(modal)
|
||||
|
||||
async def edit_button_refresh(self):
|
||||
|
||||
@@ -48,6 +48,16 @@ class LeoUI(View):
|
||||
# TODO: Replace this with a substitutable ViewLayout class
|
||||
self._layout: Optional[tuple[tuple[Item, ...], ...]] = None
|
||||
|
||||
@property
|
||||
def _stopped(self) -> asyncio.Future:
|
||||
"""
|
||||
Return an future indicating whether the View has finished interacting.
|
||||
|
||||
Currently exposes a hidden attribute of the underlying View.
|
||||
May be reimplemented in future.
|
||||
"""
|
||||
return self._View__stopped
|
||||
|
||||
def to_components(self) -> List[Dict[str, Any]]:
|
||||
"""
|
||||
Extending component generator to apply the set _layout, if it exists.
|
||||
|
||||
Reference in New Issue
Block a user