Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion rare/components/tabs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ def __init__(self, settings: RareAppSettings, rcore: RareCore, parent):
self.setTabEnabled(self.downloads_index, not self.args.offline)

if not self.args.offline:
self.store_tab = StoreTab(self.core, parent=self)
self.store_tab = StoreTab(self.core, self.rcore, parent=self)
self.store_tab.open_library.connect(self.games_tab.show_library)
self.store_index = self.addTab(self.store_tab, self.tr('Store (Under Construction)'))
self.setTabEnabled(self.store_index, not self.args.offline)

Expand Down
23 changes: 14 additions & 9 deletions rare/components/tabs/store/__init__.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,42 @@
from PySide6.QtCore import Signal
from PySide6.QtGui import QHideEvent, QShowEvent

from rare.lgndr.core import LegendaryCore
from rare.shared import RareCore
from rare.widgets.side_tab import SideTabWidget

from .landing import LandingPage
from .search import SearchPage
from .store_api import StoreAPI
from .wishlist import WishlistPage


class StoreTab(SideTabWidget):
def __init__(self, core: LegendaryCore, parent=None):
open_library = Signal()

def __init__(self, core: LegendaryCore, rcore: RareCore | None = None, parent=None):
super(StoreTab, self).__init__(parent=parent)
self.init = False

self.core = core
# self.rcore = rcore
self.rcore = rcore
self.api = StoreAPI(
self.core.egs.session.headers['Authorization'],
self.core.language_code,
self.core.country_code,
[], # [i.asset_infos["Windows"].namespace for i in self.rcore.game_list if bool(i.asset_infos)]
[],
self.core.egs._store_user_agent,
)

self.landing = LandingPage(self.api, parent=self)
self.landing = LandingPage(self.api, self.rcore, parent=self)
self.landing_index = self.addTab(self.landing, self.tr('Store'))

self.search = SearchPage(self.api, parent=self)
self.search_index = self.addTab(self.search, self.tr('Search'))

self.wishlist = WishlistPage(self.api, parent=self)
self.wishlist = WishlistPage(self.api, self.rcore, parent=self)
self.wishlist_index = self.addTab(self.wishlist, self.tr('Wishlist'))

# forward library navigation requests from the details pages
self.landing.open_library.connect(self.open_library)
self.wishlist.open_library.connect(self.open_library)

def showEvent(self, a0: QShowEvent) -> None:
if a0.spontaneous() or self.init:
return super().showEvent(a0)
Expand Down
2 changes: 1 addition & 1 deletion rare/components/tabs/store/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def __init__(self):

self.core = LegendaryCore()
self.core.login()
self.store_tab = StoreTab(self.core, self)
self.store_tab = StoreTab(self.core, parent=self)

layout = QVBoxLayout(self)
layout.addWidget(self.store_tab)
Expand Down
27 changes: 9 additions & 18 deletions rare/components/tabs/store/api/models/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,13 @@ def __post_init__(self):
self.locale = f'{self.language}-{self.country}'

def to_dict(self):
payload = {
price_range = ''
free_game = self.free_game
if self.price_range == 'free':
free_game = True
elif self.price_range.startswith('<price>'):
price_range = self.price_range.replace('<price>', '')
return {
'allowCountries': self.country,
'category': self.category,
'count': self.count,
Expand All @@ -58,23 +64,8 @@ def to_dict(self):
'releaseDate': str(self.release_date),
'withPrice': self.with_price,
'withPromotions': self.with_promotions,
'priceRange': self.price_range,
'freeGame': self.free_game,
'priceRange': price_range,
'freeGame': free_game,
'onSale': self.on_sale,
'effectiveDate': str(self.effective_date),
}
# payload.pop("withPromotions")
payload.pop('onSale')
if self.price_range == 'free':
payload['freeGame'] = True
payload.pop('priceRange')
elif self.price_range.startswith('<price>'):
payload['priceRange'] = self.price_range.replace('<price>', '')
if self.on_sale:
payload['onSale'] = True

if self.price_range:
payload['effectiveDate'] = self.effective_date
else:
payload.pop('priceRange')
return payload
28 changes: 28 additions & 0 deletions rare/components/tabs/store/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,33 @@ def __init__(self):
}
"""

PURCHASE_QUERY = """
mutation purchaseMutation(
$namespace: String!
$offerId: String!
$country: String!
$locale: String!
) {
Catalog {
purchase(
namespace: $namespace
offerId: $offerId
country: $country
locale: $locale
) {
code
error {
code
message
}
cart {
id
}
}
}
}
"""

COUPONS_QUERY = """
query getCoupons(
$currencyCountry: String!
Expand Down Expand Up @@ -441,6 +468,7 @@ def compress_query(query: str) -> str:
wishlist_remove_query = compress_query(WISHLIST_REMOVE_QUERY)
coupons_query = compress_query(COUPONS_QUERY)
store_config_query = compress_query(STORE_CONFIG_QUERY)
purchase_query = compress_query(PURCHASE_QUERY)


if __name__ == '__main__':
Expand Down
Loading
Loading