nativeapihelper
unknown
java
2 years ago
29 kB
11
Indexable
package com.sync.mobileapp;
import android.content.Context;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
import android.util.Log;
import com.sync.mobileapp.callbacks.DummyNativeCallback;
import com.sync.mobileapp.interfaces.NativeCallback;
import com.sync.mobileapp.models.CachedPathItems;
import com.sync.mobileapp.models.UserConf;
import com.sync.mobileapp.utils.FileUtils;
import com.sync.mobileapp.utils.Retry;
import com.sync.mobileapp.utils.Thumbnail;
import com.sync.mobileapp.utils.UploadUtils;
import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Hashtable;
import java.util.concurrent.atomic.AtomicInteger;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: /tmp/jadx-8747705718779973796.dex */
public class NativeApiHelper {
protected static Context APP_CONTEXT = null;
protected static NativeCallback BG_AUTOUPLOAD_CB = null;
protected static boolean BG_AUTOUPLOAD_PAUSED = false;
protected static Thread BG_AUTOUPLOAD_THREAD = null;
protected static NativeCallback BG_DOWNLOAD_CB = null;
protected static Thread BG_DOWNLOAD_THREAD = null;
protected static NativeCallback BG_UPLOAD_CB = null;
protected static Thread BG_UPLOAD_THREAD = null;
protected static Thread BG_WATCHER_THREAD = null;
protected static DummyNativeCallback DEFAULT_DUMMY_CB = null;
protected static boolean IS_INIT = false;
protected static Hashtable<String, CachedPathItems> PATH_ITEMS_CACHE = null;
protected static AtomicInteger SCROLLING_IN_PROGRESS_COUNTER = null;
protected static int SCROLLING_IN_PROGRESS_COUNTER_MAX = 5;
protected static int SCROLLING_IN_PROGRESS_SLEEP_MS = 125;
protected static int THUMB1_MAX_DOWNLOAD_BYTES = 512000;
protected static int THUMB2_MAX_DOWNLOAD_BYTES = 1024000;
protected static long WATCHED_NUM_ABOVE;
protected static long WATCHED_NUM_BELOW;
protected static long WATCHED_ORDERFLAGS;
protected static long WATCHED_PID;
protected static long WATCHED_THUMBTYPE;
protected static long WATCHED_WHEREFLAGS;
protected static NativeCallback WATCHER_CB;
private static int counter;
static Retry retry = new Retry(3, 2000);
private static native String callNative(String str, NativeCallback nativeCallback);
protected static JSONObject error(int i) throws JSONException {
return new JSONObject().put("errcode", i);
}
public static void log(String str, Exception exc) {
StringWriter stringWriter = new StringWriter();
exc.printStackTrace(new PrintWriter(stringWriter));
Log.d("Sync.com", str + ":" + exc.getMessage() + "\n" + stringWriter.toString());
}
public static void log(String str) {
StackTraceElement stackTraceElement = new Exception().getStackTrace()[1];
Log.d("Sync.com", "(" + stackTraceElement.getClassName() + ", " + stackTraceElement.getLineNumber() + ") " + str);
}
public static void log(JSONObject jSONObject) {
StackTraceElement stackTraceElement = new Exception().getStackTrace()[1];
Log.d("Sync.com", "(" + stackTraceElement.getClassName() + ", " + stackTraceElement.getLineNumber() + ") " + jSONObject.toString());
}
/* JADX WARN: Removed duplicated region for block: B:60:0x009a A[EXC_TOP_SPLITTER, SYNTHETIC] */
/* JADX WARN: Removed duplicated region for block: B:64:0x00a4 A[EXC_TOP_SPLITTER, SYNTHETIC] */
/* JADX WARN: Unsupported multi-entry loop pattern (BACK_EDGE: B:41:0x0092 -> B:68:0x0095). Please submit an issue!!! */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
protected static boolean copyAssetToDir(java.lang.String r6, android.content.res.AssetManager r7, java.io.File r8) {
/*
java.lang.String r0 = "could not close output"
java.lang.String r1 = "could not close input"
r2 = 0
r3 = 0
java.io.InputStream r7 = r7.open(r6) // Catch: java.lang.Throwable -> L67 java.io.IOException -> L6b
java.io.FileOutputStream r4 = new java.io.FileOutputStream // Catch: java.lang.Throwable -> L60 java.io.IOException -> L63
java.io.File r5 = new java.io.File // Catch: java.lang.Throwable -> L60 java.io.IOException -> L63
r5.<init>(r8, r6) // Catch: java.lang.Throwable -> L60 java.io.IOException -> L63
r4.<init>(r5) // Catch: java.lang.Throwable -> L60 java.io.IOException -> L63
java.lang.StringBuilder r2 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
r2.<init>() // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
java.lang.String r5 = "copy "
r2.append(r5) // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
r2.append(r6) // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
java.lang.String r5 = " to "
r2.append(r5) // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
java.io.File r5 = new java.io.File // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
r5.<init>(r8, r6) // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
java.lang.String r8 = r5.toString() // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
r2.append(r8) // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
java.lang.String r8 = r2.toString() // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
log(r8) // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
r8 = 1024(0x400, float:1.435E-42)
byte[] r8 = new byte[r8] // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
L3d:
int r2 = r7.read(r8) // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
if (r2 <= 0) goto L47
r4.write(r8, r3, r2) // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
goto L3d
L47:
r4.flush() // Catch: java.lang.Throwable -> L5c java.io.IOException -> L5e
if (r7 == 0) goto L56
r7.close() // Catch: java.lang.Exception -> L50
goto L56
L50:
r6 = move-exception
log(r1, r6)
r6 = 0
goto L57
L56:
r6 = 1
L57:
r4.close() // Catch: java.lang.Exception -> L91
r3 = r6
goto L95
L5c:
r6 = move-exception
goto L98
L5e:
r8 = move-exception
goto L65
L60:
r6 = move-exception
r4 = r2
goto L98
L63:
r8 = move-exception
r4 = r2
L65:
r2 = r7
goto L6d
L67:
r6 = move-exception
r7 = r2
r4 = r7
goto L98
L6b:
r8 = move-exception
r4 = r2
L6d:
java.lang.StringBuilder r7 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> L96
r7.<init>() // Catch: java.lang.Throwable -> L96
java.lang.String r5 = "could not copy asset "
r7.append(r5) // Catch: java.lang.Throwable -> L96
r7.append(r6) // Catch: java.lang.Throwable -> L96
java.lang.String r6 = r7.toString() // Catch: java.lang.Throwable -> L96
log(r6, r8) // Catch: java.lang.Throwable -> L96
if (r2 == 0) goto L8b
r2.close() // Catch: java.lang.Exception -> L87
goto L8b
L87:
r6 = move-exception
log(r1, r6)
L8b:
if (r4 == 0) goto L95
r4.close() // Catch: java.lang.Exception -> L91
goto L95
L91:
r6 = move-exception
log(r0, r6)
L95:
return r3
L96:
r6 = move-exception
r7 = r2
L98:
if (r7 == 0) goto La2
r7.close() // Catch: java.lang.Exception -> L9e
goto La2
L9e:
r7 = move-exception
log(r1, r7)
La2:
if (r4 == 0) goto Lac
r4.close() // Catch: java.lang.Exception -> La8
goto Lac
La8:
r7 = move-exception
log(r0, r7)
Lac:
goto Lae
Lad:
throw r6
Lae:
goto Lad
*/
throw new UnsupportedOperationException("Method not decompiled: com.sync.mobileapp.NativeApiHelper.copyAssetToDir(java.lang.String, android.content.res.AssetManager, java.io.File):boolean");
}
protected static JSONObject call(JSONObject jSONObject, NativeCallback nativeCallback) throws JSONException {
if (nativeCallback == null) {
if (DEFAULT_DUMMY_CB == null) {
DEFAULT_DUMMY_CB = new DummyNativeCallback();
}
nativeCallback = DEFAULT_DUMMY_CB;
}
long nanoTime = System.nanoTime();
String callNative = callNative(jSONObject.toString(), nativeCallback);
long nanoTime2 = System.nanoTime();
JSONObject jSONObject2 = new JSONObject(callNative);
long nanoTime3 = System.nanoTime();
double d = nanoTime2 - nanoTime;
Double.isNaN(d);
jSONObject2.put("native_call_milli", d / 1000000.0d);
double d2 = nanoTime3 - nanoTime2;
Double.isNaN(d2);
jSONObject2.put("json_processing_milli", d2 / 1000000.0d);
return jSONObject2;
}
protected static JSONObject call(JSONObject jSONObject) throws JSONException {
long nanoTime = System.nanoTime();
String callNative = callNative(jSONObject.toString(), null);
long nanoTime2 = System.nanoTime();
JSONObject jSONObject2 = new JSONObject(callNative);
long nanoTime3 = System.nanoTime();
double d = nanoTime2 - nanoTime;
Double.isNaN(d);
jSONObject2.put("native_call_milli", d / 1000000.0d);
double d2 = nanoTime3 - nanoTime2;
Double.isNaN(d2);
jSONObject2.put("json_processing_milli", d2 / 1000000.0d);
return jSONObject2;
}
protected static JSONObject call(String str, NativeCallback nativeCallback) throws JSONException {
return call(new JSONObject().put("action", str), nativeCallback);
}
protected static void throwExceptionIfHasError(JSONObject jSONObject) throws Exception {
int i = jSONObject.getInt("errcode");
if (i <= 0) {
return;
}
throw new NativeApiHelperException(i, "got error code " + i);
}
protected static synchronized void refreshPathsLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static synchronized void refreshConfLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static boolean updateView(boolean z) {
try {
if (WATCHED_PID == 0 || WATCHER_CB == null) {
return false;
}
if (z) {
log("skipping call to refreshPath is iscontinued is true");
} else {
refreshPathsLocked(new JSONObject().put("action", "refreshPaths").put("maxiter", 1).put("pid", WATCHED_PID).put("onlyifolderthan", 0), null);
}
String str = WATCHED_PID + ":" + WATCHED_WHEREFLAGS + ":" + WATCHED_ORDERFLAGS;
CachedPathItems cachedPathItems = PATH_ITEMS_CACHE.get(str);
int i = cachedPathItems != null ? cachedPathItems.curidx : 0;
log("calling updateview on pid-where-order:" + str + " idx:" + i + " before:" + String.valueOf(WATCHED_NUM_ABOVE) + " after:" + String.valueOf(WATCHED_NUM_BELOW));
int i2 = THUMB1_MAX_DOWNLOAD_BYTES;
if (WATCHED_THUMBTYPE == 8) {
i2 = THUMB2_MAX_DOWNLOAD_BYTES;
}
long j = i;
JSONObject call = call(new JSONObject().put("action", "updateView").put("mode", -1).put("pid", WATCHED_PID).put("thumbtype", WATCHED_THUMBTYPE).put("whereflags", WATCHED_WHEREFLAGS).put("orderflags", WATCHED_ORDERFLAGS).put("maxdownload", i2).put("firstidx", (j - WATCHED_NUM_ABOVE) - 1).put("uptoidx", j + WATCHED_NUM_BELOW + 1), (NativeCallback) null);
if (call.isNull("numchanges") || WATCHER_CB == null) {
return false;
}
WATCHER_CB.progress(call.toString());
return call.getInt("callagain") == 1;
} catch (Exception e) {
Log.d("Sync.com", "updateView had error", e);
return false;
}
}
public static long availSpaceOnExtStorage() {
long availableBlocks;
long blockSize;
StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getPath());
if (Build.VERSION.SDK_INT >= 18) {
availableBlocks = statFs.getAvailableBlocksLong();
blockSize = statFs.getBlockSizeLong();
} else {
availableBlocks = statFs.getAvailableBlocks();
blockSize = statFs.getBlockSize();
}
return availableBlocks * blockSize;
}
protected static synchronized void downloadNowLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static void runBackgroundDownloadLoop() {
1BgDlWrapCb r2 = new 1BgDlWrapCb();
while (true) {
try {
call("downloadProcessQueue", (NativeCallback) r2);
} catch (Exception e) {
Log.e("Sync.com", "downloadProcessQueue", e);
}
try {
Thread.sleep(6000);
} catch (InterruptedException unused) {
Log.d("Sync.com", "bgdownload thread woken up");
}
}
}
protected static synchronized void uploadNowLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
JSONObject call = call("getThumbParams", (NativeCallback) null);
String string = jSONObject.getString("path");
String make = Thumbnail.make(string, call.getInt("thumb1size"), call.getInt("thumb1size"), true, call.getInt("thumb1quality"));
String make2 = Thumbnail.make(string, call.getInt("thumb2size"), call.getInt("thumb2size"), false, call.getInt("thumb2quality"));
jSONObject.put("thumb1", make);
jSONObject.put("thumb2", make2);
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static void runBackgroundUploadLoop() {
1BgUpWrapCb r2 = new 1BgUpWrapCb();
while (true) {
try {
call("uploadProcessQueue", (NativeCallback) r2);
} catch (Exception e) {
Log.e("Sync.com", "uploadProcessQueue", e);
}
try {
Thread.sleep(6000);
} catch (InterruptedException unused) {
Log.d("Sync.com", "runBackgroundupload thread woken up");
}
}
}
protected static void runBackgroundAutoUploadLoop() {
1BgAutoUpWrapCb r0 = new 1BgAutoUpWrapCb();
while (!BG_AUTOUPLOAD_PAUSED) {
if (!UploadUtils.canProceed(APP_CONTEXT)) {
log("autoupload not allowed to proceed, sleep 20 minutes");
} else {
log("Camera upload is going to process the queue");
try {
call("autoUploadProcessQueue", (NativeCallback) r0);
} catch (Exception e) {
Log.e("Sync.com", "autoAploadProcessQueue", e);
}
}
try {
Thread.sleep(300000);
} catch (InterruptedException unused) {
Log.d("Sync.com", "runBackgroundAutoUpload thread woken up");
}
}
log("Camera upload is not running: Paused");
BG_AUTOUPLOAD_THREAD = null;
}
public static void processCameraUploadQueue(NativeCallback nativeCallback) {
BG_AUTOUPLOAD_CB = nativeCallback;
2BgAutoUpWrapCb r4 = new 2BgAutoUpWrapCb();
if (BG_AUTOUPLOAD_PAUSED) {
SyncApplication.logwrite("Sync.com", "Camera upload is not running: Paused");
SyncApplication.log("Sync.com", "Camera upload is not running: Paused");
return;
}
SyncApplication.logwrite("Sync.com", "Camera upload is going to process the queue");
SyncApplication.log("Sync.com", "Camera upload is going to process the queue");
try {
call("autoUploadProcessQueue", (NativeCallback) r4);
} catch (Exception e) {
SyncApplication.logwrite("Sync.com", "autoAploadProcessQueue failed " + e.getLocalizedMessage());
SyncApplication.log("Sync.com", "autoAploadProcessQueue failed " + e.getLocalizedMessage());
}
}
protected static synchronized void provisionLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static synchronized void upstreamAPILocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static synchronized void createPublinkLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static synchronized void decryptLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
public static synchronized void mkdirLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
public static synchronized void batchDeleteLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
public static synchronized void deleteLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static synchronized void sendLogsLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static synchronized void renameLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static synchronized void geteventsLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static synchronized void shareLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
call(jSONObject, nativeCallback);
}
}
protected static synchronized void publinkLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
call(jSONObject, nativeCallback);
}
}
protected static synchronized void shareFileLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
call(jSONObject, nativeCallback);
}
}
protected static synchronized void copytoLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
protected static synchronized void eventsThumbsLocked(JSONObject jSONObject, NativeCallback nativeCallback) throws Exception {
synchronized (NativeApiHelper.class) {
throwExceptionIfHasError(call(jSONObject, nativeCallback));
}
}
private static String getDeviceName() {
String str = Build.MANUFACTURER;
String str2 = Build.MODEL;
if (str2.startsWith(str)) {
return capitalize(str2);
}
return capitalize(str) + " " + str2;
}
private static String capitalize(String str) {
if (str == null || str.length() == 0) {
return "";
}
char charAt = str.charAt(0);
if (Character.isUpperCase(charAt)) {
return str;
}
return Character.toUpperCase(charAt) + str.substring(1);
}
public static synchronized JSONObject provision(String str, String str2, String str3, String str4, boolean z, String str5, NativeCallback nativeCallback) throws JSONException {
JSONObject spawnThread;
synchronized (NativeApiHelper.class) {
spawnThread = spawnThread(ThreadedNativeCall.PROVISION, new JSONObject().put("action", "provision").put("username", str).put("firstname", str2).put("lastname", str3).put("password", str4).put("devicename", getDeviceName()).put("twofa", str5).put("newuser", z ? 1 : 0), nativeCallback);
}
return spawnThread;
}
public static synchronized JSONObject provision(String str, String str2, String str3, String str4, boolean z, boolean z2, NativeCallback nativeCallback) throws JSONException {
JSONObject spawnThread;
synchronized (NativeApiHelper.class) {
ThreadedNativeCall threadedNativeCall = ThreadedNativeCall.PROVISION;
JSONObject put = new JSONObject().put("action", "provision").put("username", str).put("firstname", str2).put("lastname", str3).put("password", str4);
int i = 1;
JSONObject put2 = put.put("passreset", z2 ? 1 : 0).put("devicename", getDeviceName());
if (!z) {
i = 0;
}
spawnThread = spawnThread(threadedNativeCall, put2.put("newuser", i), nativeCallback);
}
return spawnThread;
}
/* JADX INFO: Access modifiers changed from: private */
public static void sendErrorToCallback(JSONObject jSONObject, NativeCallback nativeCallback, NativeApiHelperException nativeApiHelperException) {
if (nativeCallback == null) {
Log.e("Sync.com", "cannot send exception to null callback", nativeApiHelperException);
return;
}
try {
nativeCallback.progress(new JSONObject().put("status", "error").put("errcode", nativeApiHelperException.getErrCode()).put("exception", nativeApiHelperException.toString()).toString());
} catch (Exception e) {
Log.e("Sync.com", "unexpected exception while sending error to callback", e);
}
}
protected static void wakeWatcher() {
Thread thread = BG_WATCHER_THREAD;
if (thread != null) {
thread.interrupt();
}
}
public static void wakeAutoUpload() {
Thread thread = BG_AUTOUPLOAD_THREAD;
if (thread != null) {
thread.interrupt();
}
}
protected static String processWormhole(String str) throws JSONException {
char c;
String uploadContentByID;
File file;
int i;
int i2;
int i3;
int i4;
JSONObject jSONObject = new JSONObject(str);
String string = jSONObject.getString("action");
int hashCode = string.hashCode();
if (hashCode != -585905298) {
if (hashCode == 11517756 && string.equals("autoUploadResolve")) {
c = 0;
}
c = 65535;
} else {
if (string.equals("autoUploadCanProceed")) {
c = 1;
}
c = 65535;
}
if (c != 0) {
if (c == 1) {
return new JSONObject().put("errcode", 0).put("continue", UploadUtils.canProceed(APP_CONTEXT) ? 1 : 0).toString();
}
JSONObject put = new JSONObject().put("errcode", 1124073474);
return put.put("errdesc", "unknow action '" + string + "'").toString();
}
String string2 = jSONObject.getString("fileid");
String path = FileUtils.getPath(APP_CONTEXT, Uri.parse(string2));
if (path != null) {
log("NativeApiHelper: fileid is old version:" + string2);
SyncApplication.logwrite("NativeApiHelper", "autoUploadResolve " + string2 + " got path: " + path);
if (path.isEmpty()) {
SyncApplication.logwrite("NativeApiHelper", "autoUploadResolve could not return path from FileUtils");
JSONObject put2 = new JSONObject().put("errcode", 2);
return put2.put("errdesc", "could not resolve uri: " + string2).toString();
}
file = new File(path);
if (file.length() >= 2000000000) {
SyncApplication.logwrite("NativeApiHelper", "autoUploadResolve file size is too large > 2GB");
JSONObject put3 = new JSONObject().put("errcode", 2);
return put3.put("errdesc", "File size is too large " + string2).toString();
} else if (!file.canRead() || !file.isFile()) {
SyncApplication.logwrite("NativeApiHelper", "autoUploadResolve cannot read file at " + file.getAbsolutePath());
JSONObject put4 = new JSONObject().put("errcode", 2);
return put4.put("errdesc", path + " does not exist").toString();
} else {
uploadContentByID = path;
}
} else {
SyncApplication.logwrite("NativeApiHelper", "NativeApiHelper: fileid is new version: " + string2);
uploadContentByID = UploadUtils.getUploadContentByID(APP_CONTEXT, string2);
if (uploadContentByID == null) {
SyncApplication.logwrite("NativeApiHelper", "autoUploadResolve cannot read file at " + uploadContentByID);
JSONObject put5 = new JSONObject().put("errcode", 2);
return put5.put("errdesc", path + " does not exist").toString();
}
file = new File(uploadContentByID);
}
SyncApplication.logwrite("NativeApiHelper", "resolve autoupload content got " + file.getAbsolutePath());
UserConf latestInstance = UserConf.getLatestInstance();
if (latestInstance != null) {
i = latestInstance.getThumb1Size();
i2 = latestInstance.getThumb2Size();
i3 = latestInstance.getThumb1Quality();
i4 = latestInstance.getThumb2Quality();
} else {
JSONObject thumbParams = NativeApi.getThumbParams();
i = thumbParams.getInt("thumb1size");
i2 = thumbParams.getInt("thumb2size");
i3 = thumbParams.getInt("thumb1quality");
i4 = thumbParams.getInt("thumb2quality");
}
String make = Thumbnail.make(uploadContentByID, i, i, true, i3);
return new JSONObject().put("errcode", 0).put("label", file.getName()).put("path", uploadContentByID).put("thumb1", make).put("thumb2", Thumbnail.make(uploadContentByID, i2, i2, false, i4)).toString();
}
protected static JSONObject spawnThread(ThreadedNativeCall threadedNativeCall, JSONObject jSONObject, NativeCallback nativeCallback) throws JSONException {
new Thread((Runnable) new 1(threadedNativeCall, jSONObject, nativeCallback == null ? new DummyNativeCallback() : nativeCallback, nativeCallback)).start();
return new JSONObject().put("errcode", 0);
}
}
Editor is loading...