unify game selection and expectation logic (#32)

- unify game selection and expectation logic
- refactore settings and settings manager
- formatting and coverage and precommit hook
This commit is contained in:
Fengqing Liu
2026-01-19 00:39:58 +11:00
committed by GitHub
parent 8bf69abfda
commit 9727a9b8d2
27 changed files with 585 additions and 641 deletions

View File

@@ -8,9 +8,9 @@ from typing import TYPE_CHECKING
from dateutil.parser import isoparse
from src.config.constants import State, URLType
from src.config.constants import State
from src.models.channel import Channel
from src.models.drop import TimedDrop, remove_dimensions
from src.models.drop import TimedDrop
from src.models.game import Game
@@ -201,6 +201,4 @@ class DropsCampaign:
first_drop.display()
def has_wanted_unclaimed_benefits(self, allowed_benefits: dict[str, bool]) -> bool:
return any(
drop.has_wanted_unclaimed_benefits(allowed_benefits) for drop in self.drops
)
return any(drop.has_wanted_unclaimed_benefits(allowed_benefits) for drop in self.drops)

View File

@@ -139,9 +139,12 @@ class BaseDrop:
return delim.join(benefit.name for benefit in self.benefits)
def has_wanted_unclaimed_benefits(self, allowed_benefits: dict[str, bool]) -> bool:
return len(self.get_wanted_unclaimed_benefits(allowed_benefits)) > 0
def get_wanted_unclaimed_benefits(self, allowed_benefits: dict[str, bool]) -> list[str]:
if self.is_claimed:
return False
return any(benefit.is_wanted(allowed_benefits) for benefit in self.benefits)
return []
return [benefit.name for benefit in self.benefits if benefit.is_wanted(allowed_benefits)]
async def claim(self) -> bool:
result = await self._claim()