adding a new action type. updated action map flow.
This commit is contained in:
parent
b7a50eb626
commit
908fc0287e
@ -32,6 +32,7 @@
|
|||||||
01F2A05023A82D0800D954D8 /* ActionTopAlertModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A04F23A82D0800D954D8 /* ActionTopAlertModel.swift */; };
|
01F2A05023A82D0800D954D8 /* ActionTopAlertModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A04F23A82D0800D954D8 /* ActionTopAlertModel.swift */; };
|
||||||
01F2A05223A8325100D954D8 /* ModelMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A05123A8325100D954D8 /* ModelMapping.swift */; };
|
01F2A05223A8325100D954D8 /* ModelMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A05123A8325100D954D8 /* ModelMapping.swift */; };
|
||||||
0A42538F23F3414800554656 /* Codable+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A42538E23F3414800554656 /* Codable+Helpers.swift */; };
|
0A42538F23F3414800554656 /* Codable+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A42538E23F3414800554656 /* Codable+Helpers.swift */; };
|
||||||
|
0AFF597A23FC6E60005C24E8 /* ActionShareModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AFF597923FC6E60005C24E8 /* ActionShareModel.swift */; };
|
||||||
30349BF11FCCA78A00546A1E /* MVMCoreSessionTimeHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 30349BEF1FCCA78A00546A1E /* MVMCoreSessionTimeHandler.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
30349BF11FCCA78A00546A1E /* MVMCoreSessionTimeHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 30349BEF1FCCA78A00546A1E /* MVMCoreSessionTimeHandler.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
30349BF21FCCA78A00546A1E /* MVMCoreSessionTimeHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 30349BF01FCCA78A00546A1E /* MVMCoreSessionTimeHandler.m */; };
|
30349BF21FCCA78A00546A1E /* MVMCoreSessionTimeHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 30349BF01FCCA78A00546A1E /* MVMCoreSessionTimeHandler.m */; };
|
||||||
881D26931FCC9D180079C521 /* MVMCoreErrorObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 881D268F1FCC9D180079C521 /* MVMCoreErrorObject.m */; };
|
881D26931FCC9D180079C521 /* MVMCoreErrorObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 881D268F1FCC9D180079C521 /* MVMCoreErrorObject.m */; };
|
||||||
@ -180,6 +181,7 @@
|
|||||||
0A11030B20864F94008ADD90 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
|
0A11030B20864F94008ADD90 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
0A11030C20864F9A008ADD90 /* es-MX */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-MX"; path = "es-MX.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
0A11030C20864F9A008ADD90 /* es-MX */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-MX"; path = "es-MX.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||||
0A42538E23F3414800554656 /* Codable+Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Codable+Helpers.swift"; sourceTree = "<group>"; };
|
0A42538E23F3414800554656 /* Codable+Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Codable+Helpers.swift"; sourceTree = "<group>"; };
|
||||||
|
0AFF597923FC6E60005C24E8 /* ActionShareModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionShareModel.swift; sourceTree = "<group>"; };
|
||||||
30349BEF1FCCA78A00546A1E /* MVMCoreSessionTimeHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVMCoreSessionTimeHandler.h; sourceTree = "<group>"; };
|
30349BEF1FCCA78A00546A1E /* MVMCoreSessionTimeHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVMCoreSessionTimeHandler.h; sourceTree = "<group>"; };
|
||||||
30349BF01FCCA78A00546A1E /* MVMCoreSessionTimeHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MVMCoreSessionTimeHandler.m; sourceTree = "<group>"; };
|
30349BF01FCCA78A00546A1E /* MVMCoreSessionTimeHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MVMCoreSessionTimeHandler.m; sourceTree = "<group>"; };
|
||||||
881D268F1FCC9D180079C521 /* MVMCoreErrorObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MVMCoreErrorObject.m; sourceTree = "<group>"; };
|
881D268F1FCC9D180079C521 /* MVMCoreErrorObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MVMCoreErrorObject.m; sourceTree = "<group>"; };
|
||||||
@ -460,6 +462,7 @@
|
|||||||
01F2A04F23A82D0800D954D8 /* ActionTopAlertModel.swift */,
|
01F2A04F23A82D0800D954D8 /* ActionTopAlertModel.swift */,
|
||||||
01C851D023CF97FE0021F976 /* ActionBackModel.swift */,
|
01C851D023CF97FE0021F976 /* ActionBackModel.swift */,
|
||||||
EAE09C5D23F4389600765089 /* ActionOpenPanelModel.swift */,
|
EAE09C5D23F4389600765089 /* ActionOpenPanelModel.swift */,
|
||||||
|
0AFF597923FC6E60005C24E8 /* ActionShareModel.swift */,
|
||||||
);
|
);
|
||||||
path = ActionType;
|
path = ActionType;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -923,6 +926,7 @@
|
|||||||
AFED77A61FCCA29400BAE689 /* MVMCoreViewControllerStoryBoardMappingObject.m in Sources */,
|
AFED77A61FCCA29400BAE689 /* MVMCoreViewControllerStoryBoardMappingObject.m in Sources */,
|
||||||
AF43A57C1FBA5E6A008E9347 /* MVMCoreHardcodedStringsConstants.m in Sources */,
|
AF43A57C1FBA5E6A008E9347 /* MVMCoreHardcodedStringsConstants.m in Sources */,
|
||||||
AFBB965D1FBA3A570008D868 /* MFFreebeeHandler.m in Sources */,
|
AFBB965D1FBA3A570008D868 /* MFFreebeeHandler.m in Sources */,
|
||||||
|
0AFF597A23FC6E60005C24E8 /* ActionShareModel.swift in Sources */,
|
||||||
AFEEE81F1FCDF3CA00B5EDD0 /* MVMCoreLoggingHandler.m in Sources */,
|
AFEEE81F1FCDF3CA00B5EDD0 /* MVMCoreLoggingHandler.m in Sources */,
|
||||||
01F2A05223A8325100D954D8 /* ModelMapping.swift in Sources */,
|
01F2A05223A8325100D954D8 /* ModelMapping.swift in Sources */,
|
||||||
AFBB969E1FBA3A9A0008D868 /* MVMCoreAlertObject.m in Sources */,
|
AFBB969E1FBA3A9A0008D868 /* MVMCoreAlertObject.m in Sources */,
|
||||||
|
|||||||
@ -47,7 +47,7 @@ NSString * const KeyActionTypeOpen = @"openPage";
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)handleAction:(nullable NSString *)actionType actionInformation:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject {
|
- (void)handleAction:(nullable NSString *)actionType actionInformation:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject {
|
||||||
|
|
||||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||||
|
|
||||||
// Logs the action.
|
// Logs the action.
|
||||||
@ -55,28 +55,43 @@ NSString * const KeyActionTypeOpen = @"openPage";
|
|||||||
|
|
||||||
if ([actionType isEqualToString:KeyActionTypeOpen]) {
|
if ([actionType isEqualToString:KeyActionTypeOpen]) {
|
||||||
[self openPageAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self openPageAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypeLinkAway]) {
|
} else if ([actionType isEqualToString:KeyActionTypeLinkAway]) {
|
||||||
[self linkAwayAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self linkAwayAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypeRestart]) {
|
} else if ([actionType isEqualToString:KeyActionTypeRestart]) {
|
||||||
[self restartAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self restartAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypeBack]) {
|
} else if ([actionType isEqualToString:KeyActionTypeBack]) {
|
||||||
[self backAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self backAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypeCall]) {
|
} else if ([actionType isEqualToString:KeyActionTypeCall]) {
|
||||||
[self callAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self callAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
|
} else if ([actionType isEqualToString:KeyActionTypeShare]) {
|
||||||
|
[self shareAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypePreviousSubmit]) {
|
} else if ([actionType isEqualToString:KeyActionTypePreviousSubmit]) {
|
||||||
[self previousSubmitAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self previousSubmitAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypePopup]) {
|
} else if ([actionType isEqualToString:KeyActionTypePopup]) {
|
||||||
[self popupAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self popupAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypeTopAlert]) {
|
} else if ([actionType isEqualToString:KeyActionTypeTopAlert]) {
|
||||||
[self topAlertAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self topAlertAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypeRedirect]) {
|
} else if ([actionType isEqualToString:KeyActionTypeRedirect]) {
|
||||||
[self redirectAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self redirectAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypeCancel]) {
|
} else if ([actionType isEqualToString:KeyActionTypeCancel]) {
|
||||||
[self cancelAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self cancelAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypeSettings]) {
|
} else if ([actionType isEqualToString:KeyActionTypeSettings]) {
|
||||||
[self settingsAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self settingsAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if ([actionType isEqualToString:KeyActionTypeCollapseNotification]) {
|
} else if ([actionType isEqualToString:KeyActionTypeCollapseNotification]) {
|
||||||
[self collapseNotificationAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self collapseNotificationAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|
||||||
} else if (![self handleOtherActions:actionType actionInformation:actionInformation additionalData:additionalData delegateObject:delegateObject]) {
|
} else if (![self handleOtherActions:actionType actionInformation:actionInformation additionalData:additionalData delegateObject:delegateObject]) {
|
||||||
// not a known action type.
|
// not a known action type.
|
||||||
[self unknownAction:actionType actionInformation:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self unknownAction:actionType actionInformation:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
@ -137,6 +152,39 @@ NSString * const KeyActionTypeOpen = @"openPage";
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)shareAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject {
|
||||||
|
|
||||||
|
NSString *shareType = [actionInformation stringForKey:KeyShareType];
|
||||||
|
NSString *shareText = [actionInformation stringForKey:KeyShareText];
|
||||||
|
NSArray* shareData;
|
||||||
|
|
||||||
|
if ([shareType isEqualToString:@"text"]) {
|
||||||
|
shareData = @[shareText];
|
||||||
|
|
||||||
|
} else if ([shareType isEqualToString:@"url"]) {
|
||||||
|
if (shareText.length > 0) {
|
||||||
|
shareData = @[shareText, [NSURL URLWithString:shareText]];
|
||||||
|
}
|
||||||
|
} else if ([shareType isEqualToString:@"image"]) {
|
||||||
|
// TODO: Implement image parsing. 🏂
|
||||||
|
|
||||||
|
} else if ([shareType isEqualToString:@"file"]) {
|
||||||
|
// TODO: Implement file parsing. 🌋
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shareData.count > 0) {
|
||||||
|
[MVMCoreDispatchUtility performBlockOnMainThread:^{
|
||||||
|
UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:shareData applicationActivities:nil];
|
||||||
|
activityViewController.excludedActivityTypes = @[UIActivityTypeAirDrop, UIActivityT];
|
||||||
|
if (activityViewController == nil) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
activityViewController.popoverPresentationController.sourceView = [MVMCoreNavigationHandler sharedNavigationHandler].viewControllerToPresentOn.view;
|
||||||
|
[[MVMCoreNavigationHandler sharedNavigationHandler] presentViewController:activityViewController animated:YES];
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (void)restartAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject {
|
- (void)restartAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject {
|
||||||
|
|
||||||
// Invalidates the session before restarting.
|
// Invalidates the session before restarting.
|
||||||
@ -244,7 +292,7 @@ NSString * const KeyActionTypeOpen = @"openPage";
|
|||||||
NSString *type = [actionInformation string:KeyPageType];
|
NSString *type = [actionInformation string:KeyPageType];
|
||||||
if ([@"location" isEqualToString:type] || [@"push" isEqualToString:type]) {
|
if ([@"location" isEqualToString:type] || [@"push" isEqualToString:type]) {
|
||||||
[MVMCoreActionUtility linkAway:UIApplicationOpenSettingsURLString appURLString:nil];
|
[MVMCoreActionUtility linkAway:UIApplicationOpenSettingsURLString appURLString:nil];
|
||||||
} else {
|
} else {
|
||||||
// No known settings type
|
// No known settings type
|
||||||
MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] code:ErrorCodeInvalidSettingType domain:ErrorDomainNative location:[NSString stringWithFormat:@"%@_%@",NSStringFromClass([delegateObject.actionDelegate class]),KeyActionTypeSettings]];
|
MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] code:ErrorCodeInvalidSettingType domain:ErrorDomainNative location:[NSString stringWithFormat:@"%@_%@",NSStringFromClass([delegateObject.actionDelegate class]),KeyActionTypeSettings]];
|
||||||
[self handleActionError:error actionInformation:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
[self handleActionError:error actionInformation:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||||
|
|||||||
@ -30,6 +30,9 @@ extern NSString * const KeyTitle;
|
|||||||
extern NSString * const KeyMessage;
|
extern NSString * const KeyMessage;
|
||||||
extern NSString * const KeyActionTypeRestart;
|
extern NSString * const KeyActionTypeRestart;
|
||||||
extern NSString * const KeyActionTypeBack;
|
extern NSString * const KeyActionTypeBack;
|
||||||
|
extern NSString * const KeyActionTypeShare;
|
||||||
|
extern NSString * const KeyShareType;
|
||||||
|
extern NSString * const KeyShareText;
|
||||||
extern NSString * const KeyActionTypeCall;
|
extern NSString * const KeyActionTypeCall;
|
||||||
extern NSString * const KeyActionTypePreviousSubmit;
|
extern NSString * const KeyActionTypePreviousSubmit;
|
||||||
extern NSString * const KeyActionTypePopup;
|
extern NSString * const KeyActionTypePopup;
|
||||||
|
|||||||
@ -18,6 +18,8 @@ NSString * const KeyErrorHeading = @"errorHdg";
|
|||||||
|
|
||||||
NSString * const KeyPage = @"Page";
|
NSString * const KeyPage = @"Page";
|
||||||
NSString * const KeyPageType = @"pageType";
|
NSString * const KeyPageType = @"pageType";
|
||||||
|
NSString * const KeyShareText = @"shareText";
|
||||||
|
NSString * const KeyShareType = @"shareType";
|
||||||
NSString * const KeyModuleMap = @"ModuleMap";
|
NSString * const KeyModuleMap = @"ModuleMap";
|
||||||
NSString * const KeyModuleList = @"modules";
|
NSString * const KeyModuleList = @"modules";
|
||||||
NSString * const KeyPageMap = @"PageMap";
|
NSString * const KeyPageMap = @"PageMap";
|
||||||
@ -30,6 +32,7 @@ NSString * const KeyTitle = @"title";
|
|||||||
NSString * const KeyMessage = @"message";
|
NSString * const KeyMessage = @"message";
|
||||||
NSString * const KeyActionTypeRestart = @"restart";
|
NSString * const KeyActionTypeRestart = @"restart";
|
||||||
NSString * const KeyActionTypeBack = @"back";
|
NSString * const KeyActionTypeBack = @"back";
|
||||||
|
NSString * const KeyActionTypeShare = @"share";
|
||||||
NSString * const KeyActionTypeCall = @"call";
|
NSString * const KeyActionTypeCall = @"call";
|
||||||
NSString * const KeyActionTypePreviousSubmit = @"previousSubmit";
|
NSString * const KeyActionTypePreviousSubmit = @"previousSubmit";
|
||||||
NSString * const KeyActionTypePopup = @"popup";
|
NSString * const KeyActionTypePopup = @"popup";
|
||||||
|
|||||||
28
MVMCore/MVMCore/Models/ActionType/ActionShareModel.swift
Normal file
28
MVMCore/MVMCore/Models/ActionType/ActionShareModel.swift
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
//
|
||||||
|
// ActionShareModel.swift
|
||||||
|
// MVMCore
|
||||||
|
//
|
||||||
|
// Created by Kevin Christiano on 2/18/20.
|
||||||
|
// Copyright © 2020 myverizon. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class ActionShareModel: ActionModelProtocol {
|
||||||
|
|
||||||
|
public static var identifier: String = "share"
|
||||||
|
|
||||||
|
public var actionType: String?
|
||||||
|
public var title: String?
|
||||||
|
public var pageType: String
|
||||||
|
public var shareType: String
|
||||||
|
public var shareText: String
|
||||||
|
public var extraParameters: JSONValueDictionary?
|
||||||
|
public var analyticsData: JSONValueDictionary?
|
||||||
|
|
||||||
|
public init(pageType: String,shareText: String,shareType: String) {
|
||||||
|
self.pageType = pageType
|
||||||
|
self.shareType = shareType
|
||||||
|
self.shareText = shareText
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -9,6 +9,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
@objcMembers public class ModelMapping: NSObject {
|
@objcMembers public class ModelMapping: NSObject {
|
||||||
|
|
||||||
public static func registerObjects() {
|
public static func registerObjects() {
|
||||||
try? ModelRegistry.register(ActionOpenPageModel.self)
|
try? ModelRegistry.register(ActionOpenPageModel.self)
|
||||||
try? ModelRegistry.register(ActionOpenUrlModel.self)
|
try? ModelRegistry.register(ActionOpenUrlModel.self)
|
||||||
@ -18,5 +19,6 @@ import Foundation
|
|||||||
try? ModelRegistry.register(ActionTopAlertModel.self)
|
try? ModelRegistry.register(ActionTopAlertModel.self)
|
||||||
try? ModelRegistry.register(ActionBackModel.self)
|
try? ModelRegistry.register(ActionBackModel.self)
|
||||||
try? ModelRegistry.register(ActionOpenPanelModel.self)
|
try? ModelRegistry.register(ActionOpenPanelModel.self)
|
||||||
|
try? ModelRegistry.register(ActionShareModel.self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,37 +10,48 @@
|
|||||||
|
|
||||||
@interface MVMCoreSessionObject : NSObject <NSURLSessionTaskDelegate>
|
@interface MVMCoreSessionObject : NSObject <NSURLSessionTaskDelegate>
|
||||||
|
|
||||||
// the session used for all requests.
|
/// the session used for all requests.
|
||||||
@property (nullable, strong, nonatomic) NSURLSession *session;
|
@property (nullable, strong, nonatomic) NSURLSession *session;
|
||||||
|
|
||||||
// the session used for all Freebee requests.
|
/// the session used for all Freebee requests.
|
||||||
@property (nullable, strong, nonatomic) NSURLSession *freeBeeSession;
|
@property (nullable, strong, nonatomic) NSURLSession *freeBeeSession;
|
||||||
|
|
||||||
// The server base url (Until prepay is native, this will always be postpay).
|
/// The server base url (Until prepay is native, this will always be postpay).
|
||||||
@property (nullable, strong, nonatomic) NSURL *baseURL;
|
@property (nullable, strong, nonatomic) NSURL *baseURL;
|
||||||
|
|
||||||
// The context root to use on the base url.
|
/// The context root to use on the base url.
|
||||||
@property (nullable, strong, nonatomic) NSString *contextRoot;
|
@property (nullable, strong, nonatomic) NSString *contextRoot;
|
||||||
|
|
||||||
|
/// Last string copied to clipboard. Used for clearing clipboard check when app goes into backgroud.
|
||||||
|
@property (strong, nonatomic, nullable) NSString *clipboardString;
|
||||||
|
|
||||||
// Returns the shared instance of this singleton
|
|
||||||
|
/// Returns the shared instance of this singleton
|
||||||
+ (nullable instancetype)sharedGlobal;
|
+ (nullable instancetype)sharedGlobal;
|
||||||
|
|
||||||
// Creates the nsurlsession with default configuration and no delegate. Can subclass for different session.
|
/// Creates the nsurlsession with default configuration and no delegate. Can subclass for different session.
|
||||||
- (nonnull NSURLSession *)createNSURLSession;
|
- (nonnull NSURLSession *)createNSURLSession;
|
||||||
|
|
||||||
// Gets inital parameters for request parameters.
|
/// Gets inital parameters for request parameters.
|
||||||
- (nullable NSDictionary *)getInitialParameters;
|
- (nullable NSDictionary *)getInitialParameters;
|
||||||
// Gets inital parameters for request parameters excluding any items given a list of key names.
|
|
||||||
|
/// Gets inital parameters for request parameters excluding any items given a list of key names.
|
||||||
- (nullable NSDictionary *)getInitialParametersExcludingSections:(nullable NSSet<NSString *> *)excludeSections;
|
- (nullable NSDictionary *)getInitialParametersExcludingSections:(nullable NSSet<NSString *> *)excludeSections;
|
||||||
|
|
||||||
// Restarts the application session state. Can clear variables and pass a page type if needed.
|
/// Restarts the application session state. Can clear variables and pass a page type if needed.
|
||||||
- (void)restartSessionWithPageType:(nullable NSString *)pageType parameters:(nullable NSDictionary *)parameters clearAllVariables:(BOOL)clearAllVariables;
|
- (void)restartSessionWithPageType:(nullable NSString *)pageType parameters:(nullable NSDictionary *)parameters clearAllVariables:(BOOL)clearAllVariables;
|
||||||
|
|
||||||
// Redirect, leaving the current app experience.
|
/// Redirect, leaving the current app experience.
|
||||||
- (void)redirectWithInfo:(nullable NSDictionary *)dictionary;
|
- (void)redirectWithInfo:(nullable NSDictionary *)dictionary;
|
||||||
|
|
||||||
// Clears the session singleton. Creates a new session NSURLSession also.
|
/// Clears the session singleton. Creates a new session NSURLSession also.
|
||||||
- (void)clearSessionObject;
|
- (void)clearSessionObject;
|
||||||
|
|
||||||
|
/// Copys string to clipboard and assigns self.clipboardString for validation
|
||||||
|
/// Should only be used when expected string is a secure string
|
||||||
|
-(void)copyStringToClipboard :(nullable NSString *)clipboardString;
|
||||||
|
|
||||||
|
/// validates if clip board should or should no be cleared. Returns YES if string is safe to go into background.
|
||||||
|
-(BOOL)clipboadStringIsValid:(nullable NSString *)clipboardString;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@ -48,6 +48,16 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(void)copyStringToClipboard :(nullable NSString *)clipboardString {
|
||||||
|
self.clipboardString = clipboardString;
|
||||||
|
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
|
||||||
|
pasteboard.string = clipboardString;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)clipboadStringIsValid:(nullable NSString *)clipboardString {
|
||||||
|
return [clipboardString isEqualToString:self.clipboardString];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)clearSessionObject {
|
- (void)clearSessionObject {
|
||||||
[self.session invalidateAndCancel];
|
[self.session invalidateAndCancel];
|
||||||
self.session = [self createNSURLSession];
|
self.session = [self createNSURLSession];
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user