package core import ( "context" "seanime/internal/api/anilist" "seanime/internal/events" "seanime/internal/platforms/platform" "seanime/internal/user" ) // GetUser returns the currently logged-in user or a simulated one. func (a *App) GetUser() *user.User { if a.user == nil { return user.NewSimulatedUser() } return a.user } func (a *App) GetUserAnilistToken() string { if a.user == nil || a.user.Token == user.SimulatedUserToken { return "" } return a.user.Token } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // UpdatePlatform changes the current platform to the provided one. func (a *App) UpdatePlatform(platform platform.Platform) { a.AnilistPlatform = platform } // UpdateAnilistClientToken will update the Anilist Client Wrapper token. // This function should be called when a user logs in func (a *App) UpdateAnilistClientToken(token string) { a.AnilistClient = anilist.NewAnilistClient(token) a.AnilistPlatform.SetAnilistClient(a.AnilistClient) // Update Anilist Client Wrapper in Platform } // GetAnimeCollection returns the user's Anilist collection if it in the cache, otherwise it queries Anilist for the user's collection. // When bypassCache is true, it will always query Anilist for the user's collection func (a *App) GetAnimeCollection(bypassCache bool) (*anilist.AnimeCollection, error) { return a.AnilistPlatform.GetAnimeCollection(context.Background(), bypassCache) } // GetRawAnimeCollection is the same as GetAnimeCollection but returns the raw collection that includes custom lists func (a *App) GetRawAnimeCollection(bypassCache bool) (*anilist.AnimeCollection, error) { return a.AnilistPlatform.GetRawAnimeCollection(context.Background(), bypassCache) } // RefreshAnimeCollection queries Anilist for the user's collection func (a *App) RefreshAnimeCollection() (*anilist.AnimeCollection, error) { go func() { a.OnRefreshAnilistCollectionFuncs.Range(func(key string, f func()) bool { go f() return true }) }() ret, err := a.AnilistPlatform.RefreshAnimeCollection(context.Background()) if err != nil { return nil, err } // Save the collection to PlaybackManager a.PlaybackManager.SetAnimeCollection(ret) // Save the collection to AutoDownloader a.AutoDownloader.SetAnimeCollection(ret) // Save the collection to LocalManager a.LocalManager.SetAnimeCollection(ret) // Save the collection to DirectStreamManager a.DirectStreamManager.SetAnimeCollection(ret) a.WSEventManager.SendEvent(events.RefreshedAnilistAnimeCollection, nil) return ret, nil } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // GetMangaCollection is the same as GetAnimeCollection but for manga func (a *App) GetMangaCollection(bypassCache bool) (*anilist.MangaCollection, error) { return a.AnilistPlatform.GetMangaCollection(context.Background(), bypassCache) } // GetRawMangaCollection does not exclude custom lists func (a *App) GetRawMangaCollection(bypassCache bool) (*anilist.MangaCollection, error) { return a.AnilistPlatform.GetRawMangaCollection(context.Background(), bypassCache) } // RefreshMangaCollection queries Anilist for the user's manga collection func (a *App) RefreshMangaCollection() (*anilist.MangaCollection, error) { mc, err := a.AnilistPlatform.RefreshMangaCollection(context.Background()) if err != nil { return nil, err } a.LocalManager.SetMangaCollection(mc) a.WSEventManager.SendEvent(events.RefreshedAnilistMangaCollection, nil) return mc, nil }