diff options
author | Joel Fischer <joeljfischer@gmail.com> | 2018-04-27 11:20:08 -0400 |
---|---|---|
committer | Joel Fischer <joeljfischer@gmail.com> | 2018-04-27 11:20:08 -0400 |
commit | 0366a9a6e14c3826977ee753ceb47de39a0d1360 (patch) | |
tree | b467697fb7a085144fdbc877b619c0f6ec375aa9 | |
parent | 71df2c33ffef83718217bb5a0a78d22017cfeb04 (diff) | |
download | sdl_ios-0366a9a6e14c3826977ee753ceb47de39a0d1360.tar.gz |
Fixed uploading multiple artworks when only one is needed
-rw-r--r-- | SmartDeviceLink/SDLArtwork.m | 24 | ||||
-rw-r--r-- | SmartDeviceLink/SDLFile.m | 24 | ||||
-rw-r--r-- | SmartDeviceLink/SDLMenuManager.m | 4 |
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 |