]> git.lizzy.rs Git - go-anidb.git/blobdiff - mylistmanip.go
Modernize
[go-anidb.git] / mylistmanip.go
index 213a30195697214d72c6977ac4feb5f6baf32a8f..271673abeda27335629683f07438c8d309a451d5 100644 (file)
@@ -1,7 +1,7 @@
 package anidb
 
 import (
-       "github.com/Kovensky/go-fscache"
+       "github.com/EliasFleckenstein03/go-fscache"
        "strconv"
        "time"
 )
@@ -67,26 +67,48 @@ func (set *MyListSet) update(uid UID, f *File, lid LID) {
        eg.Add(f.EpisodeNumber)
        mla.EpisodesPerGroup[f.GID] = eg
 
-       if set.State != nil {
-               es := mla.EpisodesWithState[*set.State]
-               es.Add(f.EpisodeNumber)
-               mla.EpisodesWithState[*set.State] = es
-       }
+       newState := MyListStateUnknown
+       if set != nil {
+               if set.State != nil {
+                       newState = *set.State
+               }
 
-       if set.Watched != nil && *set.Watched ||
-               set.ViewDate != nil && !set.ViewDate.IsZero() {
-               mla.WatchedEpisodes.Add(f.EpisodeNumber)
+               if set.Watched != nil && *set.Watched ||
+                       set.ViewDate != nil && !set.ViewDate.IsZero() {
+                       mla.WatchedEpisodes.Add(f.EpisodeNumber)
+               }
        }
 
+       es := mla.EpisodesWithState[newState]
+       es.Add(f.EpisodeNumber)
+       mla.EpisodesWithState[newState] = es
+
        Cache.Set(mla, "mylist-anime", uid, f.AID)
        Cache.Chtime(mla.Cached, "mylist-anime", uid, f.AID)
 
-       if set.ViewDate == nil && set.Watched == nil && set.State == nil &&
-               set.Source == nil && set.Storage == nil && set.Other == nil {
+       e := lid.MyListEntry()
+       if set == nil ||
+               (set.ViewDate == nil && set.Watched == nil && set.State == nil &&
+                       set.Source == nil && set.Storage == nil && set.Other == nil) {
                return
        }
+       if e == nil {
+               now := time.Now()
+               e = &MyListEntry{
+                       LID: lid,
+
+                       AID: f.AID,
+                       EID: f.EID,
+                       FID: f.FID,
+                       GID: f.GID,
+
+                       DateAdded: now,
+
+                       // make sure it's expired
+                       Cached: time.Unix(0, 0),
+               }
+       }
 
-       e := lid.MyListEntry()
        if set.ViewDate != nil {
                e.DateWatched = *set.ViewDate
        } else if set.Watched != nil {