package im.shimo.react.x5.webview;

import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.tencent.smtt.sdk.WebView;


public class RNX5WebViewPackage implements ReactPackage {
    private class X5WebViewModule extends ReactContextBaseJavaModule {

        private ReactApplicationContext mReactContext;

        public X5WebViewModule(ReactApplicationContext reactContext) {
            super(reactContext);
            mReactContext = reactContext;
        }

        @Override
        public String getName() {
            return "X5WebView";
        }

        @ReactMethod
        public void getX5CoreVersion(Callback callback) {
            callback.invoke(WebView.getTbsCoreVersion(mReactContext));
        }
    }

    @Override
    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
        List<NativeModule> modules = new ArrayList<>();
        modules.add(new X5WebViewModule(reactContext));
        return modules;
    }

    @Override
    public List<Class<? extends JavaScriptModule>> createJSModules() {
        return Collections.emptyList();
    }

    @Override
    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
        List<ViewManager> modules = new ArrayList<>();
        modules.add(new RNX5WebViewManager(reactContext));
        return modules;
    }
}