@@ -68,7 +68,7 @@ def __init__(
6868 )
6969 self .garmin_connect_earned_badges_url = "/badge-service/badge/earned"
7070 self .garmin_connect_available_badges_url = (
71- "/badge-service/badge/available?showExclusiveBadge=true "
71+ "/badge-service/badge/available"
7272 )
7373 self .garmin_connect_adhoc_challenges_url = (
7474 "/adhocchallenge-service/adHocChallenge/historical"
@@ -724,15 +724,15 @@ def get_earned_badges(self) -> List[Dict[str, Any]]:
724724
725725 return self .connectapi (url )
726726
727- def get_available_badges (self ) -> List [ Dict [ str , Any ] ]:
727+ def get_available_badges (self ) -> list [ dict ]:
728728 """Return available badges for current user."""
729729
730730 url = self .garmin_connect_available_badges_url
731731 logger .debug ("Requesting available badges for user" )
732732
733- return self .connectapi (url )
733+ return self .connectapi (url , params = { "showExclusiveBadge" : "true" } )
734734
735- def get_in_progress_badges (self ) -> List [ Dict [ str , Any ] ]:
735+ def get_in_progress_badges (self ) -> list [ dict ]:
736736 """Return in progress badges for current user."""
737737
738738 logger .debug ("Requesting in progress badges for user" )
@@ -741,30 +741,35 @@ def get_in_progress_badges(self) -> List[Dict[str, Any]]:
741741 available_badges = self .get_available_badges ()
742742
743743 # Filter out badges that are not in progress
744- def badge_in_progress (badge ) :
744+ def is_badge_in_progress (badge : dict ) -> bool :
745745 """Return True if the badge is in progress."""
746- if "badgeProgressValue" not in badge :
747- return False
748- if badge ["badgeProgressValue" ] is None :
746+ progress = badge .get ("badgeProgressValue" )
747+ if not progress :
749748 return False
750- if badge [ "badgeProgressValue" ] == 0 :
749+ if progress == 0 :
751750 return False
752- if badge ["badgeProgressValue" ] == badge ["badgeTargetValue" ]:
753- if (
754- "badgeLimitCount" not in badge
755- or badge ["badgeLimitCount" ] is None
756- ):
751+ target = badge .get ("badgeTargetValue" )
752+ if progress == target :
753+ if badge .get ("badgeLimitCount" ) is None :
757754 return False
758- return badge ["badgeEarnedNumber" ] < badge ["badgeLimitCount" ]
755+ return (
756+ badge .get ("badgeEarnedNumber" , 0 )
757+ < badge ["badgeLimitCount" ]
758+ )
759759 return True
760760
761761 earned_in_progress_badges = list (
762- filter (badge_in_progress , earned_badges )
762+ filter (is_badge_in_progress , earned_badges )
763763 )
764764 available_in_progress_badges = list (
765- filter (badge_in_progress , available_badges )
765+ filter (is_badge_in_progress , available_badges )
766+ )
767+
768+ combined = {b ["badgeId" ]: b for b in earned_in_progress_badges }
769+ combined .update (
770+ {b ["badgeId" ]: b for b in available_in_progress_badges }
766771 )
767- return earned_in_progress_badges + available_in_progress_badges
772+ return list ( combined . values ())
768773
769774 def get_adhoc_challenges (self , start , limit ) -> Dict [str , Any ]:
770775 """Return adhoc challenges for current user."""
0 commit comments