diff --git a/core/share.go b/core/share.go index adf13a31c..83d9f7118 100644 --- a/core/share.go +++ b/core/share.go @@ -94,8 +94,7 @@ func (r *shareRepositoryWrapper) Save(entity interface{}) (string, error) { s.ExpiresAt = time.Now().Add(365 * 24 * time.Hour) } - // TODO Validate all ids - firstId := strings.SplitN(s.ResourceIDs, ",", 1)[0] + firstId := strings.SplitN(s.ResourceIDs, ",", 2)[0] v, err := model.GetEntityByID(r.ctx, r.ds, firstId) if err != nil { return "", err @@ -107,10 +106,11 @@ func (r *shareRepositoryWrapper) Save(entity interface{}) (string, error) { case *model.Playlist: s.ResourceType = "playlist" s.Contents = r.shareContentsFromPlaylist(s.ID, s.ResourceIDs) - case *model.Artist: - s.ResourceType = "artist" case *model.MediaFile: - s.ResourceType = "song" + s.ResourceType = "media_file" + default: + log.Error(r.ctx, "Invalid Resource ID", "id", firstId) + return "", model.ErrNotFound } id, err = r.Persistable.Save(s) diff --git a/persistence/share_repository.go b/persistence/share_repository.go index 8d0413ae2..5863a8bb3 100644 --- a/persistence/share_repository.go +++ b/persistence/share_repository.go @@ -99,6 +99,10 @@ func (r *shareRepository) loadMedia(share *model.Share) error { share.Tracks = tracks.MediaFiles() } return nil + case "media_file": + mfRepo := NewMediaFileRepository(r.ctx, r.ormer) + share.Tracks, err = mfRepo.GetAll(model.QueryOptions{Filters: Eq{"id": ids}}) + return err } log.Warn(r.ctx, "Unsupported Share ResourceType", "share", share.ID, "resourceType", share.ResourceType) return nil