From d0715055f176f3f67ca2f43f66c9eaca2ec2ec33 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Wed, 17 Mar 2021 00:39:41 +0100 Subject: [PATCH] Fixing tracks edits, still need to fix slugs --- Kyoo.Common/Models/Resources/Track.cs | 1 + .../Repositories/EpisodeRepository.cs | 18 +++++++----------- 2 files changed, 8 insertions(+), 11 deletions(-) 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)