Skip to content

Commit 42b8636

Browse files
committedFeb 29, 2020
Added MB error reporting for non-interactive queries
1 parent a7dbbd9 commit 42b8636

File tree

2 files changed

+86
-38
lines changed

2 files changed

+86
-38
lines changed
 

‎CompactDisc/CompactDiscDocument.m

+45-22
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ - (void) discEjected { [self setDisc:nil]; }
292292
#pragma mark State
293293

294294
- (BOOL) encodeAllowed { return ([self discInDrive] && NO == [self emptySelection] && NO == [self ripInProgress] && NO == [self encodeInProgress]); }
295-
- (BOOL) queryMusicBrainzAllowed { return [self discInDrive]; }
295+
- (BOOL) queryMusicBrainzAllowed { return YES; }
296296
- (BOOL) ejectDiscAllowed { return [self discInDrive]; }
297297
- (BOOL) submitDiscIdAllowed { return [self discInDrive]; }
298298
- (BOOL) emptySelection { return (0 == [[self selectedTracks] count]); }
@@ -506,32 +506,24 @@ - (IBAction) queryMusicBrainz:(id)sender
506506
return;
507507
}
508508

509-
PerformMusicBrainzQuery([[self disc] discID], ^(NSArray *results, NSError *error) {
509+
PerformMusicBrainzQuery([self discID], ^(NSArray *results, NSError *error) {
510510
if(nil == results) {
511511
if(nil != error) {
512512
NSAlert *alert = [NSAlert alertWithError:error];
513513
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
514514
}];
515515
}
516-
return;
517516
}
518517
else if(0 == [results count]) {
519-
NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedStringFromTable(@"No matches found.", @"CompactDisc", @"") defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:NSLocalizedStringFromTable(@"No matching releases were found in MusicBrainz.", @"CompactDisc", @"")];
518+
NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedStringFromTable(@"No matches.", @"CompactDisc", @"") defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:NSLocalizedStringFromTable(@"No releases matching this disc were found in MusicBrainz.", @"CompactDisc", @"")];
520519
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
521520
}];
522-
523-
return;
524521
}
525522
// If only match was found, update ourselves
526523
else if(1 == [results count]) {
527524
NSDictionary *release = [results firstObject];
528525
[self updateMetadataFromMusicBrainz:release];
529-
NSString *releaseID = [release objectForKey:@"albumId"];
530-
PerformCoverArtArchiveQuery(releaseID, ^(NSImage *image, NSError *error) {
531-
if(nil != image) {
532-
[self setAlbumArt:image];
533-
}
534-
});
526+
[self downloadAlbumArt:sender];
535527
}
536528
else {
537529
MusicBrainzMatchSheet *sheet = [[MusicBrainzMatchSheet alloc] init];
@@ -540,12 +532,7 @@ - (IBAction) queryMusicBrainz:(id)sender
540532
if(NSOKButton == returnCode) {
541533
NSDictionary *release = [sheet selectedRelease];
542534
[self updateMetadataFromMusicBrainz:release];
543-
NSString *releaseID = [release objectForKey:@"albumId"];
544-
PerformCoverArtArchiveQuery(releaseID, ^(NSImage *image, NSError *error) {
545-
if(nil != image) {
546-
[self setAlbumArt:image];
547-
}
548-
});
535+
[self downloadAlbumArt:sender];
549536
}
550537
}];
551538
[sheet release];
@@ -588,13 +575,39 @@ - (IBAction) selectPreviousTrack:(id)sender { [_trackController selectPrevio
588575

589576
- (IBAction) downloadAlbumArt:(id)sender
590577
{
591-
if(NULL == _musicbrainzAlbumId) {
578+
if(![self queryMusicBrainzAllowed]) {
579+
return;
580+
}
581+
582+
if(nil == _musicbrainzAlbumId) {
592583
PerformMusicBrainzQuery([self discID], ^(NSArray *results, NSError *error) {
593-
if(0 < [results count]) {
584+
if(nil == results) {
585+
if(nil != error) {
586+
NSAlert *alert = [NSAlert alertWithError:error];
587+
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
588+
}];
589+
}
590+
}
591+
else if(0 == [results count]) {
592+
NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedStringFromTable(@"No matches.", @"CompactDisc", @"") defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:NSLocalizedStringFromTable(@"No releases matching this disc were found in MusicBrainz.", @"CompactDisc", @"")];
593+
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
594+
}];
595+
}
596+
else {
594597
NSDictionary *release = [results firstObject];
595598
NSString *releaseID = [release objectForKey:@"albumId"];
596599
PerformCoverArtArchiveQuery(releaseID, ^(NSImage *image, NSError *error) {
597-
if(nil != image) {
600+
if(nil != error) {
601+
NSAlert *alert = [NSAlert alertWithError:error];
602+
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
603+
}];
604+
}
605+
else if(nil == image) {
606+
NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedStringFromTable(@"No album art.", @"CompactDisc", @"") defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:NSLocalizedStringFromTable(@"No front cover art matching this disc was found.", @"CompactDisc", @"")];
607+
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
608+
}];
609+
}
610+
else {
598611
[self setAlbumArt:image];
599612
}
600613
});
@@ -603,7 +616,17 @@ - (IBAction) downloadAlbumArt:(id)sender
603616
}
604617
else {
605618
PerformCoverArtArchiveQuery(_musicbrainzAlbumId, ^(NSImage *image, NSError *error) {
606-
if(nil != image) {
619+
if(nil != error) {
620+
NSAlert *alert = [NSAlert alertWithError:error];
621+
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
622+
}];
623+
}
624+
else if(nil == image) {
625+
NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedStringFromTable(@"No album art.", @"CompactDisc", @"") defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:NSLocalizedStringFromTable(@"No front cover art matching this disc was found.", @"CompactDisc", @"")];
626+
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
627+
}];
628+
}
629+
else {
607630
[self setAlbumArt:image];
608631
}
609632
});

‎CueSheet/CueSheetDocument.m

+41-16
Original file line numberDiff line numberDiff line change
@@ -596,25 +596,17 @@ - (IBAction) queryMusicBrainz:(id)sender
596596
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
597597
}];
598598
}
599-
return;
600599
}
601600
else if(0 == [results count]) {
602-
NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedStringFromTable(@"No matches found.", @"CompactDisc", @"") defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:NSLocalizedStringFromTable(@"No matching releases were found in MusicBrainz.", @"CompactDisc", @"")];
601+
NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedStringFromTable(@"No matches.", @"CompactDisc", @"") defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:NSLocalizedStringFromTable(@"No releases matching this disc were found in MusicBrainz.", @"CompactDisc", @"")];
603602
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
604603
}];
605-
606-
return;
607604
}
608605
// If only match was found, update ourselves
609606
else if(1 == [results count]) {
610607
NSDictionary *release = [results firstObject];
611608
[self updateMetadataFromMusicBrainz:release];
612-
NSString *releaseID = [release objectForKey:@"albumId"];
613-
PerformCoverArtArchiveQuery(releaseID, ^(NSImage *image, NSError *error) {
614-
if(nil != image) {
615-
[self setAlbumArt:image];
616-
}
617-
});
609+
[self downloadAlbumArt:sender];
618610
}
619611
else {
620612
MusicBrainzMatchSheet *sheet = [[MusicBrainzMatchSheet alloc] init];
@@ -623,12 +615,7 @@ - (IBAction) queryMusicBrainz:(id)sender
623615
if(NSOKButton == returnCode) {
624616
NSDictionary *release = [sheet selectedRelease];
625617
[self updateMetadataFromMusicBrainz:release];
626-
NSString *releaseID = [release objectForKey:@"albumId"];
627-
PerformCoverArtArchiveQuery(releaseID, ^(NSImage *image, NSError *error) {
628-
if(nil != image) {
629-
[self setAlbumArt:image];
630-
}
631-
});
618+
[self downloadAlbumArt:sender];
632619
}
633620
}];
634621
[sheet release];
@@ -671,6 +658,44 @@ - (IBAction) selectPreviousTrack:(id)sender { [_trackController selectPrevio
671658

672659
- (IBAction) downloadAlbumArt:(id)sender
673660
{
661+
if(![self queryMusicBrainzAllowed]) {
662+
return;
663+
}
664+
665+
PerformMusicBrainzQuery([self discID], ^(NSArray *results, NSError *error) {
666+
if(nil == results) {
667+
if(nil != error) {
668+
NSAlert *alert = [NSAlert alertWithError:error];
669+
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
670+
}];
671+
}
672+
}
673+
else if(0 == [results count]) {
674+
NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedStringFromTable(@"No matches.", @"CompactDisc", @"") defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:NSLocalizedStringFromTable(@"No releases matching this disc were found in MusicBrainz.", @"CompactDisc", @"")];
675+
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
676+
}];
677+
}
678+
else {
679+
NSDictionary *release = [results firstObject];
680+
[self updateMetadataFromMusicBrainz:release];
681+
NSString *releaseID = [release objectForKey:@"albumId"];
682+
PerformCoverArtArchiveQuery(releaseID, ^(NSImage *image, NSError *error) {
683+
if(nil != error) {
684+
NSAlert *alert = [NSAlert alertWithError:error];
685+
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
686+
}];
687+
}
688+
else if(nil == image) {
689+
NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedStringFromTable(@"No album art.", @"CompactDisc", @"") defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:NSLocalizedStringFromTable(@"No front cover art matching this disc was found.", @"CompactDisc", @"")];
690+
[alert beginSheetModalForWindow:[self windowForSheet] completionHandler:^(NSModalResponse returnCode) {
691+
}];
692+
}
693+
else {
694+
[self setAlbumArt:image];
695+
}
696+
});
697+
}
698+
});
674699
}
675700

676701
- (IBAction) selectAlbumArt:(id) sender

0 commit comments

Comments
 (0)
Please sign in to comment.