Skip to content

Commit

Permalink
id functions and variables cannot be null,
Browse files Browse the repository at this point in the history
fix a long standing bug setting funcs/vars to an unknown on an offline device - force those to be empty array and dictionary
  • Loading branch information
idokleinman committed Sep 8, 2016
1 parent 708474a commit 64189e6
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 15 deletions.
4 changes: 2 additions & 2 deletions Pod/Classes/SDK/SparkDevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,11 @@ typedef NS_ENUM(NSInteger, SparkDeviceSystemEvent) {
/**
* List of function names exposed by device
*/
@property (strong, nonatomic, readonly) NSArray<NSString *> *functions;
@property (strong, nonatomic, nonnull, readonly) NSArray<NSString *> *functions;
/**
* Dictionary of exposed variables on device with their respective types.
*/
@property (strong, nonatomic, readonly) NSDictionary<NSString *, NSString *> *variables; // @{varName : varType, ...}
@property (strong, nonatomic, nonnull, readonly) NSDictionary<NSString *, NSString *> *variables; // @{varName : varType, ...}

@property (strong, nonatomic, nullable, readonly) NSString *lastApp;

Expand Down
34 changes: 21 additions & 13 deletions Pod/Classes/SDK/SparkDevice.m
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@

@interface SparkDevice()

@property (strong, nonatomic) NSString* id;
@property (strong, nonatomic, nonnull) NSString* id;
@property (nonatomic) BOOL connected; // might be impossible
@property (strong, nonatomic) NSArray *functions;
@property (strong, nonatomic) NSDictionary *variables;
@property (strong, nonatomic) NSString *version;
@property (strong, nonatomic, nonnull) NSArray *functions;
@property (strong, nonatomic, nonnull) NSDictionary *variables;
@property (strong, nonatomic, nullable) NSString *version;
//@property (nonatomic) SparkDeviceType type;
@property (nonatomic) BOOL requiresUpdate;
@property (nonatomic, strong) AFHTTPSessionManager *manager;
Expand All @@ -49,19 +49,27 @@ -(nullable instancetype)initWithParams:(NSDictionary *)params
return nil;
}

self.requiresUpdate = NO;
_requiresUpdate = NO;

_name = nil;
if ([params[@"name"] isKindOfClass:[NSString class]])
{
_name = params[@"name"];
}

self.connected = [params[@"connected"] boolValue] == YES;
_connected = [params[@"connected"] boolValue] == YES;

self.functions = params[@"functions"] ?: @[];
self.variables = params[@"variables"] ?: @{};
_functions = params[@"functions"] ?: @[];
_variables = params[@"variables"] ?: @{};

if (![_functions isKindOfClass:[NSArray class]]) {
self.functions = @[];
}

if (![_variables isKindOfClass:[NSDictionary class]]) {
_variables = @{};
}

_id = params[@"id"];

_type = SparkDeviceTypeUnknown;
Expand Down Expand Up @@ -94,22 +102,22 @@ -(nullable instancetype)initWithParams:(NSDictionary *)params

if ([params[@"product_id"] isKindOfClass:[NSNumber class]])
{
self.productId = [params[@"product_id"] intValue];
_productId = [params[@"product_id"] intValue];
}

if ((params[@"last_iccid"]) && ([params[@"last_iccid"] isKindOfClass:[NSString class]]))
{
self.lastIccid = params[@"last_iccid"];
_lastIccid = params[@"last_iccid"];
}

if ((params[@"imei"]) && ([params[@"imei"] isKindOfClass:[NSString class]]))
{
self.imei = params[@"imei"];
_imei = params[@"imei"];
}

if ((params[@"status"]) && ([params[@"status"] isKindOfClass:[NSString class]]))
{
self.status = params[@"status"];
_status = params[@"status"];
}


Expand Down Expand Up @@ -146,7 +154,7 @@ -(nullable instancetype)initWithParams:(NSDictionary *)params

if (params[@"device_needs_update"])
{
self.requiresUpdate = YES;
_requiresUpdate = YES;
}

self.manager = [[AFHTTPSessionManager alloc] initWithBaseURL:self.baseURL];
Expand Down

0 comments on commit 64189e6

Please # to comment.