Files
FastAnime/app/Controller/anime_screen.py
2024-05-25 17:37:18 +03:00

35 lines
1.2 KiB
Python

from kivy.clock import Clock
from kivy.logger import Logger
from kivy.cache import Cache
from Model import AnimeScreenModel
from View import AnimeScreenView
Cache.register("data.anime",limit=20,timeout=600)
class AnimeScreenController:
def __init__(self, model:AnimeScreenModel):
self.model = model
self.view = AnimeScreenView(controller=self, model=self.model)
def get_view(self) -> AnimeScreenView:
return self.view
def update_anime_view(self,id:int,caller_screen_name:str):
if self.model.anime_id != id:
if cached_anime_data:=Cache.get("data.anime",f"{id}"):
data = cached_anime_data
else:
data = self.model.get_anime_data(id)
if data[0]:
d = data[1]["data"]["Page"]["media"][0]
self.model.anime_id = id
Clock.schedule_once(lambda _:self.view.update_layout(d,caller_screen_name))
Logger.info(f"Anime Screen:Success in opening anime of id: {id}")
Cache.append("data.anime",f"{id}",data)
def update_my_list(self,*args):
self.model.update_user_anime_list(*args)