1 | //
|
2 | // BranchContentMetadata+RNBranch.m
|
3 | // Branch-SDK
|
4 | //
|
5 | // Created by Jimmy Dee on 12/6/17.
|
6 | //
|
7 |
|
8 | #import "BranchContentMetadata+RNBranch.h"
|
9 | #import "NSObject+RNBranch.h"
|
10 | #import "RNBranchProperty.h"
|
11 |
|
12 | @implementation BranchContentMetadata(RNBranch)
|
13 |
|
14 | + (NSDictionary<NSString *,RNBranchProperty *> *)supportedProperties
|
15 | {
|
16 | static NSDictionary<NSString *, RNBranchProperty *> *_properties;
|
17 | static dispatch_once_t once = 0;
|
18 | dispatch_once(&once, ^{
|
19 | _properties =
|
20 | @{
|
21 | @"contentSchema": [RNBranchProperty propertyWithSetterSelector:@selector(setContentSchema:) type:NSString.class],
|
22 | @"quantity": [RNBranchProperty propertyWithSetterSelector:@selector(setQuantityWithNumber:) type:NSNumber.class],
|
23 | @"price": [RNBranchProperty propertyWithSetterSelector:@selector(setPriceWithString:) type:NSString.class],
|
24 | @"currency": [RNBranchProperty propertyWithSetterSelector:@selector(setCurrency:) type:NSString.class],
|
25 | @"sku": [RNBranchProperty propertyWithSetterSelector:@selector(setSku:) type:NSString.class],
|
26 | @"productName": [RNBranchProperty propertyWithSetterSelector:@selector(setProductName:) type:NSString.class],
|
27 | @"productBrand": [RNBranchProperty propertyWithSetterSelector:@selector(setProductBrand:) type:NSString.class],
|
28 | @"productCategory": [RNBranchProperty propertyWithSetterSelector:@selector(setProductCategory:) type:NSString.class],
|
29 | @"productVariant": [RNBranchProperty propertyWithSetterSelector:@selector(setProductVariant:) type:NSString.class],
|
30 | @"condition": [RNBranchProperty propertyWithSetterSelector:@selector(setCondition:) type:NSString.class],
|
31 | @"ratingAverage": [RNBranchProperty propertyWithSetterSelector:@selector(setRatingAverageWithNumber:) type:NSNumber.class],
|
32 | @"ratingCount": [RNBranchProperty propertyWithSetterSelector:@selector(setRatingCountWithNumber:) type:NSNumber.class],
|
33 | @"ratingMax": [RNBranchProperty propertyWithSetterSelector:@selector(setRatingMaxWithNumber:) type:NSNumber.class],
|
34 | @"addressStreet": [RNBranchProperty propertyWithSetterSelector:@selector(setAddressStreet:) type:NSString.class],
|
35 | @"addressCity": [RNBranchProperty propertyWithSetterSelector:@selector(setAddressCity:) type:NSString.class],
|
36 | @"addressRegion": [RNBranchProperty propertyWithSetterSelector:@selector(setAddressRegion:) type:NSString.class],
|
37 | @"addressCountry": [RNBranchProperty propertyWithSetterSelector:@selector(setAddressCountry:) type:NSString.class],
|
38 | @"addressPostalCode": [RNBranchProperty propertyWithSetterSelector:@selector(setAddressPostalCode:) type:NSString.class],
|
39 | @"latitude": [RNBranchProperty propertyWithSetterSelector:@selector(setLatitudeWithNumber:) type:NSNumber.class],
|
40 | @"longitude": [RNBranchProperty propertyWithSetterSelector:@selector(setLongitudeWithNumber:) type:NSNumber.class],
|
41 | @"imageCaptions": [RNBranchProperty propertyWithSetterSelector:@selector(setImageCaptionsWithArray:) type:NSArray.class],
|
42 | @"customMetadata": [RNBranchProperty propertyWithSetterSelector:@selector(setCustomMetadataWithDictionary:) type:NSDictionary.class]
|
43 | };
|
44 | });
|
45 |
|
46 | return _properties;
|
47 | }
|
48 |
|
49 | - (instancetype)initWithMap:(NSDictionary *)map
|
50 | {
|
51 | self = [self init];
|
52 | if (self) {
|
53 | [self setSupportedPropertiesWithMap:map];
|
54 | }
|
55 | return self;
|
56 | }
|
57 |
|
58 | - (void)setQuantityWithNumber:(NSNumber *)quantity
|
59 | {
|
60 | self.quantity = quantity.doubleValue;
|
61 | }
|
62 |
|
63 | - (void)setPriceWithString:(NSString *)price
|
64 | {
|
65 | self.price = [NSDecimalNumber decimalNumberWithString:price];
|
66 | }
|
67 |
|
68 | - (void)setRatingAverageWithNumber:(NSNumber *)ratingAverage
|
69 | {
|
70 | self.ratingAverage = ratingAverage.doubleValue;
|
71 | }
|
72 |
|
73 | - (void)setRatingCountWithNumber:(NSNumber *)ratingCount
|
74 | {
|
75 | self.ratingCount = ratingCount.integerValue;
|
76 | }
|
77 |
|
78 | - (void)setRatingMaxWithNumber:(NSNumber *)ratingMax
|
79 | {
|
80 | self.ratingMax = ratingMax.doubleValue;
|
81 | }
|
82 |
|
83 | - (void)setLatitudeWithNumber:(NSNumber *)latitude
|
84 | {
|
85 | self.latitude = latitude.doubleValue;
|
86 | }
|
87 |
|
88 | - (void)setLongitudeWithNumber:(NSNumber *)longitude
|
89 | {
|
90 | self.longitude = longitude.doubleValue;
|
91 | }
|
92 |
|
93 | - (void)setImageCaptionsWithArray:(NSArray *)imageCaptions
|
94 | {
|
95 | self.imageCaptions = imageCaptions.mutableCopy;
|
96 | }
|
97 |
|
98 | - (void)setCustomMetadataWithDictionary:(NSDictionary *)customMetadata
|
99 | {
|
100 | self.customMetadata = customMetadata.mutableCopy;
|
101 | }
|
102 |
|
103 | @end
|