diff --git a/vrobbler/apps/scrobbles/scrobblers.py b/vrobbler/apps/scrobbles/scrobblers.py index 4f73c9f..f4ed71e 100644 --- a/vrobbler/apps/scrobbles/scrobblers.py +++ b/vrobbler/apps/scrobbles/scrobblers.py @@ -310,15 +310,24 @@ def manual_scrobble_from_url(url: str, user_id: int) -> Scrobble: return eval(scrobble_fn)(item_id, user_id) -def todoist_scrobble_task_finish(todoist_task: dict, user_id: int) -> Scrobble: +def todoist_scrobble_task_finish( + todoist_task: dict, user_id: int +) -> Optional[Scrobble]: scrobble = Scrobble.objects.filter( user_id=user_id, log__todoist_id=todoist_task.get("todoist_id") ).first() + if not scrobble: + logger.info( + "[todoist_scrobble_task_finish] todoist webhook finish called on missing task" + ) + return + if not scrobble.in_progress or scrobble.played_to_completion: - logger.warning( + logger.info( "[todoist_scrobble_task_finish] todoist webhook finish called on finished task" ) + return scrobble.stop(force_finish=True) diff --git a/vrobbler/apps/tasks/webhooks.py b/vrobbler/apps/tasks/webhooks.py index 3c2a87e..88eaf84 100644 --- a/vrobbler/apps/tasks/webhooks.py +++ b/vrobbler/apps/tasks/webhooks.py @@ -67,7 +67,10 @@ def todoist_webhook(request): scrobble = todoist_scrobble_task(todoist_task, user_id) if not scrobble: - return Response({}, status=status.HTTP_400_BAD_REQUEST) + return Response( + {"error": "No scrobble found to be updated"}, + status=status.HTTP_400_BAD_REQUEST, + ) logger.info( "[todoist_webhook] finished",