summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fischer <joeljfischer@gmail.com>2018-04-27 11:20:08 -0400
committerJoel Fischer <joeljfischer@gmail.com>2018-04-27 11:20:08 -0400
commit0366a9a6e14c3826977ee753ceb47de39a0d1360 (patch)
treeb467697fb7a085144fdbc877b619c0f6ec375aa9
parent71df2c33ffef83718217bb5a0a78d22017cfeb04 (diff)
downloadsdl_ios-0366a9a6e14c3826977ee753ceb47de39a0d1360.tar.gz
Fixed uploading multiple artworks when only one is needed
-rw-r--r--SmartDeviceLink/SDLArtwork.m24
-rw-r--r--SmartDeviceLink/SDLFile.m24
-rw-r--r--SmartDeviceLink/SDLMenuManager.m4
3 files changed, 50 insertions, 2 deletions
diff --git a/SmartDeviceLink/SDLArtwork.m b/SmartDeviceLink/SDLArtwork.m
index 062374858..bf2861b67 100644
--- a/SmartDeviceLink/SDLArtwork.m
+++ b/SmartDeviceLink/SDLArtwork.m
@@ -111,6 +111,30 @@ NS_ASSUME_NONNULL_BEGIN
return formattedHash;
}
+#pragma mark - NSObject overrides
+
+- (NSUInteger)hash {
+ return self.name.hash ^ self.data.hash;
+}
+
+- (BOOL)isEqual:(id)object {
+ if (self == object) { return YES; }
+
+ if (![object isKindOfClass:[SDLArtwork class]]) { return NO; }
+
+ return [self isEqualToArtwork:(SDLArtwork *)object];
+}
+
+- (BOOL)isEqualToArtwork:(SDLArtwork *)artwork {
+ if (!artwork) { return NO; }
+
+ BOOL haveEqualNames = [self.name isEqualToString:artwork.name];
+ BOOL haveEqualData = [self.data isEqualToData:artwork.data];
+ BOOL haveEqualFormats = [self.fileType isEqualToEnum:artwork.fileType];
+
+ return haveEqualNames && haveEqualData && haveEqualFormats;
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLFile.m b/SmartDeviceLink/SDLFile.m
index 9fc4d5423..522171f24 100644
--- a/SmartDeviceLink/SDLFile.m
+++ b/SmartDeviceLink/SDLFile.m
@@ -161,6 +161,30 @@ NS_ASSUME_NONNULL_BEGIN
return [[self.class allocWithZone:zone] initWithFileURL:_fileURL name:_name persistent:_persistent];
}
+#pragma mark - NSObject overrides
+
+- (NSUInteger)hash {
+ return self.name.hash ^ self.data.hash;
+}
+
+- (BOOL)isEqual:(id)object {
+ if (self == object) { return YES; }
+
+ if (![object isKindOfClass:[SDLFile class]]) { return NO; }
+
+ return [self isEqualToFile:(SDLFile *)object];
+}
+
+- (BOOL)isEqualToFile:(SDLFile *)file {
+ if (!file) { return NO; }
+
+ BOOL haveEqualNames = [self.name isEqualToString:file.name];
+ BOOL haveEqualData = [self.data isEqualToData:file.data];
+ BOOL haveEqualFormats = [self.fileType isEqualToEnum:file.fileType];
+
+ return haveEqualNames && haveEqualData && haveEqualFormats;
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMenuManager.m b/SmartDeviceLink/SDLMenuManager.m
index 59d339969..6997e2e6c 100644
--- a/SmartDeviceLink/SDLMenuManager.m
+++ b/SmartDeviceLink/SDLMenuManager.m
@@ -250,7 +250,7 @@ UInt32 const MenuCellIdMin = 1;
return @[];
}
- NSMutableArray<SDLArtwork *> *mutableArtworks = [NSMutableArray array];
+ NSMutableSet<SDLArtwork *> *mutableArtworks = [NSMutableSet set];
for (SDLMenuCell *cell in cells) {
if (cell.icon != nil && ![self.fileManager hasUploadedFile:cell.icon]) {
[mutableArtworks addObject:cell.icon];
@@ -261,7 +261,7 @@ UInt32 const MenuCellIdMin = 1;
}
}
- return [mutableArtworks copy];
+ return [mutableArtworks allObjects];
}
#pragma mark IDs