得物.apk(点击下载) / HybridWorkHandler.java


package com.shizhuang.duapp.hybrid;

import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import com.meituan.robust.ChangeQuickRedirect;
import com.meituan.robust.PatchProxy;
import com.meituan.robust.PatchProxyResult;
import com.meizu.cloud.pushsdk.notification.model.TimeDisplaySetting;
import com.shizhuang.duapp.hybrid.cache.StorageManager;
import com.shizhuang.duapp.hybrid.cache.model.ProgramStorageModel;
import com.shizhuang.duapp.hybrid.download.PackageDownloader;
import com.shizhuang.duapp.hybrid.download.ProgramDownloader;
import com.shizhuang.duapp.hybrid.download.ResourceDownloader;
import com.shizhuang.duapp.hybrid.offline.LocalResourceManager;
import com.shizhuang.duapp.hybrid.request.PackageRequester;
import com.shizhuang.duapp.hybrid.request.ProgramRequester;
import com.shizhuang.duapp.hybrid.request.ProgramsInfo;
import com.shizhuang.duapp.hybrid.request.RequestException;
import com.shizhuang.duapp.hybrid.request.ResourcesRequester;
import com.shizhuang.duapp.hybrid.request.ResponseCallBack;
import com.shizhuang.duapp.hybrid.upload.UploadZipFileManager;
import com.shizhuang.duapp.hybrid.utils.DataGsonUtil;
import fo.a;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import p4.d;
import p4.f;

public final class HybridWorkHandler {
    public static ChangeQuickRedirect changeQuickRedirect;
    public static AtomicBoolean isResourcesDownloading = new AtomicBoolean(false);
    public static AtomicLong lastPackagesRequestTime = new AtomicLong();
    public static AtomicLong lastProgramsRequestTime = new AtomicLong();
    public static AtomicLong lastResourcesRequestTime = new AtomicLong();
    private static Handler sHandler;

    private static void configOfflinePackage(ProgramDownloader programDownloader, ResourceDownloader resourceDownloader, ProgramsInfo programsInfo, StorageManager storageManager, UploadZipFileManager uploadZipFileManager) {
        if (!PatchProxy.proxy(new Object[]{programDownloader, resourceDownloader, programsInfo, storageManager, uploadZipFileManager}, null, changeQuickRedirect, true, 17818, new Class[]{ProgramDownloader.class, ResourceDownloader.class, ProgramsInfo.class, StorageManager.class, UploadZipFileManager.class}, Void.TYPE).isSupported) {
            Map<String, ProgramsInfo.ItemProgram> map = programsInfo.toMap();
            LocalResourceManager.getInstance().setPrograms(map, programsInfo);
            for (String str : map.keySet()) {
                ProgramsInfo.ItemProgram itemProgram = map.get(str);
                if (itemProgram.getAvailable() == 1 && itemProgram.getPreloadUrls() != null && itemProgram.getPreloadUrls().size() > 0) {
                    Bundle bundle = new Bundle();
                    bundle.putParcelable("KEY_MMKV_PROGRAM_INFO_KEY", itemProgram);
                    getHandler().post(new PreloadUrlsDownloadTask(resourceDownloader, storageManager, bundle));
                }
                ProgramStorageModel programStorageModel = (ProgramStorageModel) DataGsonUtil.stringToData((String) storageManager.getMMKVConfig(LocalResourceManager.getProgramItemKey(itemProgram.getName()), ""), ProgramStorageModel.class);
                if (programStorageModel == null) {
                    getHandler().post(new ProgramsTask(programDownloader, resourceDownloader, storageManager, uploadZipFileManager, getProgramTaskBundle(itemProgram)));
                } else {
                    getHandler().post(new ProgramsCleanTask(storageManager, programStorageModel));
                    ProgramsInfo.ItemProgram itemProgram2 = programStorageModel.currentProgram;
                    if (itemProgram2 == null) {
                        getHandler().post(new ProgramsTask(programDownloader, resourceDownloader, storageManager, uploadZipFileManager, getProgramTaskBundle(itemProgram)));
                    } else if (!itemProgram2.equals(itemProgram)) {
                        getHandler().post(new ProgramsTask(programDownloader, resourceDownloader, storageManager, uploadZipFileManager, getProgramTaskBundle(itemProgram)));
                    }
                }
            }
        }
    }

    public static synchronized Handler getHandler() {
        synchronized (HybridWorkHandler.class) {
            PatchProxyResult proxy = PatchProxy.proxy(new Object[0], null, changeQuickRedirect, true, 17814, new Class[0], Handler.class);
            if (proxy.isSupported) {
                return (Handler) proxy.result;
            }
            if (sHandler == null) {
                d dVar = new d("hybrid_work_thread", 10, "​com.shizhuang.duapp.hybrid.HybridWorkHandler");
                dVar.setName(f.a(dVar.getName(), "​com.shizhuang.duapp.hybrid.HybridWorkHandler"));
                dVar.start();
                sHandler = new Handler(dVar.getLooper());
            }
            return sHandler;
        }
    }

    private static Bundle getProgramTaskBundle(ProgramsInfo.ItemProgram itemProgram) {
        PatchProxyResult proxy = PatchProxy.proxy(new Object[]{itemProgram}, null, changeQuickRedirect, true, 17821, new Class[]{ProgramsInfo.ItemProgram.class}, Bundle.class);
        if (proxy.isSupported) {
            return (Bundle) proxy.result;
        }
        Bundle bundle = new Bundle();
        bundle.putParcelable("KEY_MMKV_PROGRAM_INFO_KEY", itemProgram);
        return bundle;
    }

    private static Bundle getTaskBundle(String str, String str2, boolean z) {
        PatchProxyResult proxy = PatchProxy.proxy(new Object[]{str, str2, new Byte(z ? (byte) 1 : 0)}, null, changeQuickRedirect, true, 17820, new Class[]{String.class, String.class, Boolean.TYPE}, Bundle.class);
        if (proxy.isSupported) {
            return (Bundle) proxy.result;
        }
        Bundle bundle = new Bundle();
        bundle.putString("KEY_URL", Uri.parse(str).buildUpon().appendQueryParameter(TimeDisplaySetting.TIME_DISPLAY_SETTING, String.valueOf(System.currentTimeMillis())).build().toString());
        bundle.putString("KEY_MMKV_STOREKEY", str2);
        bundle.putBoolean("KEY_IS_NEWVERSION", z);
        return bundle;
    }

    public static void handlerProgramsInfo(ProgramDownloader programDownloader, ResourceDownloader resourceDownloader, ProgramsInfo programsInfo, StorageManager storageManager, UploadZipFileManager uploadZipFileManager) {
        boolean z = false;
        if (!PatchProxy.proxy(new Object[]{programDownloader, resourceDownloader, programsInfo, storageManager, uploadZipFileManager}, null, changeQuickRedirect, true, 17817, new Class[]{ProgramDownloader.class, ResourceDownloader.class, ProgramsInfo.class, StorageManager.class, UploadZipFileManager.class}, Void.TYPE).isSupported && programsInfo != null) {
            try {
                HtmlCacheManager.getInstance().setProgramsInfo(programsInfo);
                LocalResourceManager instance = LocalResourceManager.getInstance();
                if (programsInfo.available == 1) {
                    z = true;
                }
                instance.setOfflineProgram(z);
                if (programsInfo.isOfflinePackageConfigValid()) {
                    configOfflinePackage(programDownloader, resourceDownloader, programsInfo, storageManager, uploadZipFileManager);
                }
                WebPreFetchConfigManager.getInstance().onConfigUpdate(programsInfo.preFetchConfig);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static void postPackageTask(PackageRequester packageRequester, PackageDownloader packageDownloader, StorageManager storageManager) {
        if (!PatchProxy.proxy(new Object[]{packageRequester, packageDownloader, storageManager}, null, changeQuickRedirect, true, 17819, new Class[]{PackageRequester.class, PackageDownloader.class, StorageManager.class}, Void.TYPE).isSupported) {
            long currentTimeMillis = System.currentTimeMillis() - lastPackagesRequestTime.get();
            long pollRequestInterval = packageRequester.getConfig().pollRequestInterval();
            a.u("hybridInfo").i("package: pollRequestIntervalConfig : %s", Long.valueOf(pollRequestInterval));
            if (currentTimeMillis > pollRequestInterval) {
                a.u("hybridInfo").i("start update Offline packages..", new Object[0]);
                getHandler().post(new PackagesTask(packageRequester, packageDownloader, storageManager, getTaskBundle("https://cdn.poizon.com/node-common/h5-package-info.json", "KEY_COMMON_PACKAGE_MODEL", true)));
                return;
            }
            a.u("hybridInfo").i("package: requestInterval < pollRequestIntervalConfig: %s", Long.valueOf(pollRequestInterval));
        }
    }

    public static void postProgramTask(ProgramRequester programRequester, final ProgramDownloader programDownloader, final ResourceDownloader resourceDownloader, final StorageManager storageManager, final UploadZipFileManager uploadZipFileManager) {
        if (!PatchProxy.proxy(new Object[]{programRequester, programDownloader, resourceDownloader, storageManager, uploadZipFileManager}, null, changeQuickRedirect, true, 17816, new Class[]{ProgramRequester.class, ProgramDownloader.class, ResourceDownloader.class, StorageManager.class, UploadZipFileManager.class}, Void.TYPE).isSupported) {
            long currentTimeMillis = System.currentTimeMillis() - lastProgramsRequestTime.get();
            long pollRequestInterval = programRequester.getConfig().pollRequestInterval();
            if (currentTimeMillis > pollRequestInterval) {
                a.u("hybridInfo").i("start update Offline program..", new Object[0]);
                try {
                    HtmlCacheManager.getInstance().setProgramLoadStatus(1);
                    programRequester.getConfig(new ResponseCallBack() {
                        /* class com.shizhuang.duapp.hybrid.HybridWorkHandler.AnonymousClass1 */
                        public static ChangeQuickRedirect changeQuickRedirect;

                        @Override // com.shizhuang.duapp.hybrid.request.ResponseCallBack
                        public void onFail(RequestException requestException) {
                            if (!PatchProxy.proxy(new Object[]{requestException}, this, changeQuickRedirect, false, 17823, new Class[]{RequestException.class}, Void.TYPE).isSupported) {
                                HtmlCacheManager.getInstance().setProgramLoadStatus(3);
                                requestException.printStackTrace();
                            }
                        }

                        @Override // com.shizhuang.duapp.hybrid.request.ResponseCallBack
                        public void onSuccess(String str) {
                            boolean z = true;
                            if (!PatchProxy.proxy(new Object[]{str}, this, changeQuickRedirect, false, 17822, new Class[]{String.class}, Void.TYPE).isSupported && !TextUtils.isEmpty(str)) {
                                HtmlCacheManager.getInstance().setProgramLoadStatus(2);
                                ProgramsInfo programsInfo = (ProgramsInfo) DataGsonUtil.stringToData(str, ProgramsInfo.class);
                                if (programsInfo != null) {
                                    HtmlCacheManager instance = HtmlCacheManager.getInstance();
                                    if (programsInfo.preLoad != 1) {
                                        z = false;
                                    }
                                    instance.setCacheHtml(z);
                                    HybridWorkHandler.handlerProgramsInfo(programDownloader, resourceDownloader, programsInfo, storageManager, uploadZipFileManager);
                                    HybridWorkHandler.lastProgramsRequestTime.set(System.currentTimeMillis());
                                    storageManager.storeMMKVConfig("KEY_PROGRAM_LIST_MODEL", str);
                                    HtmlCacheEnhancer.getInstance().updateConfig(programsInfo.preloadConfig);
                                    HtmlCacheEnhancer.getInstance().updatePreRenderConfig(programsInfo.preRenderConfig);
                                }
                            }
                        }
                    });
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                a.u("hybridInfo").i("program: requestInterval < pollRequestIntervalConfig: %s", Long.valueOf(pollRequestInterval));
            }
        }
    }

    public static void postResourceTask(ResourcesRequester resourcesRequester, ResourceDownloader resourceDownloader, StorageManager storageManager) {
        if (!PatchProxy.proxy(new Object[]{resourcesRequester, resourceDownloader, storageManager}, null, changeQuickRedirect, true, 17815, new Class[]{ResourcesRequester.class, ResourceDownloader.class, StorageManager.class}, Void.TYPE).isSupported) {
            long currentTimeMillis = System.currentTimeMillis() - lastResourcesRequestTime.get();
            long pollRequestInterval = resourcesRequester.getConfig().pollRequestInterval();
            if (currentTimeMillis > pollRequestInterval) {
                a.u("hybridInfo").i("start update Offline resource..", new Object[0]);
                getHandler().post(new ResourcesTask(resourcesRequester, resourceDownloader, storageManager));
                return;
            }
            a.u("hybridInfo").i("resource: requestInterval < pollRequestIntervalConfig: %s", Long.valueOf(pollRequestInterval));
        }
    }
}