Преглед изворни кода

fix(deeplinking): After braking it with the dropbox implementation.

master
hristoterezov пре 7 година
родитељ
комит
467452d110
4 измењених фајлова са 71 додато и 55 уклоњено
  1. 32
    14
      ios/README.md
  2. 5
    14
      ios/app/src/AppDelegate.m
  3. 8
    7
      ios/sdk/src/JitsiMeetView.m
  4. 26
    20
      ios/sdk/src/dropbox/Dropbox.m

+ 32
- 14
ios/README.md Прегледај датотеку

125
                continueUserActivity:userActivity
125
                continueUserActivity:userActivity
126
                  restorationHandler:restorationHandler];
126
                  restorationHandler:restorationHandler];
127
 }
127
 }
128
+```
129
+
130
+And also one of the following:
128
 
131
 
132
+```objc
133
+// See https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application?language=objc
134
+- (BOOL)application:(UIApplication *)app
135
+            openURL:(NSURL *)url
136
+            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
137
+  return [JitsiMeetView application:app
138
+                            openURL:url
139
+                            options: options];
140
+}
141
+```
142
+or
143
+```objc
144
+// See https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc
129
 - (BOOL)application:(UIApplication *)application
145
 - (BOOL)application:(UIApplication *)application
130
             openURL:(NSURL *)url
146
             openURL:(NSURL *)url
131
   sourceApplication:(NSString *)sourceApplication
147
   sourceApplication:(NSString *)sourceApplication
215
 
231
 
216
 ## Dropbox integration
232
 ## Dropbox integration
217
 
233
 
218
-To setup the dropbox integration you need to do the following steps:
234
+To setup the Dropbox integration, follow these steps:
219
 
235
 
220
-1. Add the following lines in your Info.plist file and replace `<APP_KEY>` with your dropbox app key:
236
+1. Add the following to the app's Info.plist and change `<APP_KEY>` to your
237
+Dropbox app key:
221
 ```
238
 ```
222
 <key>CFBundleURLTypes</key>
239
 <key>CFBundleURLTypes</key>
223
 <array>
240
 <array>
224
-    <dict>
225
-        <key>CFBundleURLSchemes</key>
226
-        <array>
227
-            <string>db-<APP_KEY></string>
228
-        </array>
229
-        <key>CFBundleURLName</key>
230
-        <string></string>
231
-    </dict>
241
+  <dict>
242
+    <key>CFBundleURLName</key>
243
+    <string></string>
244
+    <key>CFBundleURLSchemes</key>
245
+    <array>
246
+      <string>db-<APP_KEY></string>
247
+    </array>
248
+  </dict>
232
 </array>
249
 </array>
233
 <key>LSApplicationQueriesSchemes</key>
250
 <key>LSApplicationQueriesSchemes</key>
234
 <array>
251
 <array>
235
-    <string>dbapi-8-emm</string>
236
-    <string>dbapi-2</string>
252
+  <string>dbapi-2</string>
253
+  <string>dbapi-8-emm</string>
237
 </array>
254
 </array>
238
 ```
255
 ```
239
 
256
 
240
-2. Add the following method to `AppDelegate`:
257
+2. Add the following to the app's `AppDelegate`:
241
 ```objc
258
 ```objc
242
-- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
259
+- (BOOL)application:(UIApplication *)app
260
+            openURL:(NSURL *)url
243
             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
261
             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
244
   return [JitsiMeetView application:app
262
   return [JitsiMeetView application:app
245
                             openURL:url
263
                             openURL:url

+ 5
- 14
ios/app/src/AppDelegate.m Прегледај датотеку

36
                    restorationHandler:restorationHandler];
36
                    restorationHandler:restorationHandler];
37
 }
37
 }
38
 
38
 
39
-- (BOOL)application:(UIApplication *)application
40
-            openURL:(NSURL *)url
41
-  sourceApplication:(NSString *)sourceApplication
42
-         annotation:(id)annotation {
43
-    return [JitsiMeetView application:application
44
-                              openURL:url
45
-                    sourceApplication:sourceApplication
46
-                           annotation:annotation];
47
-}
48
 
39
 
49
-
50
-- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
40
+- (BOOL)application:(UIApplication *)app
41
+            openURL:(NSURL *)url
51
             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
42
             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
52
-  return [JitsiMeetView application:app
53
-                            openURL:url
54
-                            options: options];
43
+    return [JitsiMeetView application:app
44
+                              openURL:url
45
+                              options:options];
55
 }
46
 }
56
 
47
 
57
 @end
48
 @end

+ 8
- 7
ios/sdk/src/JitsiMeetView.m Прегледај датотеку

195
                        restorationHandler:restorationHandler];
195
                        restorationHandler:restorationHandler];
196
 }
196
 }
197
 
197
 
198
++ (BOOL)application:(UIApplication *)app
199
+            openURL:(NSURL *)url
200
+            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
201
+    return
202
+        [Dropbox application:app openURL:url options:options]
203
+            || [RCTLinkingManager application:app openURL:url options:options];
204
+}
205
+
198
 + (BOOL)application:(UIApplication *)application
206
 + (BOOL)application:(UIApplication *)application
199
             openURL:(NSURL *)url
207
             openURL:(NSURL *)url
200
   sourceApplication:(NSString *)sourceApplication
208
   sourceApplication:(NSString *)sourceApplication
214
                                annotation:annotation];
222
                                annotation:annotation];
215
 }
223
 }
216
 
224
 
217
-+ (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
218
-            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
219
-    return [Dropbox application:app
220
-                              openURL:url
221
-                              options: options];
222
-}
223
-
224
 #pragma mark Initializers
225
 #pragma mark Initializers
225
 
226
 
226
 - (instancetype)init {
227
 - (instancetype)init {

+ 26
- 20
ios/sdk/src/dropbox/Dropbox.m Прегледај датотеку

16
 
16
 
17
 #import <React/RCTBridgeModule.h>
17
 #import <React/RCTBridgeModule.h>
18
 #import <ObjectiveDropboxOfficial/ObjectiveDropboxOfficial.h>
18
 #import <ObjectiveDropboxOfficial/ObjectiveDropboxOfficial.h>
19
+
19
 #import "Dropbox.h"
20
 #import "Dropbox.h"
20
 
21
 
21
 RCTPromiseResolveBlock currentResolve = nil;
22
 RCTPromiseResolveBlock currentResolve = nil;
24
 @implementation Dropbox
25
 @implementation Dropbox
25
 
26
 
26
 + (NSString *)getAppKey{
27
 + (NSString *)getAppKey{
27
-    NSArray *urlTypes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"];
28
-    for(NSDictionary<NSString *, NSArray *> *urlType in urlTypes) {
28
+    NSArray *urlTypes
29
+        = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"];
30
+
31
+    for (NSDictionary<NSString *, NSArray *> *urlType in urlTypes) {
29
         NSArray *urlSchemes = urlType[@"CFBundleURLSchemes"];
32
         NSArray *urlSchemes = urlType[@"CFBundleURLSchemes"];
30
-        if(urlSchemes != nil) {
31
-            for(NSString *urlScheme in urlSchemes) {
32
-                if(urlScheme != nil) {
33
-                    if ([urlScheme hasPrefix:@"db-"]) {
34
-                        return [urlScheme substringFromIndex:3];
35
-                    }
33
+
34
+        if (urlSchemes) {
35
+            for (NSString *urlScheme in urlSchemes) {
36
+                if (urlScheme && [urlScheme hasPrefix:@"db-"]) {
37
+                    return [urlScheme substringFromIndex:3];
36
                 }
38
                 }
37
             }
39
             }
38
         }
40
         }
39
-        
40
     }
41
     }
41
    
42
    
42
     return nil;
43
     return nil;
52
     };
53
     };
53
 };
54
 };
54
 
55
 
55
-RCT_EXPORT_METHOD(authorize: (RCTPromiseResolveBlock)resolve
56
+RCT_EXPORT_METHOD(authorize:(RCTPromiseResolveBlock)resolve
56
                   reject:(__unused RCTPromiseRejectBlock)reject) {
57
                   reject:(__unused RCTPromiseRejectBlock)reject) {
57
     currentResolve = resolve;
58
     currentResolve = resolve;
58
     currentReject = reject;
59
     currentReject = reject;
75
             resolve(result.name.displayName);
76
             resolve(result.name.displayName);
76
         } else {
77
         } else {
77
             NSString *msg = @"Failed!";
78
             NSString *msg = @"Failed!";
78
-            if (networkError != nil) {
79
+            if (networkError) {
79
                 msg = [NSString stringWithFormat:@"Failed! Error: %@", networkError];
80
                 msg = [NSString stringWithFormat:@"Failed! Error: %@", networkError];
80
             }
81
             }
81
             reject(@"getDisplayName", @"Failed", nil);
82
             reject(@"getDisplayName", @"Failed", nil);
93
             DBUSERSSpaceAllocation *allocation = result.allocation;
94
             DBUSERSSpaceAllocation *allocation = result.allocation;
94
             NSNumber *allocated = 0;
95
             NSNumber *allocated = 0;
95
             NSNumber *used = 0;
96
             NSNumber *used = 0;
96
-            if([allocation isIndividual]) {
97
+            if ([allocation isIndividual]) {
97
                 allocated = allocation.individual.allocated;
98
                 allocated = allocation.individual.allocated;
98
                 used = result.used;
99
                 used = result.used;
99
             } else if ([allocation isTeam]) {
100
             } else if ([allocation isTeam]) {
108
             resolve(dictionary);
109
             resolve(dictionary);
109
         } else {
110
         } else {
110
             NSString *msg = @"Failed!";
111
             NSString *msg = @"Failed!";
111
-            if (networkError != nil) {
112
+            if (networkError) {
112
                 msg = [NSString stringWithFormat:@"Failed! Error: %@", networkError];
113
                 msg = [NSString stringWithFormat:@"Failed! Error: %@", networkError];
113
             }
114
             }
114
             reject(@"getSpaceUsage", msg, nil);
115
             reject(@"getSpaceUsage", msg, nil);
117
 
118
 
118
 }
119
 }
119
 
120
 
120
-+ (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
121
++ (BOOL)application:(UIApplication *)app
122
+            openURL:(NSURL *)url
121
             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
123
             options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
124
+    if (currentReject == nil || currentResolve == nil) {
125
+        return NO;
126
+    }
122
     DBOAuthResult *authResult = [DBClientsManager handleRedirectURL:url];
127
     DBOAuthResult *authResult = [DBClientsManager handleRedirectURL:url];
123
-    if (authResult != nil) {
128
+    if (authResult) {
124
         if ([authResult isSuccess]) {
129
         if ([authResult isSuccess]) {
125
             currentResolve(authResult.accessToken.accessToken);
130
             currentResolve(authResult.accessToken.accessToken);
126
             currentResolve = nil;
131
             currentResolve = nil;
127
             currentReject = nil;
132
             currentReject = nil;
128
-            return YES;
129
         } else {
133
         } else {
130
             NSString *msg;
134
             NSString *msg;
131
             if ([authResult isError]) {
135
             if ([authResult isError]) {
137
             currentResolve = nil;
141
             currentResolve = nil;
138
             currentReject = nil;
142
             currentReject = nil;
139
         }
143
         }
144
+        return YES;
140
     }
145
     }
141
     return NO;
146
     return NO;
142
 }
147
 }
143
 
148
 
144
-+ (UIViewController*)topMostController
149
++ (UIViewController *)topMostController
145
 {
150
 {
146
-    UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
151
+    UIViewController *topController
152
+        = [UIApplication sharedApplication].keyWindow.rootViewController;
147
     
153
     
148
     while (topController.presentedViewController) {
154
     while (topController.presentedViewController) {
149
         topController = topController.presentedViewController;
155
         topController = topController.presentedViewController;
154
 
160
 
155
 + (void)setAppKey {
161
 + (void)setAppKey {
156
     NSString *appKey = [self getAppKey];
162
     NSString *appKey = [self getAppKey];
157
-    if (appKey != nil) {
163
+
164
+    if (appKey) {
158
         [DBClientsManager setupWithAppKey:appKey];
165
         [DBClientsManager setupWithAppKey:appKey];
159
     }
166
     }
160
 }
167
 }
161
 
168
 
162
-
163
 @end
169
 @end

Loading…
Откажи
Сачувај