package com.iwhalecloud.picedit;

import android.Manifest;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.util.Log;
import android.widget.Toast;

import com.dyh.rnpicture.edit.AddWatermarkActivity;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.runtimepermission.PermissionsManager;
import com.runtimepermission.PermissionsResultAction;

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

public class RNPicEditViewManager extends SimpleViewManager<PicEditView>
{
    @Override
    public String getName()
    {
        return "PhotoEditer";
    }

    @Override
    public @Nullable
    Map<String, Object> getExportedCustomDirectEventTypeConstants() {
        MapBuilder.Builder<String, Object> builder = MapBuilder.builder();
        for (String event : MyEventEmitter.Events) {
            builder.put(event, MapBuilder.of("registrationName", event));
        }
        return builder.build();
    }

    @Override
    protected PicEditView createViewInstance(ThemedReactContext reactContext)
    {
        String[] strs = {
                Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE
        };
        PermissionsManager.getInstance().requestPermissionsIfNecessaryForResult(reactContext.getCurrentActivity(),strs, new PermissionsResultAction()
        {
            @Override
            public void onGranted()
            {

            }

            @Override
            public void onDenied(String permission)
            {
                Toast.makeText(reactContext.getCurrentActivity(), "缺少"+permission, Toast.LENGTH_SHORT).show();

            }
        });
        PicEditView picEditView=new PicEditView(reactContext,reactContext.getCurrentActivity());
        Utils.getWindowSize(reactContext);
        return picEditView;
    }

    @ReactProp(name="title")
    public void title(PicEditView picEditView,String title){

        try
        {
            picEditView.setTitleView(title);
        }catch (Exception E){
            E.printStackTrace();
        }
    }

    @ReactProp(name="source")
    public void source(PicEditView picEditView,String source){

        Log.v("dyh","设置source:"+source);
        try
        {
            picEditView.setSource(source);
        }catch (Exception E){
            E.printStackTrace();
            WritableMap map=Arguments.createMap();
            map.putString("result","source error");
            picEditView.getMyEventEmitter().receiveEvent(MyEventEmitter.EVENT_ERROR,null);
        }
    }

    @ReactProp(name="marks")
    public void marks(PicEditView picEditView,ReadableArray marks){
        try
        {
            String[] icons= new String[marks.size()];
            for (int i=0;i<marks.size();i++){
                icons[i]=marks.getString(i);
                Log.v("dyh","设置marks:"+icons[i]);
            }

            picEditView.setMarks(icons);
        }catch (Exception E){
            E.printStackTrace();
            WritableMap map=Arguments.createMap();
            map.putString("result","marks error");
            picEditView.getMyEventEmitter().receiveEvent(MyEventEmitter.EVENT_ERROR,null);
        }

    }
}
