Skip to content

Commit 205ecc2

Browse files
committed
Address PR feedback.
1 parent 813b6b1 commit 205ecc2

10 files changed

Lines changed: 156 additions & 94 deletions

Ably.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,9 @@
425425
848ED97326E50D0F0087E800 /* ObjcppTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 848ED97226E50D0F0087E800 /* ObjcppTest.mm */; settings = {COMPILER_FLAGS = "-fmodules"; }; };
426426
848ED97426E50D0F0087E800 /* ObjcppTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 848ED97226E50D0F0087E800 /* ObjcppTest.mm */; settings = {COMPILER_FLAGS = "-fmodules"; }; };
427427
848ED97526E50D0F0087E800 /* ObjcppTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 848ED97226E50D0F0087E800 /* ObjcppTest.mm */; settings = {COMPILER_FLAGS = "-fmodules"; }; };
428+
84CFE1932E07641F00610BAD /* ARTAnnotation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFE1922E07641F00610BAD /* ARTAnnotation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
429+
84CFE1942E07641F00610BAD /* ARTAnnotation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFE1922E07641F00610BAD /* ARTAnnotation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
430+
84CFE1952E07641F00610BAD /* ARTAnnotation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFE1922E07641F00610BAD /* ARTAnnotation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
428431
84D04C262DE8A2EF000E8AE2 /* ARTRestAnnotations.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D04C252DE8A2EF000E8AE2 /* ARTRestAnnotations.h */; settings = {ATTRIBUTES = (Public, ); }; };
429432
84D04C272DE8A2EF000E8AE2 /* ARTRestAnnotations.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D04C252DE8A2EF000E8AE2 /* ARTRestAnnotations.h */; settings = {ATTRIBUTES = (Public, ); }; };
430433
84D04C282DE8A2EF000E8AE2 /* ARTRestAnnotations.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D04C252DE8A2EF000E8AE2 /* ARTRestAnnotations.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -1434,6 +1437,7 @@
14341437
848B1D4F2DF0943100A1AE5B /* ARTWrapperSDKProxyRealtimeAnnotations.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ARTWrapperSDKProxyRealtimeAnnotations.m; sourceTree = "<group>"; };
14351438
848B1D532DF0947600A1AE5B /* ARTWrapperSDKProxyRealtimeAnnotations.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ARTWrapperSDKProxyRealtimeAnnotations.h; path = include/Ably/ARTWrapperSDKProxyRealtimeAnnotations.h; sourceTree = "<group>"; };
14361439
848ED97226E50D0F0087E800 /* ObjcppTest.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ObjcppTest.mm; sourceTree = "<group>"; };
1440+
84CFE1922E07641F00610BAD /* ARTAnnotation+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ARTAnnotation+Private.h"; path = "PrivateHeaders/Ably/ARTAnnotation+Private.h"; sourceTree = "<group>"; };
14371441
84D04C252DE8A2EF000E8AE2 /* ARTRestAnnotations.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ARTRestAnnotations.h; path = include/Ably/ARTRestAnnotations.h; sourceTree = "<group>"; };
14381442
84D04C292DE8A37F000E8AE2 /* ARTRestAnnotations+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ARTRestAnnotations+Private.h"; path = "PrivateHeaders/Ably/ARTRestAnnotations+Private.h"; sourceTree = "<group>"; };
14391443
84D04C2D2DE8A43E000E8AE2 /* ARTRestAnnotations.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ARTRestAnnotations.m; sourceTree = "<group>"; };
@@ -2276,6 +2280,7 @@
22762280
D7F2B8B11E42410D00B65151 /* ARTPresenceMessage+Private.h */,
22772281
96A507A01A377AA50077CDF8 /* ARTPresenceMessage.m */,
22782282
84D04C3D2DE8FB1A000E8AE2 /* ARTAnnotation.h */,
2283+
84CFE1922E07641F00610BAD /* ARTAnnotation+Private.h */,
22792284
84D04C452DE902C5000E8AE2 /* ARTAnnotation.m */,
22802285
EB3239461C59AB2C00892664 /* ARTDataEncoder.h */,
22812286
EB3239421C59AB0400892664 /* ARTDataEncoder.m */,
@@ -2501,6 +2506,7 @@
25012506
96BF615E1A35C1C8004CF2B3 /* ARTTypes.h in Headers */,
25022507
EB503C881C7E4A090053AF00 /* ARTClientOptions+Private.h in Headers */,
25032508
EB2D84F71CD75CCE00F23CDA /* ARTReachability.h in Headers */,
2509+
84CFE1942E07641F00610BAD /* ARTAnnotation+Private.h in Headers */,
25042510
D73B655523EF2B2900D459A6 /* ARTDeltaCodec.h in Headers */,
25052511
213AEA1C2D35A6120067FD5F /* ARTWrapperSDKProxyOptions.h in Headers */,
25062512
215924D52D636DF8004A235C /* ARTWrapperSDKProxyRealtimePresence.h in Headers */,
@@ -2718,6 +2724,7 @@
27182724
D710D49221949AB7008F54AD /* ARTRest+Private.h in Headers */,
27192725
D710D58721949D29008F54AD /* ARTChannelOptions.h in Headers */,
27202726
D710D64521949E61008F54AD /* ARTEventEmitter+Private.h in Headers */,
2727+
84CFE1952E07641F00610BAD /* ARTAnnotation+Private.h in Headers */,
27212728
2105ED2329E7429E00DE6D67 /* ARTPaginatedResult+Subclass.h in Headers */,
27222729
D710D4D121949BC0008F54AD /* ARTPresence+Private.h in Headers */,
27232730
2159248C2D636826004A235C /* ARTWrapperSDKProxyPush.h in Headers */,
@@ -2920,6 +2927,7 @@
29202927
D710D5B421949D2A008F54AD /* ARTDataEncoder.h in Headers */,
29212928
D710D49421949AB8008F54AD /* ARTRest+Private.h in Headers */,
29222929
D710D5AD21949D2A008F54AD /* ARTChannelOptions.h in Headers */,
2930+
84CFE1932E07641F00610BAD /* ARTAnnotation+Private.h in Headers */,
29232931
2105ED2429E7429E00DE6D67 /* ARTPaginatedResult+Subclass.h in Headers */,
29242932
D710D64B21949E62008F54AD /* ARTEventEmitter+Private.h in Headers */,
29252933
2159248B2D636826004A235C /* ARTWrapperSDKProxyPush.h in Headers */,

Source/ARTAnnotation.m

Lines changed: 67 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,37 @@
11
#import "ARTAnnotation.h"
22
#import "ARTJsonEncoder.h"
33
#import "ARTJsonLikeEncoder.h"
4-
#import "ARTBaseMessage+Private.h"
4+
#import "ARTAnnotation+Private.h"
55
#import "ARTNSArray+ARTFunctional.h"
66
#import "ARTInternalLog.h"
77

88
@implementation ARTAnnotation
99

10-
- (instancetype)initWithType:(NSString *)type data:(id)data {
10+
- (instancetype)initWithId:(NSString *)annotationId
11+
action:(ARTAnnotationAction)action
12+
clientId:(NSString *)clientId
13+
name:(NSString *)name
14+
count:(NSNumber *)count
15+
data:(id)data
16+
encoding:(NSString *)encoding
17+
timestamp:(NSDate *)timestamp
18+
serial:(NSString *)serial
19+
messageSerial:(NSString *)messageSerial
20+
type:(NSString *)type
21+
extras:(id<ARTJsonCompatible>)extras {
1122
if (self = [self init]) {
12-
self.type = [type copy];
13-
if (data) {
14-
self.data = data;
15-
self.encoding = @"";
16-
}
17-
}
18-
return self;
19-
}
20-
21-
- (instancetype)initWithType:(NSString *)type data:(id)data clientId:(NSString *)clientId {
22-
if (self = [self initWithType:type data:data]) {
23-
self.clientId = clientId;
23+
_id = annotationId;
24+
_action = action;
25+
_clientId = clientId;
26+
_name = name;
27+
_count = count;
28+
_data = data;
29+
_encoding = encoding;
30+
_timestamp = timestamp;
31+
_serial = serial;
32+
_messageSerial = messageSerial;
33+
_type = type;
34+
_extras = extras;
2435
}
2536
return self;
2637
}
@@ -29,44 +40,61 @@ - (NSString *)description {
2940
NSMutableString *description = [[super description] mutableCopy];
3041
[description deleteCharactersInRange:NSMakeRange(description.length - (description.length>2 ? 2:0), 2)];
3142
[description appendFormat:@",\n"];
43+
[description appendFormat:@" id: %@,\n", self.id];
3244
[description appendFormat:@" action: %@\n", ARTAnnotationActionToStr(self.action)];
45+
[description appendFormat:@" clientId: %@,\n", self.clientId];
46+
[description appendFormat:@" name: %@\n", self.name];
47+
[description appendFormat:@" count: %@\n", self.count];
48+
[description appendFormat:@" data: %@\n", self.data];
49+
[description appendFormat:@" encoding: %@,\n", self.encoding];
50+
[description appendFormat:@" timestamp: %@,\n", self.timestamp];
3351
[description appendFormat:@" serial: %@\n", self.serial];
3452
[description appendFormat:@" messageSerial: %@\n", self.messageSerial];
3553
[description appendFormat:@" type: %@\n", self.type];
36-
[description appendFormat:@" name: %@\n", self.name];
37-
[description appendFormat:@" count: %@\n", self.count];
54+
[description appendFormat:@" extras: %@\n", self.extras];
3855
[description appendFormat:@"}"];
3956
return description;
4057
}
4158

4259
- (id)copyWithZone:(NSZone *)zone {
43-
ARTAnnotation *annotation = [super copyWithZone:zone];
44-
annotation.action = self.action;
45-
annotation.serial = self.serial;
46-
annotation.messageSerial = self.messageSerial;
47-
annotation.type = self.type;
48-
annotation.name = self.name;
49-
annotation.count = self.count;
60+
ARTAnnotation *annotation = [[self.class allocWithZone:zone] init];
61+
annotation->_id = self.id;
62+
annotation->_clientId = self.clientId;
63+
annotation->_timestamp = self.timestamp;
64+
annotation->_data = [self.data copy];
65+
annotation->_extras = self.extras;
66+
annotation->_encoding = self.encoding;
67+
annotation->_action = self.action;
68+
annotation->_serial = self.serial;
69+
annotation->_messageSerial = self.messageSerial;
70+
annotation->_type = self.type;
71+
annotation->_name = self.name;
72+
annotation->_count = self.count;
5073
return annotation;
5174
}
5275

53-
- (NSInteger)messageSize {
54-
// spec is not clear here, issue - https://github.com/ably/specification/issues/336
55-
return [super messageSize];
56-
}
57-
58-
@end
59-
60-
@implementation ARTAnnotation (Decoding)
61-
62-
+ (instancetype)fromEncoded:(NSDictionary *)jsonObject channelOptions:(ARTChannelOptions *)options error:(NSError **)error {
63-
// TODO: implement
64-
return nil;
76+
- (id)decodeWithEncoder:(ARTDataEncoder*)encoder error:(NSError **)error {
77+
ARTDataEncoderOutput *decoded = [encoder decode:self.data encoding:self.encoding];
78+
if (decoded.errorInfo && error) {
79+
*error = [NSError errorWithDomain:ARTAblyErrorDomain code:decoded.errorInfo.code userInfo:@{NSLocalizedDescriptionKey: @"decoding failed",
80+
NSLocalizedFailureReasonErrorKey: decoded.errorInfo.message}];
81+
}
82+
id ret = [self copy];
83+
((ARTAnnotation *)ret)->_data = decoded.data;
84+
((ARTAnnotation *)ret)->_encoding = decoded.encoding;
85+
return ret;
6586
}
6687

67-
+ (NSArray<ARTMessage *> *)fromEncodedArray:(NSArray<NSDictionary *> *)jsonArray channelOptions:(ARTChannelOptions *)options error:(NSError **)error {
68-
// TODO: implement
69-
return nil;
88+
- (id)encodeWithEncoder:(ARTDataEncoder*)encoder error:(NSError **)error {
89+
ARTDataEncoderOutput *encoded = [encoder encode:self.data];
90+
if (encoded.errorInfo && error) {
91+
*error = [NSError errorWithDomain:ARTAblyErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: @"encoding failed",
92+
NSLocalizedFailureReasonErrorKey: encoded.errorInfo.message}];
93+
}
94+
id ret = [self copy];
95+
((ARTAnnotation *)ret)->_data = encoded.data;
96+
((ARTAnnotation *)ret)->_encoding = [NSString artAddEncoding:encoded.encoding toString:self.encoding];
97+
return ret;
7098
}
7199

72100
@end
@@ -83,15 +111,7 @@ + (instancetype)fromEncoded:(NSDictionary *)jsonObject channelOptions:(ARTChanne
83111

84112
#pragma mark - ARTEvent
85113

86-
@implementation ARTEvent (AnnotationAction)
87-
88-
- (instancetype)initWithAnnotationAction:(ARTAnnotationAction)value {
89-
return [self initWithString:[NSString stringWithFormat:@"ARTAnnotation%@", ARTAnnotationActionToStr(value)]];
90-
}
91-
92-
+ (instancetype)newWithAnnotationAction:(ARTAnnotationAction)value {
93-
return [[self alloc] initWithAnnotationAction:value];
94-
}
114+
@implementation ARTEvent (AnnotationType)
95115

96116
- (instancetype)initWithAnnotationType:(NSString *)type {
97117
return [self initWithString:[NSString stringWithFormat:@"ARTAnnotation:%@", type]];

Source/ARTJsonLikeEncoder.m

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -408,23 +408,19 @@ - (ARTAnnotation *)annotationFromDictionary:(NSDictionary *)input {
408408
if (![input isKindOfClass:[NSDictionary class]]) {
409409
return nil;
410410
}
411-
ARTAnnotation *annotation = [[ARTAnnotation alloc] init];
412-
annotation.id = [input artString:@"id"];
413-
annotation.data = [input objectForKey:@"data"];
414-
annotation.encoding = [input artString:@"encoding"];
415-
annotation.clientId = [input artString:@"clientId"];
416-
annotation.timestamp = [input artTimestamp:@"timestamp"];
417-
annotation.connectionId = [input artString:@"connectionId"];
418-
419411
int action = [[input artNumber:@"action"] intValue];
420-
annotation.action = [self annotationActionFromInt:action];
421-
422-
annotation.name = [input artString:@"name"];
423-
annotation.type = [input artString:@"type"];
424-
annotation.serial = [input artString:@"serial"];
425-
annotation.messageSerial = [input artString:@"messageSerial"];
426-
annotation.count = [input artNumber:@"count"];
427-
412+
ARTAnnotation *annotation = [[ARTAnnotation alloc] initWithId:[input artString:@"id"]
413+
action:[self annotationActionFromInt:action]
414+
clientId:[input artString:@"clientId"]
415+
name:[input artString:@"name"]
416+
count:[input artNumber:@"count"]
417+
data:[input objectForKey:@"data"]
418+
encoding:[input artString:@"encoding"]
419+
timestamp:[input artTimestamp:@"timestamp"]
420+
serial:[input artString:@"serial"]
421+
messageSerial:[input artString:@"messageSerial"]
422+
type:[input artString:@"type"]
423+
extras:[input objectForKey:@"extras"]];
428424
return annotation;
429425
}
430426

Source/ARTRealtimeAnnotations.m

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#import "ARTInternalLog.h"
1010
#import "ARTEventEmitter+Private.h"
1111
#import "ARTDataEncoder.h"
12-
#import "ARTBaseMessage+Private.h"
12+
#import "ARTAnnotation+Private.h"
1313
#import "ARTProtocolMessage+Private.h"
1414
#import "ARTEventEmitter+Private.h"
1515
#import "ARTClientOptions.h"
@@ -193,20 +193,8 @@ - (void)onMessage:(ARTProtocolMessage *)message {
193193
}
194194
}
195195

196-
if (!annotation.timestamp) {
197-
annotation.timestamp = message.timestamp;
198-
}
199-
200-
if (!annotation.id) {
201-
annotation.id = [NSString stringWithFormat:@"%@:%d", message.id, i];
202-
}
203-
204-
if (!annotation.connectionId) {
205-
annotation.connectionId = message.connectionId;
206-
}
207-
208196
[_eventEmitter emit:[ARTEvent newWithAnnotationType:annotation.type] with:annotation];
209-
197+
210198
++i;
211199
}
212200
}

Source/Ably.modulemap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ framework module Ably {
4444
header "ARTLog+Private.h"
4545
header "ARTRealtimePresence+Private.h"
4646
header "ARTRestPresence+Private.h"
47+
header "ARTAnnotation+Private.h"
4748
header "ARTRealtimeAnnotations+Private.h"
4849
header "ARTRestAnnotations+Private.h"
4950
header "ARTFallback+Private.h"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
@import Foundation;
2+
#import <Ably/ARTAnnotation.h>
3+
#import "ARTDataEncoder.h"
4+
5+
NS_ASSUME_NONNULL_BEGIN
6+
7+
@interface ARTAnnotation ()
8+
9+
@property (nonatomic, readonly) BOOL isIdEmpty;
10+
11+
- (id)decodeWithEncoder:(ARTDataEncoder *)encoder error:(NSError *__nullable*__nullable)error;
12+
- (id)encodeWithEncoder:(ARTDataEncoder *)encoder error:(NSError *__nullable*__nullable)error;
13+
14+
@end
15+
16+
NS_ASSUME_NONNULL_END

Source/PrivateHeaders/Ably/ARTRealtimeAnnotations+Private.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#import <Ably/ARTRealtimeAnnotations.h>
2-
#import <Ably/ARTRealtimeChannel+Private.h>
2+
#import "ARTRealtimeChannel+Private.h"
33

44
NS_ASSUME_NONNULL_BEGIN
55

Source/PrivateHeaders/Ably/ARTRestAnnotations+Private.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#import <Ably/ARTRestAnnotations.h>
2-
#import <Ably/ARTQueuedDealloc.h>
2+
#import "ARTQueuedDealloc.h"
33

44
NS_ASSUME_NONNULL_BEGIN
55

Source/include/Ably/ARTAnnotation.h

Lines changed: 44 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
#import <Ably/ARTBaseMessage.h>
1+
#import <Foundation/Foundation.h>
2+
#import <Ably/ARTTypes.h>
23
#import <Ably/ARTEventEmitter.h>
34

45
/**
@@ -21,35 +22,63 @@ NSString *_Nonnull ARTAnnotationActionToStr(ARTAnnotationAction action);
2122

2223
NS_ASSUME_NONNULL_BEGIN
2324

24-
@interface ARTAnnotation : ARTBaseMessage
25+
NS_SWIFT_SENDABLE
26+
@interface ARTAnnotation : NSObject<NSCopying>
27+
28+
/// A Unique ID assigned by Ably to this message.
29+
@property (nullable, readonly, nonatomic) NSString *id;
2530

2631
/// The action, whether this is an annotation being added or removed, one of the `ARTAnnotationAction` enum values.
27-
@property (readwrite, nonatomic) ARTAnnotationAction action;
32+
@property (readonly, nonatomic) ARTAnnotationAction action;
33+
34+
/// The client ID of the publisher of this message.
35+
@property (nonatomic, readonly, nullable) NSString *clientId;
36+
37+
/// The name of this annotation. This is the field that most annotation aggregations will operate on. For example, using "distinct.v1" aggregation (specified in the type), the message summary will show a list of clients who have published an annotation with each distinct annotation.name.
38+
@property (nullable, readonly, nonatomic) NSString *name;
39+
40+
/// An optional count, only relevant to certain aggregation methods, see aggregation methods documentation for more info.
41+
@property (nullable, readonly, nonatomic) NSNumber *count;
42+
43+
/// The message payload, if provided.
44+
@property (nonatomic, readonly, nullable) id data;
45+
46+
/// This is typically empty, as all messages received from Ably are automatically decoded client-side using this value. However, if the message encoding cannot be processed, this attribute contains the remaining transformations not applied to the `data` payload.
47+
@property (nonatomic, readonly, nullable) NSString *encoding;
48+
49+
/// Timestamp of when the message was received by Ably, as a `NSDate` object.
50+
@property (nullable, nonatomic, readonly) NSDate *timestamp;
2851

2952
/// This annotation's unique serial (lexicographically totally ordered).
30-
@property (nullable, readwrite, nonatomic) NSString *serial;
53+
@property (readonly, nonatomic) NSString *serial;
3154

3255
/// The serial of the message (of type `MESSAGE_CREATE`) that this annotation is annotating.
33-
@property (nullable, readwrite, nonatomic) NSString *messageSerial;
56+
@property (readonly, nonatomic) NSString *messageSerial;
3457

3558
/// The type of annotation it is, typically some identifier together with an aggregation method; for example: "emoji:distinct.v1". Handled opaquely by the SDK and validated serverside.
36-
@property (nullable, readwrite, nonatomic) NSString *type;
59+
@property (readonly, nonatomic) NSString *type;
3760

38-
/// The name of this annotation. This is the field that most annotation aggregations will operate on. For example, using "distinct.v1" aggregation (specified in the type), the message summary will show a list of clients who have published an annotation with each distinct annotation.name.
39-
@property (nullable, readwrite, nonatomic) NSString *name;
40-
41-
/// An optional count, only relevant to certain aggregation methods, see aggregation methods documentation for more info.
42-
@property (nullable, readwrite, nonatomic) NSNumber *count;
61+
/// A JSON object of arbitrary key-value pairs that may contain metadata, and/or ancillary payloads.
62+
@property (nullable, readonly, nonatomic) id<ARTJsonCompatible> extras;
4363

64+
- (instancetype)initWithId:(nullable NSString *)annotationId
65+
action:(ARTAnnotationAction)action
66+
clientId:(nullable NSString *)clientId
67+
name:(nullable NSString *)name
68+
count:(nullable NSNumber *)count
69+
data:(nullable id)data
70+
encoding:(nullable NSString *)encoding
71+
timestamp:(NSDate *)timestamp
72+
serial:(NSString *)serial
73+
messageSerial:(NSString *)messageSerial
74+
type:(NSString *)type
75+
extras:(nullable id<ARTJsonCompatible>)extras;
4476
@end
4577

4678
#pragma mark - ARTEvent
4779

4880
/// :nodoc:
49-
@interface ARTEvent (AnnotationAction)
50-
- (instancetype)initWithAnnotationAction:(ARTAnnotationAction)value;
51-
+ (instancetype)newWithAnnotationAction:(ARTAnnotationAction)value;
52-
81+
@interface ARTEvent (AnnotationType)
5382
- (instancetype)initWithAnnotationType:(NSString *)type;
5483
+ (instancetype)newWithAnnotationType:(NSString *)type;
5584
@end

0 commit comments

Comments
 (0)