nativeapihelper

mail@pastecode.io avatarunknown
java
a month ago
29 kB
1
Indexable
Never
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);
    }
}