Source code for bauiv1lib.store.newstore

# Released under the MIT License. See LICENSE for details.
#
"""Shiny new doc-ui based store."""

from __future__ import annotations

from typing import override, TYPE_CHECKING

from bauiv1lib.docui import DocUIController

import bauiv1 as bui

if TYPE_CHECKING:
    from bacommon.docui import DocUIRequest, DocUIResponse

    from bauiv1lib.docui import DocUILocalAction


[docs] class StoreUIController(DocUIController): """DocUI setup for store."""
[docs] @override def fulfill_request(self, request: DocUIRequest) -> DocUIResponse: return self.fulfill_request_cloud(request, 'classicstore')
[docs] @override def local_action(self, action: DocUILocalAction) -> None: if action.name == 'get_tokens': self._get_tokens(action) elif action.name == 'restore_purchases': self._restore_purchases() else: bui.screenmessage( f'Invalid local-action "{action.name}".', color=(1, 0, 0) ) bui.getsound('error').play()
def _restore_purchases(self) -> None: plus = bui.app.plus assert plus is not None # We should always be signed in here. Make noise if not. if plus.accounts.primary is None: bui.screenmessage( bui.Lstr(resource='notSignedInText'), color=(1, 0, 0) ) bui.getsound('error').play() return plus.restore_purchases() def _get_tokens(self, action: DocUILocalAction) -> None: from bauiv1lib.gettokens import show_get_tokens_window bui.getsound('swish').play() show_get_tokens_window(origin_widget=bui.existing(action.widget))
# Docs-generation hack; import some stuff that we likely only forward-declared # in our actual source code so that docs tools can find it. from typing import (Coroutine, Any, Literal, Callable, Generator, Awaitable, Sequence, Self) import asyncio from concurrent.futures import Future from pathlib import Path from enum import Enum