mirror of
https://github.com/Benexl/FastAnime.git
synced 2025-12-28 05:33:12 -08:00
feat(home screen): implement load more anime functionality to improve start up time
This feature only gets anime of a particular category and only preloads trending category
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
from inspect import isgenerator
|
||||
|
||||
|
||||
from kivy.clock import Clock
|
||||
from kivy.logger import Logger
|
||||
|
||||
|
||||
from ..Model import HomeScreenModel
|
||||
from ..Utility import show_notification
|
||||
from ..View import HomeScreenView
|
||||
@@ -19,12 +21,22 @@ class HomeScreenController:
|
||||
"""
|
||||
|
||||
populate_errors = []
|
||||
_discover_anime_list = []
|
||||
|
||||
def __init__(self, model: HomeScreenModel):
|
||||
self.model = model # Model.main_screen.MainScreenModel
|
||||
self.view = HomeScreenView(controller=self, model=self.model)
|
||||
# if self.view.app.config.get("Preferences","is_startup_anime_enable")=="1": # type: ignore
|
||||
# Clock.schedule_once(lambda _:self.populate_home_screen())
|
||||
|
||||
self._discover_anime_list = [
|
||||
self.highest_scored_anime,
|
||||
self.popular_anime,
|
||||
self.favourite_anime,
|
||||
self.upcoming_anime,
|
||||
self.recently_updated_anime,
|
||||
self.trending_anime,
|
||||
]
|
||||
|
||||
self.get_more_anime()
|
||||
|
||||
def get_view(self) -> HomeScreenView:
|
||||
return self.view
|
||||
@@ -115,17 +127,17 @@ class HomeScreenController:
|
||||
Logger.error("Home Screen:Failed to load upcoming anime")
|
||||
self.populate_errors.append("upcoming Anime")
|
||||
|
||||
def populate_home_screen(self):
|
||||
def get_more_anime(self):
|
||||
self.populate_errors = []
|
||||
Clock.schedule_once(lambda _: self.trending_anime(), 1)
|
||||
Clock.schedule_once(lambda _: self.highest_scored_anime(), 2)
|
||||
Clock.schedule_once(lambda _: self.recently_updated_anime(), 5)
|
||||
# Clock.schedule_once(lambda _: self.popular_anime(), 3)
|
||||
# Clock.schedule_once(lambda _: self.favourite_anime(), 4)
|
||||
# Clock.schedule_once(lambda _: self.upcoming_anime(), 6)
|
||||
if self._discover_anime_list:
|
||||
task = self._discover_anime_list.pop()
|
||||
Clock.schedule_once(lambda _: task())
|
||||
else:
|
||||
show_notification("Home Screen Info", "No more anime to load")
|
||||
|
||||
if self.populate_errors:
|
||||
show_notification(
|
||||
"Failed to fetch all home screen data",
|
||||
f"Theres probably a problem with your internet connection or anilist servers are down.\nFailed include:{', '.join(self.populate_errors)}",
|
||||
)
|
||||
self.populate_errors = []
|
||||
|
||||
@@ -19,5 +19,11 @@
|
||||
spacing:"10dp"
|
||||
orientation: 'vertical'
|
||||
size_hint_y:None
|
||||
height:max(self.minimum_height,p.height,1800)
|
||||
height:self.minimum_height
|
||||
MDButton:
|
||||
on_press:
|
||||
if root.controller: root.controller.get_more_anime()
|
||||
MDButtonText:
|
||||
text:"Load More Anime"
|
||||
|
||||
|
||||
|
||||
@@ -128,10 +128,6 @@ class AniXStreamApp(MDApp):
|
||||
|
||||
def on_start(self, *args):
|
||||
self.media_card_popup = MediaPopup()
|
||||
if self.config.get("Preferences", "is_startup_anime_enable") == "1": # type: ignore
|
||||
Clock.schedule_once(
|
||||
lambda _: self.home_screen.controller.populate_home_screen(), 1
|
||||
)
|
||||
|
||||
def generate_application_screens(self) -> None:
|
||||
for i, name_screen in enumerate(screens.keys()):
|
||||
|
||||
Reference in New Issue
Block a user