ModuleUrlHandle.java 3.51 KB
package com.polysoft.nafmii.fragment.home;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.text.TextUtils;

import com.alibaba.fastjson.JSON;
import com.polysoft.nafmii.bean.MenuBean;
import com.polysoft.nafmii.enums.ModulesEnum;
import com.polysoft.nafmii.utils.FileUtils;
import com.polysoft.nafmii.webview.IWebview;
import com.polysoft.nafmii.webview.JSApi;

import java.util.HashMap;
import java.util.Map;

public class ModuleUrlHandle {

    private final Activity activity;

    ModuleUrlHandle(Activity activity) {
        this.activity = activity;
    }

    public IModuleHandle getModuleHandle(ModulesEnum module) {
        return new ModuleUrlImpl(module);
    }

    public IModuleHandle getModuleHandle(MenuBean bean) {
        return new ModuleBeanImpl(bean);
    }

    public String getModuleUrl(ModulesEnum module) {
        String url = getInputUrl(module);
        if (!TextUtils.isEmpty(url)) {
            return url;
        }
        if (module == ModulesEnum.LEARN) {
            return module.webUrl + "?t=" + System.currentTimeMillis();
        }

        String indexUrl = Uri.fromFile(FileUtils.getIndex()).toString();
        return indexUrl + module.webUrl;
    }

    private String getInputUrl(ModulesEnum module) {
        Intent intent = activity.getIntent();
        if (module == ModulesEnum.HOME || module == ModulesEnum.MEMBER || module == ModulesEnum.MY) {
//            String urlStr = intent.getStringExtra(ModulesEnum.HOME.name);
//            if (TextUtils.isEmpty(urlStr)) {
//                return null;
//            }
//            Uri uri = Uri.parse(urlStr);
//            return uri.getScheme() +":"+ uri.getSchemeSpecificPart() + module.webUrl;

//            return BuildConfig.ONLINE_URL + "?"+System.currentTimeMillis() + module.webUrl;
//            return "http://192.168.137.1:8080/"+System.currentTimeMillis() + module.webUrl;
        }
//        return intent.getStringExtra(module.name);
        return "";
    }

    public interface IModuleHandle {

        ModulesEnum getModule();

        void loadUrl(IWebview webview);
    }


    static class ModuleBeanImpl implements IModuleHandle {
        private final MenuBean bean;

        ModuleBeanImpl(MenuBean bean) {
            this.bean = bean;
        }

        @Override
        public ModulesEnum getModule() {
            return ModulesEnum.findModule(this.bean.getModuleName());
        }

        @Override
        public void loadUrl(IWebview webview) {
            if (!TextUtils.isEmpty(bean.getUrl())) {
                webview.loadUrl(bean.getUrl());
            } else if (!TextUtils.isEmpty(bean.getRouteName())
                    || !TextUtils.isEmpty(bean.getRoutePath())) {
                Map<String, Object> map = new HashMap<>(2);
                map.put("routePath", bean.getRoutePath());
                map.put("routeName", bean.getRouteName());
                map.put("query", bean.getQuery());
                JSApi.callOnRouteChange(webview.getWebview(), JSON.toJSONString(map));
            }
        }
    }


    class ModuleUrlImpl implements IModuleHandle {
        private final ModulesEnum module;

        ModuleUrlImpl(ModulesEnum module) {
            this.module = module;
        }

        @Override
        public ModulesEnum getModule() {
            return this.module;
        }

        @Override
        public void loadUrl(IWebview webview) {
//            Intent intent = activity.getIntent();
//            String url = intent.getStringExtra(module.name);
        }
    }

}