diff --git a/Kyoo.Common/Models/Resources/Track.cs b/Kyoo.Common/Models/Resources/Track.cs index 7895bba6..6d9f3b81 100644 --- a/Kyoo.Common/Models/Resources/Track.cs +++ b/Kyoo.Common/Models/Resources/Track.cs @@ -94,6 +94,7 @@ namespace Kyoo.Models { get { + // TODO other type of tracks should still have slugs. The slug should never be an ID. Maybe a und-number format. if (Type != StreamType.Subtitle) return null; diff --git a/Kyoo/Controllers/Repositories/EpisodeRepository.cs b/Kyoo/Controllers/Repositories/EpisodeRepository.cs index 35602545..162d03e3 100644 --- a/Kyoo/Controllers/Repositories/EpisodeRepository.cs +++ b/Kyoo/Controllers/Repositories/EpisodeRepository.cs @@ -172,17 +172,13 @@ namespace Kyoo.Controllers if (changed.Tracks != null || resetOld) { ICollection oldTracks = await _tracks.GetAll(x => x.EpisodeID == resource.ID); - resource.Tracks = await changed.Tracks.SelectAsync(async track => - { - Track oldValue = oldTracks?.FirstOrDefault(x => Utility.ResourceEquals(track, x)); - if (oldValue == null) - return await _tracks.CreateIfNotExists(track, true); - oldTracks.Remove(oldValue); - return oldValue; - }) - .ToListAsync(); - foreach (Track x in oldTracks) - await _tracks.Delete(x); + await _tracks.DeleteRange(oldTracks); + resource.Tracks = await changed.Tracks.SelectAsync(x => + { + x.Episode = resource; + x.EpisodeID = resource.ID; + return _tracks.Create(x); + }).ToListAsync(); } if (changed.ExternalIDs != null || resetOld)