diff --git a/gui/v2/actions/menu_coordinator.py b/gui/v2/actions/menu_coordinator.py index fec3df7..f860828 100644 --- a/gui/v2/actions/menu_coordinator.py +++ b/gui/v2/actions/menu_coordinator.py @@ -2,7 +2,8 @@ from core.services.profiles.profile_connections import enable_profile #, disable_profile from core.controllers.ProfileController import ProfileController from core.models.Configuration import Configuration, ConnectionChoice -from core.services.subscriptions.subscriptions_by_protocol import get_profile_subscription, start_new_payment_cycle +from core.services.subscriptions.subscriptions_by_protocol import get_profile_subscription, start_new_payment_cycle, wipe_subscription +from core.utils.check_if_time_lapsed import check_if_time_lapsed from core.models.enum_models import PaymentCategory from core.utils.type_checker import type_checker from core.models.Result import Result, ResultError @@ -62,6 +63,16 @@ def navigate_to_new_sub_page() -> Result: return Result(valid=False, error_type=ResultError.NAVIGATE_TO, navigate_to="id", message="No subscription. Pick a payment method.") +@register_action(ResultError.EXPIRED_SUB) +def wipe_expired_subscription(profile_id: int) -> Result: + """Call core to wipe a subscription, then navigate to the billing page""" + wiped = wipe_subscription(profile_id) + if wiped.valid: + return navigate_to_new_sub_page() + else: + return wiped + + def filter_subscription(profile_id: int) -> Result: """Evaluate if this profile has a subscription that's ready to connect.""" @@ -81,6 +92,15 @@ def filter_subscription(profile_id: int) -> Result: logger.info(f"Returning the error of start_result {start_result}") return start_result + expiration_date = subscription.expires_at + if not expiration_date: + # auto check tickets would be here. + return navigate_to_new_sub_page() + + expired = check_if_time_lapsed(expiration_date) + if expired: + return Result(valid=False, error_type=ResultError.EXPIRED_SUB, message="This subscription is expired, would you like to wipe it and get a new one?") + # has a valid sub: logger.info(f"Profile id {profile_id} has a valid subscription ready to go..") return Result(valid=True)