-
Notifications
You must be signed in to change notification settings - Fork 0
/
LEANRootViewController.m
128 lines (103 loc) · 3.98 KB
/
LEANRootViewController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
//
// LEANRootViewController.m
// Copyright © 2021-2022 WindCloud Australia. All rights reserved.
//
// Created by Weiyin He on 2/7/14.
// Copyright (c) 2014 GoNative.io LLC. All rights reserved.
//
#import "LEANRootViewController.h"
#import "LEANMenuViewController.h"
#import "LEANWebViewController.h"
#import "LEANUtilities.h"
@interface LEANRootViewController ()
@end
@implementation LEANRootViewController
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
{
if (self = [super initWithNibName:nibName bundle:nibBundle]) {
}
return self;
}
- (void)awakeFromNib
{
[super awakeFromNib];
GoNativeAppConfig *appConfig = [GoNativeAppConfig sharedAppConfig];
if ([appConfig.iosTheme isEqualToString:@"dark"]) {
self.liveBlurBackgroundStyle = REFrostedViewControllerLiveBackgroundStyleDark;
self.blurTintColor = [UIColor colorWithWhite:0 alpha:0.75f];
} else {
self.liveBlurBackgroundStyle = REFrostedViewControllerLiveBackgroundStyleLight;
self.blurTintColor = nil;
}
if ([UIApplication sharedApplication].userInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionRightToLeft) {
self.direction = REFrostedViewControllerDirectionRight;
}
self.animationDuration = [appConfig.menuAnimationDuration floatValue];
self.limitMenuViewSize = YES;
self.menuViewSize = CGSizeMake(270, NAN);
self.contentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"contentController"];
[self.contentViewController view];
self.menuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"menuController"];
self.webViewController = ((UINavigationController*)self.contentViewController).viewControllers[0];
// pre-load the menu view
[self.menuViewController view];
}
-(void)viewDidLoad
{
GoNativeAppConfig *appConfig = [GoNativeAppConfig sharedAppConfig];
if ([appConfig.iosTheme isEqualToString:@"dark"]) {
self.view.backgroundColor = [UIColor blackColor];
}
[super viewDidLoad];
}
- (void)loadUrl:(NSURL *)url
{
UINavigationController *nav = (UINavigationController*)self.contentViewController;
UIViewController *topController = nav.topViewController;
if ([topController isKindOfClass:[LEANWebViewController class]]) {
[((LEANWebViewController*)topController) loadUrl:url];
}
}
- (void)loadUrlUsingJavascript:(NSURL *)url
{
NSString *js = [NSString stringWithFormat:@"window.location.href=%@;",
[LEANUtilities jsWrapString:[url absoluteString]]];
[self runJavascript:js];
}
- (void)runJavascript:(NSString*)js
{
UINavigationController *nav = (UINavigationController*)self.contentViewController;
UIViewController *topController = nav.topViewController;
if ([topController isKindOfClass:[LEANWebViewController class]]) {
[((LEANWebViewController*)topController) runJavascript:js];
}
}
- (void)setInitialUrl:(NSURL *)url
{
// designed to be called from push notification
UINavigationController *nav = (UINavigationController*)self.contentViewController;
for (UIViewController *vc in nav.viewControllers) {
if ([vc isKindOfClass:[LEANWebViewController class]]) {
((LEANWebViewController*)vc).initialUrl = url;
break;
}
}
}
- (BOOL)webviewOnTop
{
return [((UINavigationController*)self.contentViewController).topViewController isKindOfClass:[LEANWebViewController class]];
}
- (void)presentAlert:(UIAlertController*)alert
{
UINavigationController *nav = (UINavigationController*)self.contentViewController;
UIViewController *topController = nav.topViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
[topController presentViewController:alert animated:YES completion:nil];
}
- (BOOL) prefersHomeIndicatorAutoHidden
{
return [GoNativeAppConfig sharedAppConfig].iosAutoHideHomeIndicator;
}
@end