node build fixed
This commit is contained in:
77
seanime-2.9.10/internal/library/anime/entry_library_data.go
Normal file
77
seanime-2.9.10/internal/library/anime/entry_library_data.go
Normal file
@@ -0,0 +1,77 @@
|
||||
package anime
|
||||
|
||||
import (
|
||||
"seanime/internal/hook"
|
||||
"strings"
|
||||
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
|
||||
type (
|
||||
EntryLibraryData struct {
|
||||
AllFilesLocked bool `json:"allFilesLocked"`
|
||||
SharedPath string `json:"sharedPath"`
|
||||
UnwatchedCount int `json:"unwatchedCount"`
|
||||
MainFileCount int `json:"mainFileCount"`
|
||||
}
|
||||
|
||||
NakamaEntryLibraryData struct {
|
||||
UnwatchedCount int `json:"unwatchedCount"`
|
||||
MainFileCount int `json:"mainFileCount"`
|
||||
}
|
||||
|
||||
NewEntryLibraryDataOptions struct {
|
||||
EntryLocalFiles []*LocalFile
|
||||
MediaId int
|
||||
CurrentProgress int
|
||||
}
|
||||
)
|
||||
|
||||
// NewEntryLibraryData creates a new EntryLibraryData based on the media id and a list of local files related to the media.
|
||||
// It will return false if the list of local files is empty.
|
||||
func NewEntryLibraryData(opts *NewEntryLibraryDataOptions) (ret *EntryLibraryData, ok bool) {
|
||||
|
||||
reqEvent := new(AnimeEntryLibraryDataRequestedEvent)
|
||||
reqEvent.EntryLocalFiles = opts.EntryLocalFiles
|
||||
reqEvent.MediaId = opts.MediaId
|
||||
reqEvent.CurrentProgress = opts.CurrentProgress
|
||||
|
||||
err := hook.GlobalHookManager.OnAnimeEntryLibraryDataRequested().Trigger(reqEvent)
|
||||
if err != nil {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
if reqEvent.EntryLocalFiles == nil || len(reqEvent.EntryLocalFiles) == 0 {
|
||||
return nil, false
|
||||
}
|
||||
sharedPath := strings.Replace(reqEvent.EntryLocalFiles[0].Path, reqEvent.EntryLocalFiles[0].Name, "", 1)
|
||||
sharedPath = strings.TrimSuffix(strings.TrimSuffix(sharedPath, "\\"), "/")
|
||||
|
||||
ret = &EntryLibraryData{
|
||||
AllFilesLocked: lo.EveryBy(reqEvent.EntryLocalFiles, func(item *LocalFile) bool { return item.Locked }),
|
||||
SharedPath: sharedPath,
|
||||
}
|
||||
ok = true
|
||||
|
||||
lfw := NewLocalFileWrapper(reqEvent.EntryLocalFiles)
|
||||
lfwe, ok := lfw.GetLocalEntryById(reqEvent.MediaId)
|
||||
if !ok {
|
||||
return ret, true
|
||||
}
|
||||
|
||||
ret.UnwatchedCount = len(lfwe.GetUnwatchedLocalFiles(reqEvent.CurrentProgress))
|
||||
|
||||
mainLfs, ok := lfwe.GetMainLocalFiles()
|
||||
if !ok {
|
||||
return ret, true
|
||||
}
|
||||
ret.MainFileCount = len(mainLfs)
|
||||
|
||||
event := new(AnimeEntryLibraryDataEvent)
|
||||
event.EntryLibraryData = ret
|
||||
err = hook.GlobalHookManager.OnAnimeEntryLibraryData().Trigger(event)
|
||||
if err != nil {
|
||||
return nil, false
|
||||
}
|
||||
return event.EntryLibraryData, true
|
||||
}
|
||||
Reference in New Issue
Block a user