@@ -442,6 +442,13 @@ def get_incomplete_tasks(tier: str) -> list[TaskData]:
442442 completed_task_ids = list (map (lambda x : x .id , user .get_task_list (tier ).completed_tasks ))
443443 return list (filter (lambda x : x .id not in completed_task_ids , all_tasks ))
444444
445+ def get_first_task_instance (generated_task : TaskData , incomplete_tasks : list [TaskData ]) -> TaskData :
446+ if generated_task .verification :
447+ first_task_instance = min ([task for task in incomplete_tasks if task .name == generated_task .name ],
448+ key = lambda task : getattr (task .verification , "count" , 0 ))
449+ return first_task_instance
450+ return generated_task
451+
445452 tasks_easy = get_incomplete_tasks ('easy' )
446453 tasks_medium = get_incomplete_tasks ('medium' )
447454 tasks_hard = get_incomplete_tasks ('hard' )
@@ -450,27 +457,34 @@ def get_incomplete_tasks(tier: str) -> list[TaskData]:
450457
451458 if len (tasks_easy ) != 0 :
452459 generated_task = random .choice (tasks_easy )
453- __set_current_task (username , 'easyTasks' , generated_task .id , True )
454- return generated_task
460+ first_task_instance = get_first_task_instance (generated_task , tasks_easy )
461+ __set_current_task (username , 'easyTasks' , first_task_instance .id , True )
462+ return first_task_instance
463+
455464 elif len (tasks_medium ) != 0 :
456465 generated_task = random .choice (tasks_medium )
457- __set_current_task (username , 'mediumTasks' , generated_task .id , True )
458- return generated_task
466+ first_task_instance = get_first_task_instance (generated_task , tasks_medium )
467+ __set_current_task (username , 'mediumTasks' , first_task_instance .id , True )
468+ return first_task_instance
469+
459470 elif len (tasks_hard ) != 0 :
460471 generated_task = random .choice (tasks_hard )
461- __set_current_task (username , 'hardTasks' , generated_task .id , True )
462- return generated_task
472+ first_task_instance = get_first_task_instance (generated_task , tasks_hard )
473+ __set_current_task (username , 'hardTasks' , first_task_instance .id , True )
474+ return first_task_instance
475+
463476 elif len (tasks_elite ) != 0 :
464477 generated_task = random .choice (tasks_elite )
465- __set_current_task (username , 'eliteTasks' , generated_task .id , True )
466- return generated_task
478+ first_task_instance = get_first_task_instance (generated_task , tasks_elite )
479+ __set_current_task (username , 'eliteTasks' , first_task_instance .id , True )
480+ return first_task_instance
481+
467482 elif len (tasks_master ) != 0 :
468- if tasks_master [0 ].id == "6b09384d-c06b-44ac-8a07-b7038cd30710" :
469- generated_task = tasks_master [0 ]
470- else :
471- generated_task = random .choice (tasks_master )
472- __set_current_task (username , 'masterTasks' , generated_task .id , True )
473- return generated_task
483+ generated_task = random .choice (tasks_master )
484+ first_task_instance = get_first_task_instance (generate_task , tasks_master )
485+ __set_current_task (username , 'masterTasks' , first_task_instance .id , True )
486+ return first_task_instance
487+
474488 return None
475489
476490# If user has just completed a task of the given tier and the progress is 100, then they've just completed the last task
0 commit comments