mirror of
https://github.com/Benexl/FastAnime.git
synced 2025-12-26 04:41:34 -08:00
69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
from kivy.clock import Clock
|
|
from kivy.properties import ObjectProperty, StringProperty
|
|
|
|
from ...View.base_screen import BaseScreenView
|
|
|
|
from .components import Filters, SearchResultsPagination, TrendingAnimeSideBar
|
|
|
|
|
|
class SearchScreenView(BaseScreenView):
|
|
trending_anime_sidebar: TrendingAnimeSideBar = ObjectProperty()
|
|
search_results_pagination: SearchResultsPagination = ObjectProperty()
|
|
filters: Filters = ObjectProperty()
|
|
|
|
search_results_container = ObjectProperty()
|
|
search_term: str = StringProperty()
|
|
is_searching = False
|
|
has_next_page = False
|
|
current_page = 0
|
|
total_pages = 0
|
|
|
|
def handle_search_for_anime(self, search_widget=None, page=None):
|
|
if search_widget:
|
|
search_term = search_widget.text
|
|
elif page:
|
|
search_term = self.search_term
|
|
else:
|
|
return
|
|
|
|
if search_term and not (self.is_searching):
|
|
self.search_term = search_term
|
|
self.search_results_container.data = []
|
|
if filters := self.filters.filters:
|
|
Clock.schedule_once(
|
|
lambda _: self.controller.requested_search_for_anime(
|
|
search_term, **filters, page=page
|
|
)
|
|
)
|
|
else:
|
|
Clock.schedule_once(
|
|
lambda _: self.controller.requested_search_for_anime(
|
|
search_term, page=page
|
|
)
|
|
)
|
|
|
|
def update_layout(self, widget):
|
|
self.search_results_container.data.append(widget)
|
|
|
|
def update_pagination(self, pagination_info):
|
|
self.search_results_pagination.current_page = self.current_page = (
|
|
pagination_info["currentPage"]
|
|
)
|
|
self.search_results_pagination.total_pages = self.total_pages = max(
|
|
int(pagination_info["total"] / 30), 1
|
|
)
|
|
self.has_next_page = pagination_info["hasNextPage"]
|
|
|
|
def next_page(self):
|
|
if self.has_next_page:
|
|
page = self.current_page + 1
|
|
self.handle_search_for_anime(page=page)
|
|
|
|
def previous_page(self):
|
|
if self.current_page > 1:
|
|
page = self.current_page - 1
|
|
self.handle_search_for_anime(page=page)
|
|
|
|
def update_trending_sidebar(self, trending_anime):
|
|
self.trending_anime_sidebar.data.append(trending_anime)
|