Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
6B9BDF7020E18E5B00F13155 /* CustomImageRenderer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6B9BDF6F20E18E5B00F13155 /* CustomImageRenderer.mm */; };
6B9BDFCC20F6D11F00F13155 /* ADCResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B9BDFCB20F6D11F00F13155 /* ADCResolver.m */; };
6BA9091B23985CB5009421CA /* Adaptive1.0.png in Resources */ = {isa = PBXBuildFile; fileRef = 6BA9091A23985CB5009421CA /* Adaptive1.0.png */; };
6BBE841D23CD1A4900ECA586 /* Action.ShowCard.Style.json in Resources */ = {isa = PBXBuildFile; fileRef = 6BBE841C23CD1A4900ECA586 /* Action.ShowCard.Style.json */; };
6BF339D620A665E600DA5973 /* CustomTextBlockRenderer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6BF339D420A665E600DA5973 /* CustomTextBlockRenderer.mm */; };
6BF339E320A66A3F00DA5973 /* AdaptiveCards.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BF339E220A66A3F00DA5973 /* AdaptiveCards.framework */; };
6BF339E420A66A4D00DA5973 /* AdaptiveCards.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BF339E220A66A3F00DA5973 /* AdaptiveCards.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
Expand Down Expand Up @@ -150,6 +151,7 @@
6B9BDFCB20F6D11F00F13155 /* ADCResolver.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADCResolver.m; sourceTree = "<group>"; };
6B9BDFCD20F6D16E00F13155 /* ADCResolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADCResolver.h; sourceTree = "<group>"; };
6BA9091A23985CB5009421CA /* Adaptive1.0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Adaptive1.0.png; path = ../../../../../assets/Adaptive1.0.png; sourceTree = "<group>"; };
6BBE841C23CD1A4900ECA586 /* Action.ShowCard.Style.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = Action.ShowCard.Style.json; path = ../../../../../samples/v1.0/Elements/Action.ShowCard.Style.json; sourceTree = "<group>"; };
6BF339D420A665E600DA5973 /* CustomTextBlockRenderer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CustomTextBlockRenderer.mm; sourceTree = "<group>"; };
6BF339D520A665E600DA5973 /* CustomTextBlockRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextBlockRenderer.h; sourceTree = "<group>"; };
6BF339E220A66A3F00DA5973 /* AdaptiveCards.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AdaptiveCards.framework; sourceTree = BUILT_PRODUCTS_DIR; };
Expand Down Expand Up @@ -223,6 +225,7 @@
6B150A0823034DAB00046B3A /* TestFiles */ = {
isa = PBXGroup;
children = (
6BBE841C23CD1A4900ECA586 /* Action.ShowCard.Style.json */,
6B150A0D23034F2800046B3A /* ActivityUpdate.json */,
6B150A32230354F200046B3A /* Column.json */,
6B150A33230354F200046B3A /* Column.Size.Ratio.json */,
Expand Down Expand Up @@ -513,6 +516,7 @@
6B150A1223034F2800046B3A /* Restaurant.json in Resources */,
6B150A0F23034F2800046B3A /* Feedback.json in Resources */,
30860BC420C9B5C9009F9D99 /* (null) in Resources */,
6BBE841D23CD1A4900ECA586 /* Action.ShowCard.Style.json in Resources */,
6B150A27230353AB00046B3A /* TextBlock.HorizontalAlignment.json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
// Copyright © 2017 Microsoft. All rights reserved.
//

#import "AdaptiveCards/ACOHostConfigPrivate.h"
#import "AdaptiveCards/ACORemoteResourceInformationPrivate.h"
#import "AdaptiveCards/ACRShowCardTarget.h"
#import "AdaptiveCards/ACRViewPrivate.h"
Expand Down Expand Up @@ -243,6 +244,24 @@ - (void)testChoiceSetInputCanGatherDefaultValues
XCTAssertTrue([str isEqualToString:expectedString]);
}

- (void)testMaxActionConfig
{
ACOHostConfig *config = [[ACOHostConfig alloc] init];
auto adaptiveConfig = [config getHostConfig];
ActionsConfig actionConfig;
actionConfig.maxActions = 2;
adaptiveConfig->SetActions(actionConfig);
NSArray<NSString *> *payloadNames = @[ @"Action.ShowCard.Style" ];
NSArray<ACOAdaptiveCard *> *cards = [self prepCards:payloadNames];
ACRRenderResult *result = [ACRRenderer render:cards[0] config:config widthConstraint:320.0];
XCTAssertTrue(result.warnings.count == 1);
XCTAssertTrue([result.warnings[0].message isEqualToString:@"Some actions were not rendered due to exceeding the maximum number of actions allowed"]);
actionConfig.maxActions = 3;
adaptiveConfig->SetActions(actionConfig);
result = [ACRRenderer render:cards[0] config:config widthConstraint:320.0];
XCTAssertTrue(result.warnings.count == 0);
}

- (void)testPerformanceOnComplicatedCards
{
// This is an example of a performance test case.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@
6BB211FF20FFF9C0009EA1BA /* ACRIMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BB211FE20FFF9C0009EA1BA /* ACRIMedia.h */; settings = {ATTRIBUTES = (Public, ); }; };
6BB2121821001596009EA1BA /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BB2121721001596009EA1BA /* AVFoundation.framework */; };
6BB21219210015A7009EA1BA /* AVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BB2120F210013AA009EA1BA /* AVKit.framework */; };
6BBE841923CD184D00ECA586 /* ACREnums.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BBE841623CD184D00ECA586 /* ACREnums.h */; settings = {ATTRIBUTES = (Public, ); }; };
6BBE841A23CD184D00ECA586 /* ACOWarning.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6BBE841723CD184D00ECA586 /* ACOWarning.mm */; };
6BBE841B23CD184D00ECA586 /* ACOWarning.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BBE841823CD184D00ECA586 /* ACOWarning.h */; settings = {ATTRIBUTES = (Public, ); }; };
6BC30F6C21E56A6900B9FAAE /* UtiliOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BC30F6B21E56A6900B9FAAE /* UtiliOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
6BC30F6E21E56CF900B9FAAE /* UtiliOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6BC30F6D21E56CF900B9FAAE /* UtiliOS.mm */; };
6BC30F7621E5750A00B9FAAE /* EnumMagic.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BC30F7521E5750A00B9FAAE /* EnumMagic.h */; settings = {ATTRIBUTES = (Public, ); }; };
Expand Down Expand Up @@ -423,6 +426,9 @@
6BB212082100042B009EA1BA /* ACRMediaRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACRMediaRenderer.h; sourceTree = "<group>"; };
6BB2120F210013AA009EA1BA /* AVKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVKit.framework; path = System/Library/Frameworks/AVKit.framework; sourceTree = SDKROOT; };
6BB2121721001596009EA1BA /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
6BBE841623CD184D00ECA586 /* ACREnums.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACREnums.h; sourceTree = "<group>"; };
6BBE841723CD184D00ECA586 /* ACOWarning.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ACOWarning.mm; sourceTree = "<group>"; };
6BBE841823CD184D00ECA586 /* ACOWarning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACOWarning.h; sourceTree = "<group>"; };
6BC30F6B21E56A6900B9FAAE /* UtiliOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UtiliOS.h; sourceTree = "<group>"; };
6BC30F6D21E56CF900B9FAAE /* UtiliOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = UtiliOS.mm; sourceTree = "<group>"; };
6BC30F7521E5750A00B9FAAE /* EnumMagic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnumMagic.h; path = ../../../../shared/cpp/ObjectModel/EnumMagic.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -761,7 +767,10 @@
6B5D2409212C89E60010EB07 /* ACORemoteResourceInformationPrivate.h */,
6B9BDF7E20F40D1000F13155 /* ACOResourceResolvers.h */,
6B9BDF7D20F40D0F00F13155 /* ACOResourceResolvers.mm */,
6BBE841823CD184D00ECA586 /* ACOWarning.h */,
6BBE841723CD184D00ECA586 /* ACOWarning.mm */,
6B1147D01F32E53A008846EC /* ACRActionDelegate.h */,
6BBE841623CD184D00ECA586 /* ACREnums.h */,
F42979401F322C3E00E89914 /* ACRErrors.h */,
F42979411F322C3E00E89914 /* ACRErrors.mm */,
F4F6BA34204F200E003741B6 /* ACRParseWarning.h */,
Expand All @@ -782,8 +791,6 @@
F4D06948205B27E9003645E4 /* ACRViewController.h */,
F4D06947205B27E9003645E4 /* ACRViewController.mm */,
F4D06949205B27EA003645E4 /* ACRViewPrivate.h */,
6BC30F6B21E56A6900B9FAAE /* UtiliOS.h */,
6BC30F6D21E56CF900B9FAAE /* UtiliOS.mm */,
F42979331F30079D00E89914 /* Actions */,
6B14FC682122263800A11CC5 /* Images */,
F423C0B91EE1FBAA00905679 /* Info.plist */,
Expand All @@ -792,6 +799,8 @@
6BB2120621000024009EA1BA /* Media */,
F42979341F3007C500E89914 /* ReadOnlyObjects */,
F423C0D71EE1FF2F00905679 /* SharedLib */,
6BC30F6B21E56A6900B9FAAE /* UtiliOS.h */,
6BC30F6D21E56CF900B9FAAE /* UtiliOS.mm */,
F460323D20757AE6006C5358 /* XIB */,
);
path = AdaptiveCards;
Expand Down Expand Up @@ -1102,6 +1111,8 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
6BBE841923CD184D00ECA586 /* ACREnums.h in Headers */,
6BBE841B23CD184D00ECA586 /* ACOWarning.h in Headers */,
6B2242B022334452000ACDA1 /* Inline.h in Headers */,
7EDC0F67213878E800077A13 /* SemanticVersion.h in Headers */,
F4F44B8020478C6F00A2F24C /* Util.h in Headers */,
Expand Down Expand Up @@ -1431,6 +1442,7 @@
F44873171EE2261F00FCAFAE /* jsoncpp.cpp in Sources */,
F42E51781FEC3840008F9642 /* MarkDownHtmlGenerator.cpp in Sources */,
F49683551F6CA24600DF0D3A /* ACRRenderResult.mm in Sources */,
6BBE841A23CD184D00ECA586 /* ACOWarning.mm in Sources */,
F44873071EE2261F00FCAFAE /* DateInput.cpp in Sources */,
F43110461F357487001AAE30 /* ACOHostConfig.mm in Sources */,
F4F6BA2F204F18D8003741B6 /* ParseResult.cpp in Sources */,
Expand Down
18 changes: 18 additions & 0 deletions source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOWarning.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
//
// ACOWarning
// ACOWarning.h
//
// Copyright © 2020 Microsoft. All rights reserved.
//

#import "ACREnums.h"
#import <Foundation/Foundation.h>

@interface ACOWarning : NSObject

@property ACRWarningStatusCode statusCode;
@property NSString *message;

- (instancetype)initWith:(ACRWarningStatusCode)statusCode message:(NSString *)message;

@end
28 changes: 28 additions & 0 deletions source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACOWarning.mm
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//
// ACOWarning
// ACOWarning.m
//
// Copyright © 2020 Microsoft. All rights reserved.
//

#import "ACOWarning.h"

@implementation ACOWarning

- (instancetype)init
{
return [self initWith:ACRUnknownElementType message:@""];
}

- (instancetype)initWith:(ACRWarningStatusCode)statusCode message:(NSString *)message
{
self = [super init];

if (self) {
_statusCode = statusCode;
_message = message;
}

return self;
}
@end
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,12 @@ - (UIView *)renderButtons:(ACRView *)rootView
ACOFeatureRegistration *featureReg = [ACOFeatureRegistration getInstance];

UIView<ACRIContentHoldingView> *childview = nil;
AdaptiveCards::ActionsConfig adaptiveActionConfig = [config getHostConfig] -> GetActions();
NSDictionary<NSString *, NSNumber *> *attributes =
@{@"spacing" : [NSNumber numberWithInt:[config getHostConfig] -> GetActions().buttonSpacing],
@{@"spacing" : [NSNumber numberWithInt:adaptiveActionConfig.buttonSpacing],
@"distribution" : [NSNumber numberWithInt:UIStackViewDistributionFillProportionally]};

if (ActionsOrientation::Horizontal == [config getHostConfig] -> GetActions().actionsOrientation) {
if (ActionsOrientation::Horizontal == adaptiveActionConfig.actionsOrientation) {
childview = [[ACRColumnSetView alloc] initWithFrame:CGRectMake(0, 0, superview.frame.size.width, superview.frame.size.height) attributes:attributes];
((ACRColumnSetView *)childview).isActionSet = YES;
} else {
Expand All @@ -76,11 +77,19 @@ - (UIView *)renderButtons:(ACRView *)rootView
ACOBaseActionElement *acoElem = [[ACOBaseActionElement alloc] init];
ACRContentHoldingUIScrollView *containingView = [[ACRContentHoldingUIScrollView alloc] init];
[superview addArrangedSubview:containingView];
float accumulatedWidth = 0, accumulatedHeight = 0, spacing = [config getHostConfig] -> GetActions().buttonSpacing, maxWidth = 0, maxHeight = 0;
float accumulatedWidth = 0, accumulatedHeight = 0, spacing = adaptiveActionConfig.buttonSpacing, maxWidth = 0, maxHeight = 0;
if (elems.empty()) {
return containingView;
}
for (const auto &elem : elems) {

unsigned long uMaxActionsToRender = MIN(adaptiveActionConfig.maxActions, elems.size());

if (uMaxActionsToRender < elems.size()) {
[rootView addWarnings:ACRWarningStatusCode::ACRMaxActionsExceeded mesage:@"Some actions were not rendered due to exceeding the maximum number of actions allowed"];
}

for (auto i = 0; i < uMaxActionsToRender; i++) {
Copy link
Contributor

@RebeccaAnne RebeccaAnne Jan 6, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for (auto i = 0; i < uMaxActionsToRender; i++) [](start = 4, length = 46)

Should we add a warning if we have more than the max actions? Just checked and we do in UWP. #Resolved

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree with @RebeccaAnne here :)


In reply to: 363433129 [](ancestors = 363433129)

Copy link

@shalinijoshi19 shalinijoshi19 Jan 9, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nesalang we should also have unit tests for this. #Resolved

const auto &elem = elems.at(i);
ACRBaseActionElementRenderer *actionRenderer =
[reg getActionRenderer:[NSNumber numberWithInt:(int)elem->GetElementType()]];

Expand Down Expand Up @@ -126,7 +135,7 @@ - (UIView *)renderButtons:(ACRView *)rootView

float contentWidth = accumulatedWidth, contentHeight = accumulatedHeight;
[childview adjustHuggingForLastElement];
if (ActionsOrientation::Horizontal == [config getHostConfig] -> GetActions().actionsOrientation) {
if (ActionsOrientation::Horizontal == adaptiveActionConfig.actionsOrientation) {
contentWidth += (elems.size() - 1) * spacing;
contentHeight = maxHeight;
} else {
Expand All @@ -147,12 +156,12 @@ - (UIView *)renderButtons:(ACRView *)rootView
hConstraint.active = YES;
vConstraint.active = YES;

if (ActionsOrientation::Horizontal == [config getHostConfig] -> GetActions().actionsOrientation) {
if (ActionsOrientation::Horizontal == adaptiveActionConfig.actionsOrientation) {
hConstraint.priority = UILayoutPriorityDefaultLow;
if (contentWidth > superview.frame.size.width) {
containingView.showsHorizontalScrollIndicator = YES;
} else {
if ([config getHostConfig] -> GetActions().actionAlignment == ActionAlignment::Stretch) {
if (adaptiveActionConfig.actionAlignment == ActionAlignment::Stretch) {
[NSLayoutConstraint constraintWithItem:containingView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
Expand Down
27 changes: 27 additions & 0 deletions source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACREnums.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
//
// ACREnums.h
// AdaptiveCards
//
// Copyright © 2020 Microsoft. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger, ACRWarningStatusCode) {
ACRUnknownElementType = 0,
ACRUnknownActionElementType,
ACRUnknownPropertyOnElement,
ACRUnknownEnumValue,
ACRNoRendererForType,
ACRInteractivityNotSupported,
ACRMaxActionsExceeded,
ACRAssetLoadFailed,
ACRUnsupportedSchemaVersion,
ACRUnsupportedMediaType,
ACRInvalidMediaMix,
ACRInvalidColorFormat,
ACRInvalidDimensionSpecified,
ACRInvalidLanguage,
ACRInvalidValue,
ACRCustomWarning,
};
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,12 @@
// Copyright © 2018 Microsoft. All rights reserved.
//

#import "ACREnums.h"
#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger, ACRParseWarningStatusCode) {
ACRUnknownElementType = 0,
ACRUnknownPropertyOnElement,
ACRUnknownEnumValue,
ACRNoRendererForType,
ACRInteractivityNotSupported,
ACRMaxActionsExceeded,
ACRAssetLoadFailed,
ACRUnsupportedSchemaVersion,
};

@interface ACRParseWarning : NSObject

@property (readonly) ACRParseWarningStatusCode statusCode;
@property (readonly) ACRWarningStatusCode statusCode;
@property (readonly) NSString *reason;

@end
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ - (instancetype)initWithParseWarning:(std::shared_ptr<AdaptiveCardParseWarning>
{
self = [super init];
if (self) {
_statusCode = (ACRParseWarningStatusCode)parseWarning->GetStatusCode();
_statusCode = (ACRWarningStatusCode)parseWarning->GetStatusCode();
_reason = [NSString stringWithCString:parseWarning->GetReason().c_str() encoding:NSUTF8StringEncoding];
}
return self;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,6 @@
@property ACRView *view;
@property ACRViewController *viewcontroller;
@property BOOL succeeded;
@property (weak) NSArray<ACOWarning *> *warnings;

@end
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ + (ACRRenderResult *)render:(ACOAdaptiveCard *)card config:(ACOHostConfig *)conf
// ACRViewController does not render adaptiveCard until viewDidLoad calls render
ACRView *view = [[ACRView alloc] init:card hostconfig:config widthConstraint:width delegate:acrActionDelegate];
result.view = view;
result.warnings = view.warnings;
result.succeeded = YES;
return result;
}
Expand All @@ -62,6 +63,7 @@ + (ACRRenderResult *)renderAsViewController:(ACOAdaptiveCard *)card config:(ACOH
// ACRView does not render adaptiveCard until viewDidLoad calls render
ACRViewController *viewcontroller = [[ACRViewController alloc] init:card hostconfig:config frame:frame delegate:acrActionDelegate];
result.viewcontroller = viewcontroller;
result.warnings = ((ACRView *)viewcontroller.view).warnings;
result.succeeded = YES;
return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

#import "ACOAdaptiveCard.h"
#import "ACOHostConfig.h"
#import "ACOWarning.h"
#import "ACRActionDelegate.h"
#import "ACRColumnView.h"
#import "ACRIMedia.h"
Expand All @@ -17,6 +18,7 @@

@property (weak) id<ACRActionDelegate> acrActionDelegate;
@property (weak) id<ACRMediaDelegate> mediaDelegate;
@property NSArray<ACOWarning *> *warnings;

- (instancetype)init:(ACOAdaptiveCard *)card hostconfig:(ACOHostConfig *)config widthConstraint:(float)width;
- (instancetype)init:(ACOAdaptiveCard *)card
Expand Down
10 changes: 8 additions & 2 deletions source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/ACRView.mm
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ - (instancetype)init:(ACOAdaptiveCard *)card
if (self) {
self.accessibilityLabel = @"ACR Root View";
_adaptiveCard = card;
_warnings = [[NSMutableArray<ACOWarning *> alloc] init];
if (config) {
_hostConfig = config;
_actionsTargetBuilderDirector = [[ACRTargetBuilderDirector alloc] init:self capability:ACRAction adaptiveHostConfig:_hostConfig];
Expand Down Expand Up @@ -716,14 +717,19 @@ - (ACRTargetBuilderDirector *)getActionsTargetBuilderDirector
return _actionsTargetBuilderDirector;
}

- (ACRTargetBuilderDirector *)getSelectActionsTargetBuilderDirector;
- (ACRTargetBuilderDirector *)getSelectActionsTargetBuilderDirector
{
return _selectActionsTargetBuilderDirector;
}

- (ACRTargetBuilderDirector *)getQuickReplyTargetBuilderDirector;
- (ACRTargetBuilderDirector *)getQuickReplyTargetBuilderDirector
{
return _quickReplyTargetBuilderDirector;
}

- (void)addWarnings:(ACRWarningStatusCode)statusCode mesage:(NSString *)message
{
[((NSMutableArray *)_warnings) addObject:[[ACOWarning alloc] initWith:statusCode message:message]];
}

@end
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

#import "ACOAdaptiveCard.h"
#import "ACOHostConfig.h"
#import "ACOWarning.h"
#import "ACRActionDelegate.h"
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,7 @@ typedef void (^ObserverActionBlockForBaseAction)(NSObject<ACOIResourceResolver>

- (void)enqueueIntermediateTextProcessingResult:(NSDictionary *)data
elementId:(NSString *)elementId;

- (void)addWarnings:(ACRWarningStatusCode)statusCode mesage:(NSString *)message;

@end