return nil
}
+func (u *User) MyListAnime(aid AID) *MyListAnime {
+ if u != nil {
+ return u.UID.MyListAnime(aid)
+ }
+ return nil
+}
+
+func (a *Anime) MyList(adb *AniDB) <-chan *MyListAnime {
+ ch := make(chan *MyListAnime, 1)
+
+ if a == nil {
+ ch <- nil
+ close(ch)
+ return ch
+ }
+
+ go func() {
+ user := <-adb.GetCurrentUser()
+ if user == nil || user.UID < 1 {
+ ch <- nil
+ close(ch)
+ return
+ }
+
+ ch <- <-adb.MyListAnime(a.AID)
+ close(ch)
+ }()
+ return ch
+}
+
func (adb *AniDB) MyListAnime(aid AID) <-chan *MyListAnime {
ch := make(chan *MyListAnime, 1)
}
key := []fscache.CacheKey{"mylist-anime", user.UID, aid}
- ic := make(chan notification, 1)
+ ic := make(chan notification, 2)
go func() { ch <- (<-ic).(*MyListAnime); close(ch) }()
if intentMap.Intent(ic, key...) {
return
ep := <-adb.EpisodeByID(r.EID)
list := misc.EpisodeToList(&ep.Episode)
- switch r.MyListState {
- case MyListStateUnknown:
- entry.UnknownState = list
- case MyListStateHDD:
- entry.OnHDD = list
- case MyListStateCD:
- entry.OnCD = list
- case MyListStateDeleted:
- entry.Deleted = list
+ entry.EpisodesWithState = MyListStateMap{
+ r.MyListState: list,
}
if !r.DateWatched.IsZero() {
entry.WatchedEpisodes = list
}
- entry.EpisodesPerGroup = map[GID]misc.EpisodeList{
+ entry.EpisodesPerGroup = GroupEpisodes{
r.GID: list,
}
case 312:
}
return &MyListAnime{
- UnknownState: misc.ParseEpisodeList(parts[2]),
- OnHDD: misc.ParseEpisodeList(parts[3]),
- OnCD: misc.ParseEpisodeList(parts[4]),
- Deleted: misc.ParseEpisodeList(parts[5]),
+ EpisodesWithState: MyListStateMap{
+ MyListStateUnknown: misc.ParseEpisodeList(parts[2]),
+ MyListStateHDD: misc.ParseEpisodeList(parts[3]),
+ MyListStateCD: misc.ParseEpisodeList(parts[4]),
+ MyListStateDeleted: misc.ParseEpisodeList(parts[5]),
+ },
WatchedEpisodes: misc.ParseEpisodeList(parts[6]),