Skip to content

Commit 9612041

Browse files
Merge pull request #557 from NeoCoderMatrix86/524-remove-extra-handling-of-audio-file-and-loading-the-whole-file-to-memory
Remove extra handling of audio file and loading the whole file to memory
2 parents b552d45 + fb476a7 commit 9612041

17 files changed

Lines changed: 47 additions & 226 deletions

File tree

AudioCuesheetEditor.End2EndTests/Tests/Desktop/ExportTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public async Task DownloadProject_GeneratesProjectFile_WhenCuesheetIsValidAsync(
6868
using var stream = await download.CreateReadStreamAsync();
6969
using var reader = new StreamReader(stream);
7070
var content = await reader.ReadToEndAsync(TestContext.CancellationToken);
71-
Assert.AreEqual("{\"Tracks\":[{\"Position\":1,\"Artist\":\"Track Artist 1\",\"Title\":\"Track Title 1\",\"Begin\":\"00:00:00\",\"End\":\"00:05:48\",\"Flags\":[],\"IsLinkedToPreviousTrack\":true}],\"Artist\":\"Cuesheet Artist 1\",\"Title\":\"Cuesheet Title 1\",\"Audiofile\":{\"Name\":\"Kalimba.mp3\",\"Duration\":\"00:05:48\",\"AudioCodec\":{\"MimeType\":\"audio/mpeg\",\"FileExtension\":\".mp3\",\"Name\":\"AudioCodec MP3\"}}}", content);
71+
Assert.AreEqual("{\"Tracks\":[{\"Position\":1,\"Artist\":\"Track Artist 1\",\"Title\":\"Track Title 1\",\"Begin\":\"00:00:00\",\"End\":\"00:05:48.0608330\",\"Flags\":[],\"IsLinkedToPreviousTrack\":true}],\"Artist\":\"Cuesheet Artist 1\",\"Title\":\"Cuesheet Title 1\",\"Audiofile\":{\"Name\":\"Kalimba.mp3\",\"Duration\":\"00:05:48.0608330\",\"AudioCodec\":{\"MimeType\":\"audio/mpeg\",\"FileExtension\":\".mp3\",\"Name\":\"AudioCodec MP3\"}}}", content);
7272
}
7373

7474
[TestMethod]

AudioCuesheetEditor.End2EndTests/Tests/Smartphone/ExportTestSmartphone.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public async Task DownloadProject_GeneratesProjectFile_WhenCuesheetIsValidAsync(
6868
using var stream = await download.CreateReadStreamAsync();
6969
using var reader = new StreamReader(stream);
7070
var content = await reader.ReadToEndAsync(TestContext.CancellationToken);
71-
Assert.AreEqual("{\"Tracks\":[{\"Position\":1,\"Artist\":\"Track Artist 1\",\"Title\":\"Track Title 1\",\"Begin\":\"00:00:00\",\"End\":\"00:05:48\",\"Flags\":[],\"IsLinkedToPreviousTrack\":true}],\"Artist\":\"Cuesheet Artist 1\",\"Title\":\"Cuesheet Title 1\",\"Audiofile\":{\"Name\":\"Kalimba.mp3\",\"Duration\":\"00:05:48\",\"AudioCodec\":{\"MimeType\":\"audio/mpeg\",\"FileExtension\":\".mp3\",\"Name\":\"AudioCodec MP3\"}}}", content);
71+
Assert.AreEqual("{\"Tracks\":[{\"Position\":1,\"Artist\":\"Track Artist 1\",\"Title\":\"Track Title 1\",\"Begin\":\"00:00:00\",\"End\":\"00:05:48.0608330\",\"Flags\":[],\"IsLinkedToPreviousTrack\":true}],\"Artist\":\"Cuesheet Artist 1\",\"Title\":\"Cuesheet Title 1\",\"Audiofile\":{\"Name\":\"Kalimba.mp3\",\"Duration\":\"00:05:48.0608330\",\"AudioCodec\":{\"MimeType\":\"audio/mpeg\",\"FileExtension\":\".mp3\",\"Name\":\"AudioCodec MP3\"}}}", content);
7272
}
7373

7474
[TestMethod]

AudioCuesheetEditor.Tests/AudioCuesheetEditor.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<ItemGroup>
1414
<PackageReference Include="Moq" Version="4.20.72" />
15-
<PackageReference Include="coverlet.collector" Version="8.0.0">
15+
<PackageReference Include="coverlet.collector" Version="8.0.1">
1616
<PrivateAssets>all</PrivateAssets>
1717
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1818
</PackageReference>

AudioCuesheetEditor.Tests/Model/AudioCuesheet/CuesheetTests.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -673,12 +673,9 @@ public void StartRecording_WithAudiofile_ShouldStartRecording()
673673
public void RecalculateLastTrackEnd_SingleTrackWithAudiofile_EndSetToAudiofileDuration()
674674
{
675675
// Arrange
676-
var audiofileMock = new Mock<IAudiofile>();
677-
audiofileMock.SetupGet(a => a.Duration).Returns(TimeSpan.FromMinutes(5));
678-
679676
var cuesheet = new Cuesheet
680677
{
681-
Audiofile = audiofileMock.Object
678+
Audiofile = new("Test.mp3", nameof(RecalculateLastTrackEnd_SingleTrackWithAudiofile_EndSetToAudiofileDuration), new AudioCodec("audio/mpeg", ".mp3", "AudioCodec MP3"), TimeSpan.FromMinutes(5))
682679
};
683680
var track = new Track { Position = 1, Begin = TimeSpan.Zero };
684681
cuesheet.AddTrack(track);
@@ -712,12 +709,9 @@ public void RecalculateLastTrackEnd_MultipleTracks_EndSetCorrectly()
712709
public void RecalculateLastTrackEnd_MultipleTracksWithAudiofile_LastTrackEndSetToAudiofileDuration()
713710
{
714711
// Arrange
715-
var audiofileMock = new Mock<IAudiofile>();
716-
audiofileMock.SetupGet(a => a.Duration).Returns(TimeSpan.FromMinutes(5));
717-
718712
var cuesheet = new Cuesheet
719713
{
720-
Audiofile = audiofileMock.Object
714+
Audiofile = new("Test.mp3", nameof(RecalculateLastTrackEnd_SingleTrackWithAudiofile_EndSetToAudiofileDuration), new AudioCodec("audio/mpeg", ".mp3", "AudioCodec MP3"), TimeSpan.FromMinutes(5))
721715
};
722716
var track1 = new Track { Position = 1, Begin = TimeSpan.Zero, End = TimeSpan.FromMinutes(2) };
723717
var track2 = new Track { Position = 2, Begin = TimeSpan.FromMinutes(2) };

AudioCuesheetEditor.Tests/Model/IO/Audio/AudiofileTests.cs

Lines changed: 0 additions & 48 deletions
This file was deleted.

AudioCuesheetEditor.Tests/Services/IO/ImportManagerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ public async Task UploadFilesAsync_WithAudiofile_ImportsCorrectly()
288288
_fileInputManagerMock.Setup(f => f.CheckFileMimeType(file.ContentType, file.Name, FileMimeTypes.Cuesheet, It.IsAny<IEnumerable<string>>())).Returns(false);
289289
_fileInputManagerMock.Setup(f => f.IsValidForImportView(file.ContentType, file.Name)).Returns(false);
290290
_fileInputManagerMock.Setup(f => f.IsValidAudiofile(file.ContentType, file.Name)).Returns(true);
291-
_fileInputManagerMock.Setup(f => f.CreateAudiofileAsync(It.IsAny<FileUpload>(), It.IsAny<Action<Task<Stream>>?>())).ReturnsAsync(new AudioCuesheetEditor.Model.IO.Audio.Audiofile(file.Name));
291+
_fileInputManagerMock.Setup(f => f.CreateAudiofileAsync(It.IsAny<FileUpload>())).ReturnsAsync(new Audiofile(file.Name));
292292

293293
IImportfile? sessionStateContainerImportfile = null;
294294
_sessionStateContainerMock.SetupSet(x => x.Importfile = It.IsAny<IImportfile>()).Callback<IImportfile>(x => sessionStateContainerImportfile = x);

AudioCuesheetEditor/AudioCuesheetEditor.csproj

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,15 @@
2222
<ItemGroup>
2323
<PackageReference Include="HtmlSanitizer" Version="9.0.892" />
2424
<PackageReference Include="MetaBrainz.MusicBrainz" Version="8.0.1" />
25-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.4" />
26-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.4" PrivateAssets="all" />
25+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.5" />
26+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.5" PrivateAssets="all" />
2727
<PackageReference Include="BlazorDownloadFile" Version="2.4.0.2" />
2828
<PackageReference Include="Howler.Blazor" Version="0.10.0" />
2929
<PackageReference Include="Markdig" Version="1.1.1" />
30-
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.4" />
31-
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="10.0.4" />
32-
<PackageReference Include="MudBlazor" Version="9.1.0" />
30+
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.5" />
31+
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="10.0.5" />
32+
<PackageReference Include="MudBlazor" Version="9.2.0" />
3333
<PackageReference Include="Toolbelt.Blazor.HotKeys2" Version="6.2.0" />
34-
<PackageReference Include="z440.atl.core" Version="7.11.0" />
3534
</ItemGroup>
3635

3736
<ItemGroup>

AudioCuesheetEditor/Extensions/InterfaceConverter.cs

Lines changed: 0 additions & 40 deletions
This file was deleted.

AudioCuesheetEditor/Model/AudioCuesheet/Cuesheet.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class Cuesheet() : Validateable, ITraceable, ICuesheet
3838
private List<Track> tracks = [];
3939
private String? artist;
4040
private String? title;
41-
private IAudiofile? audiofile;
41+
private Audiofile? audiofile;
4242
private CDTextfile? cDTextfile;
4343
private String? catalogueNumber;
4444
private readonly List<KeyValuePair<String, Track>> currentlyHandlingLinkedTrackPropertyChange = [];
@@ -89,7 +89,7 @@ public String? Title
8989
FireEvents(previousValue, propertyName: nameof(Title));
9090
}
9191
}
92-
public IAudiofile? Audiofile
92+
public Audiofile? Audiofile
9393
{
9494
get => audiofile;
9595
set
@@ -446,7 +446,7 @@ public override ValidationResult Validate(string property)
446446

447447
private void RecalculateTrackProperties(Track trackToCalculate)
448448
{
449-
if ((Audiofile != null) && (Audiofile.Duration.HasValue) && (trackToCalculate.End.HasValue == false))
449+
if ((Audiofile?.Duration.HasValue == true) && (trackToCalculate.End.HasValue == false))
450450
{
451451
trackToCalculate.End = Audiofile.Duration;
452452
}

AudioCuesheetEditor/Model/IO/Audio/Audiofile.cs

Lines changed: 3 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
namespace AudioCuesheetEditor.Model.IO.Audio
1919
{
2020
[method: JsonConstructor]
21-
public class Audiofile(String name) : IDisposable, IAudiofile
21+
public class Audiofile(String name)
2222
{
2323
public static readonly AudioCodec AudioCodecWEBM = new("audio/webm", ".webm", "AudioCodec WEBM");
2424

@@ -35,20 +35,17 @@ public class Audiofile(String name) : IDisposable, IAudiofile
3535
];
3636

3737
private AudioCodec? audioCodec;
38-
private Stream? contentStream;
3938
private String name = name;
40-
private bool disposedValue;
4139

42-
public event EventHandler? ContentStreamLoaded;
43-
44-
public Audiofile(String name, String objectURL, AudioCodec? audioCodec) : this(name)
40+
public Audiofile(String name, String objectURL, AudioCodec? audioCodec, TimeSpan? duration = null) : this(name)
4541
{
4642
if (String.IsNullOrEmpty(objectURL))
4743
{
4844
throw new ArgumentNullException(nameof(objectURL));
4945
}
5046
ObjectURL = objectURL;
5147
AudioCodec = audioCodec;
48+
Duration = duration;
5249
}
5350

5451
public String Name
@@ -71,32 +68,6 @@ public String Name
7168
[JsonIgnore]
7269
public String? ObjectURL { get; private set; }
7370
/// <summary>
74-
/// Boolean indicating if the stream has fully been loaded
75-
/// </summary>
76-
[JsonIgnore]
77-
public Boolean IsContentStreamLoaded
78-
{
79-
get { return ContentStream != null; }
80-
}
81-
/// <summary>
82-
/// File content stream. Be carefully, this stream is loaded asynchronously. Connect to the StreamLoaded for checking if loading has already been done!
83-
/// </summary>
84-
[JsonIgnore]
85-
public Stream? ContentStream
86-
{
87-
get => contentStream;
88-
set
89-
{
90-
contentStream = value;
91-
if ((ContentStream != null) && (AudioCodec != null))
92-
{
93-
var track = new ATL.Track(ContentStream, AudioCodec.MimeType);
94-
Duration = new TimeSpan(0, 0, track.Duration);
95-
ContentStreamLoaded?.Invoke(this, EventArgs.Empty);
96-
}
97-
}
98-
}
99-
/// <summary>
10071
/// Duration of the audio file
10172
/// </summary>
10273
public TimeSpan? Duration { get; private set; }
@@ -144,30 +115,5 @@ public Boolean PlaybackPossible
144115
return playbackPossible;
145116
}
146117
}
147-
148-
protected virtual void Dispose(bool disposing)
149-
{
150-
if (!disposedValue)
151-
{
152-
if (disposing)
153-
{
154-
if (ContentStream != null)
155-
{
156-
ContentStream.Close();
157-
ContentStream.Dispose();
158-
ContentStream = null;
159-
}
160-
}
161-
162-
disposedValue = true;
163-
}
164-
}
165-
166-
public void Dispose()
167-
{
168-
// Ändern Sie diesen Code nicht. Fügen Sie Bereinigungscode in der Methode "Dispose(bool disposing)" ein.
169-
Dispose(disposing: true);
170-
GC.SuppressFinalize(this);
171-
}
172118
}
173119
}

0 commit comments

Comments
 (0)