|
|
@@ -1,12 +1,10 @@
|
|
1
|
1
|
package org.jitsi.meet.sdk.dropbox;
|
|
2
|
2
|
|
|
3
|
|
-import android.app.Activity;
|
|
4
|
3
|
import android.content.Context;
|
|
5
|
4
|
import android.content.pm.ApplicationInfo;
|
|
6
|
5
|
import android.content.pm.PackageInfo;
|
|
7
|
6
|
import android.content.pm.PackageManager;
|
|
8
|
7
|
import android.text.TextUtils;
|
|
9
|
|
-import android.util.Log;
|
|
10
|
8
|
|
|
11
|
9
|
import com.dropbox.core.DbxException;
|
|
12
|
10
|
import com.dropbox.core.DbxRequestConfig;
|
|
|
@@ -22,7 +20,6 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
22
|
20
|
import com.dropbox.core.android.Auth;
|
|
23
|
21
|
import com.facebook.react.bridge.ReactMethod;
|
|
24
|
22
|
import com.facebook.react.bridge.WritableMap;
|
|
25
|
|
-import org.jitsi.meet.sdk.R;
|
|
26
|
23
|
|
|
27
|
24
|
import java.util.HashMap;
|
|
28
|
25
|
import java.util.Map;
|
|
|
@@ -30,26 +27,28 @@ import java.util.Map;
|
|
30
|
27
|
/**
|
|
31
|
28
|
* Implements the react-native module for the dropbox integration.
|
|
32
|
29
|
*/
|
|
33
|
|
-public class Dropbox extends ReactContextBaseJavaModule implements LifecycleEventListener {
|
|
|
30
|
+public class Dropbox
|
|
|
31
|
+ extends ReactContextBaseJavaModule
|
|
|
32
|
+ implements LifecycleEventListener {
|
|
|
33
|
+ private String appKey;
|
|
34
|
34
|
|
|
35
|
|
- private Promise promise = null;
|
|
36
|
35
|
private String clientId;
|
|
37
|
|
- private String appID;
|
|
38
|
|
- private boolean isEnabled = false;
|
|
|
36
|
+
|
|
|
37
|
+ private final boolean isEnabled;
|
|
|
38
|
+
|
|
|
39
|
+ private Promise promise;
|
|
39
|
40
|
|
|
40
|
41
|
public Dropbox(ReactApplicationContext reactContext) {
|
|
41
|
42
|
super(reactContext);
|
|
42
|
|
- reactContext.addLifecycleEventListener(this);
|
|
|
43
|
+
|
|
|
44
|
+ appKey
|
|
|
45
|
+ = reactContext.getString(
|
|
|
46
|
+ org.jitsi.meet.sdk.R.string.dropbox_app_key);
|
|
|
47
|
+ isEnabled = !TextUtils.isEmpty(appKey);
|
|
|
48
|
+
|
|
43
|
49
|
clientId = generateClientId();
|
|
44
|
|
- appID = reactContext.getString(R.string.dropbox_app_key);
|
|
45
|
|
- if (!TextUtils.isEmpty(appID)) {
|
|
46
|
|
- isEnabled = true;
|
|
47
|
|
- }
|
|
48
|
|
- }
|
|
49
|
50
|
|
|
50
|
|
- @Override
|
|
51
|
|
- public String getName() {
|
|
52
|
|
- return "Dropbox";
|
|
|
51
|
+ reactContext.addLifecycleEventListener(this);
|
|
53
|
52
|
}
|
|
54
|
53
|
|
|
55
|
54
|
/**
|
|
|
@@ -59,22 +58,54 @@ public class Dropbox extends ReactContextBaseJavaModule implements LifecycleEven
|
|
59
|
58
|
*/
|
|
60
|
59
|
@ReactMethod
|
|
61
|
60
|
public void authorize(final Promise promise) {
|
|
62
|
|
- if (!isEnabled) {
|
|
63
|
|
- promise.reject(new Exception("Dropbox integration isn't configured."));
|
|
64
|
|
- return;
|
|
|
61
|
+ if (isEnabled) {
|
|
|
62
|
+ Auth.startOAuth2Authentication(this.getCurrentActivity(), appKey);
|
|
|
63
|
+ this.promise = promise;
|
|
|
64
|
+ } else {
|
|
|
65
|
+ promise.reject(
|
|
|
66
|
+ new Exception("Dropbox integration isn't configured."));
|
|
|
67
|
+ }
|
|
|
68
|
+ }
|
|
|
69
|
+
|
|
|
70
|
+ /**
|
|
|
71
|
+ * Generate a client identifier for the dropbox sdk.
|
|
|
72
|
+ *
|
|
|
73
|
+ * @returns a client identifier for the dropbox sdk.
|
|
|
74
|
+ * @see {https://dropbox.github.io/dropbox-sdk-java/api-docs/v3.0.x/com/dropbox/core/DbxRequestConfig.html#getClientIdentifier--}
|
|
|
75
|
+ */
|
|
|
76
|
+ private String generateClientId() {
|
|
|
77
|
+ Context context = getReactApplicationContext();
|
|
|
78
|
+ PackageManager packageManager = context.getPackageManager();
|
|
|
79
|
+ ApplicationInfo applicationInfo = null;
|
|
|
80
|
+ PackageInfo packageInfo = null;
|
|
|
81
|
+
|
|
|
82
|
+ try {
|
|
|
83
|
+ String packageName = context.getPackageName();
|
|
|
84
|
+
|
|
|
85
|
+ applicationInfo = packageManager.getApplicationInfo(packageName, 0);
|
|
|
86
|
+ packageInfo = packageManager.getPackageInfo(packageName, 0);
|
|
|
87
|
+ } catch (PackageManager.NameNotFoundException e) {
|
|
65
|
88
|
}
|
|
66
|
|
- Auth.startOAuth2Authentication(this.getCurrentActivity(), appID);
|
|
67
|
|
- this.promise = promise;
|
|
|
89
|
+
|
|
|
90
|
+ String applicationLabel
|
|
|
91
|
+ = applicationInfo == null
|
|
|
92
|
+ ? "JitsiMeet"
|
|
|
93
|
+ : packageManager.getApplicationLabel(applicationInfo).toString()
|
|
|
94
|
+ .replaceAll("\\s", "");
|
|
|
95
|
+ String version = packageInfo == null ? "dev" : packageInfo.versionName;
|
|
|
96
|
+
|
|
|
97
|
+ return applicationLabel + "/" + version;
|
|
68
|
98
|
}
|
|
69
|
99
|
|
|
70
|
100
|
@Override
|
|
71
|
101
|
public Map<String, Object> getConstants() {
|
|
72
|
|
- final Map<String, Object> constants = new HashMap<>();
|
|
|
102
|
+ Map<String, Object> constants = new HashMap<>();
|
|
|
103
|
+
|
|
73
|
104
|
constants.put("ENABLED", isEnabled);
|
|
|
105
|
+
|
|
74
|
106
|
return constants;
|
|
75
|
107
|
}
|
|
76
|
108
|
|
|
77
|
|
-
|
|
78
|
109
|
/**
|
|
79
|
110
|
* Resolves the current user dropbox display name.
|
|
80
|
111
|
*
|
|
|
@@ -83,18 +114,24 @@ public class Dropbox extends ReactContextBaseJavaModule implements LifecycleEven
|
|
83
|
114
|
*/
|
|
84
|
115
|
@ReactMethod
|
|
85
|
116
|
public void getDisplayName(final String token, final Promise promise) {
|
|
86
|
|
- DbxRequestConfig config
|
|
87
|
|
- = DbxRequestConfig.newBuilder(clientId).build();
|
|
|
117
|
+ DbxRequestConfig config = DbxRequestConfig.newBuilder(clientId).build();
|
|
88
|
118
|
DbxClientV2 client = new DbxClientV2(config, token);
|
|
|
119
|
+
|
|
89
|
120
|
// Get current account info
|
|
90
|
121
|
try {
|
|
91
|
122
|
FullAccount account = client.users().getCurrentAccount();
|
|
|
123
|
+
|
|
92
|
124
|
promise.resolve(account.getName().getDisplayName());
|
|
93
|
125
|
} catch (DbxException e) {
|
|
94
|
126
|
promise.reject(e);
|
|
95
|
127
|
}
|
|
96
|
128
|
}
|
|
97
|
129
|
|
|
|
130
|
+ @Override
|
|
|
131
|
+ public String getName() {
|
|
|
132
|
+ return "Dropbox";
|
|
|
133
|
+ }
|
|
|
134
|
+
|
|
98
|
135
|
/**
|
|
99
|
136
|
* Resolves the current user space usage.
|
|
100
|
137
|
*
|
|
|
@@ -103,79 +140,45 @@ public class Dropbox extends ReactContextBaseJavaModule implements LifecycleEven
|
|
103
|
140
|
*/
|
|
104
|
141
|
@ReactMethod
|
|
105
|
142
|
public void getSpaceUsage(final String token, final Promise promise) {
|
|
106
|
|
- DbxRequestConfig config
|
|
107
|
|
- = DbxRequestConfig.newBuilder(clientId).build();
|
|
|
143
|
+ DbxRequestConfig config = DbxRequestConfig.newBuilder(clientId).build();
|
|
108
|
144
|
DbxClientV2 client = new DbxClientV2(config, token);
|
|
|
145
|
+
|
|
109
|
146
|
try {
|
|
110
|
147
|
SpaceUsage spaceUsage = client.users().getSpaceUsage();
|
|
111
|
148
|
WritableMap map = Arguments.createMap();
|
|
|
149
|
+
|
|
112
|
150
|
map.putString("used", String.valueOf(spaceUsage.getUsed()));
|
|
|
151
|
+
|
|
113
|
152
|
SpaceAllocation allocation = spaceUsage.getAllocation();
|
|
114
|
153
|
long allocated = 0;
|
|
115
|
|
- if(allocation.isIndividual()) {
|
|
|
154
|
+
|
|
|
155
|
+ if (allocation.isIndividual()) {
|
|
116
|
156
|
allocated += allocation.getIndividualValue().getAllocated();
|
|
117
|
157
|
}
|
|
118
|
|
-
|
|
119
|
|
- if(allocation.isTeam()) {
|
|
|
158
|
+ if (allocation.isTeam()) {
|
|
120
|
159
|
allocated += allocation.getTeamValue().getAllocated();
|
|
121
|
160
|
}
|
|
122
|
161
|
map.putString("allocated", String.valueOf(allocated));
|
|
|
162
|
+
|
|
123
|
163
|
promise.resolve(map);
|
|
124
|
164
|
} catch (DbxException e) {
|
|
125
|
165
|
promise.reject(e);
|
|
126
|
166
|
}
|
|
127
|
167
|
}
|
|
128
|
168
|
|
|
129
|
|
- /**
|
|
130
|
|
- * Generate a client identifier for the dropbox sdk.
|
|
131
|
|
- *
|
|
132
|
|
- * @returns a client identifier for the dropbox sdk.
|
|
133
|
|
- * @see {https://dropbox.github.io/dropbox-sdk-java/api-docs/v3.0.x/com/dropbox/core/DbxRequestConfig.html#getClientIdentifier--}
|
|
134
|
|
- */
|
|
135
|
|
- private String generateClientId() {
|
|
136
|
|
- Context context = getReactApplicationContext();
|
|
137
|
|
- PackageManager packageManager = context.getPackageManager();
|
|
138
|
|
- ApplicationInfo applicationInfo = null;
|
|
139
|
|
- PackageInfo packageInfo = null;
|
|
140
|
|
-
|
|
141
|
|
- try {
|
|
142
|
|
- String packageName = context.getPackageName();
|
|
143
|
|
-
|
|
144
|
|
- applicationInfo
|
|
145
|
|
- = packageManager.getApplicationInfo(packageName, 0);
|
|
146
|
|
- packageInfo = packageManager.getPackageInfo(packageName, 0);
|
|
147
|
|
- } catch (PackageManager.NameNotFoundException e) {
|
|
148
|
|
- }
|
|
149
|
|
-
|
|
150
|
|
- String applicationLabel
|
|
151
|
|
- = applicationInfo == null
|
|
152
|
|
- ? "JitsiMeet"
|
|
153
|
|
- : packageManager.getApplicationLabel(applicationInfo)
|
|
154
|
|
- .toString().replaceAll("\\s", "");
|
|
155
|
|
- String version = packageInfo == null ? "dev" : packageInfo.versionName;
|
|
|
169
|
+ @Override
|
|
|
170
|
+ public void onHostDestroy() {}
|
|
156
|
171
|
|
|
157
|
|
- return applicationLabel + "/" + version;
|
|
158
|
|
- }
|
|
|
172
|
+ @Override
|
|
|
173
|
+ public void onHostPause() {}
|
|
159
|
174
|
|
|
160
|
175
|
@Override
|
|
161
|
176
|
public void onHostResume() {
|
|
162
|
|
- final String token = Auth.getOAuth2Token();
|
|
163
|
|
- if (token == null)
|
|
164
|
|
- return;
|
|
|
177
|
+ String token = Auth.getOAuth2Token();
|
|
165
|
178
|
|
|
166
|
|
- if (this.promise != null) {
|
|
|
179
|
+ if (token != null && this.promise != null) {
|
|
167
|
180
|
this.promise.resolve(token);
|
|
168
|
181
|
this.promise = null;
|
|
169
|
182
|
}
|
|
170
|
183
|
}
|
|
171
|
|
-
|
|
172
|
|
- @Override
|
|
173
|
|
- public void onHostPause() {
|
|
174
|
|
-
|
|
175
|
|
- }
|
|
176
|
|
-
|
|
177
|
|
- @Override
|
|
178
|
|
- public void onHostDestroy() {
|
|
179
|
|
-
|
|
180
|
|
- }
|
|
181
|
184
|
}
|