Files
FastAnime/anixstream/Controller/search_screen.py
2024-08-05 09:46:54 +03:00

48 lines
1.7 KiB
Python

from inspect import isgenerator
from kivy.clock import Clock
from kivy.logger import Logger
from anixstream.View import SearchScreenView
from anixstream.Model import SearchScreenModel
class SearchScreenController:
"""The search screen controller
"""
def __init__(self, model: SearchScreenModel):
self.model = model
self.view = SearchScreenView(controller=self, model=self.model)
def get_view(self) -> SearchScreenView:
return self.view
def update_trending_anime(self):
"""Gets and adds the trending anime to the search screen
"""
trending_cards_generator = self.model.get_trending_anime()
if isgenerator(trending_cards_generator):
self.view.trending_anime_sidebar.clear_widgets()
for card in trending_cards_generator:
card.screen = self.view
card.pos_hint = {"center_x": 0.5}
self.view.update_trending_sidebar(card)
else:
Logger.error("Home Screen:Failed to load trending anime")
def requested_search_for_anime(self, anime_title, **kwargs):
self.view.is_searching = True
search_Results = self.model.search_for_anime(anime_title, **kwargs)
if isgenerator(search_Results):
for result_card in search_Results:
result_card.screen = self.view
self.view.update_layout(result_card)
Clock.schedule_once(
lambda _: self.view.update_pagination(self.model.pagination_info)
)
self.update_trending_anime()
else:
Logger.error(f"Home Screen:Failed to search for {anime_title}")
self.view.is_searching = False