package com.cmcewen.blurview;

import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;

import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.views.image.ReactImageView;

import android.util.Log;
//import com.fivehundredpx.android.blur.BlurringView;

import jp.wasabeef.blurry.Blurry;

public class BlurViewManager extends SimpleViewManager<View> {
    public static final String REACT_CLASS = "BlurView";
    public android.content.Context contextTest;
    public int viewRef = 0;
    public int blurValue = 25;
    public int samplingValue = 1;
    public static final int defaultRadius = 25;
    public static final int defaultSampling = 1;

    @Override
    public String getName() {
        return REACT_CLASS;
    }

    @Override
    public View createViewInstance(ThemedReactContext context) {
        View blurry = new View(context);
        this.contextTest = context;
        return blurry;
    }

    private void refreshViewBlur(View view) {
        ViewGroup viewGroup = (ViewGroup) view.getRootView().findViewById(this.viewRef);
        if (viewGroup != null) {
            View v = viewGroup.getChildAt(0);
            Blurry.with(this.contextTest).radius(this.blurValue).sampling(this.samplingValue).capture(v).into((ReactImageView)v);
        }
    }

    @ReactProp(name = "blurRadius", defaultInt = defaultRadius)
    public void setRadius(View view, int radius) {
        this.blurValue = radius;
        this.refreshViewBlur(view);
    }

    @ReactProp(name = "downsampleFactor", defaultInt = defaultSampling)
    public void setDownsampleFactor(View view, int factor) {
        this.samplingValue = factor;
        this.refreshViewBlur(view);
    }

    @ReactProp(name = "viewRef")
    public void setViewRef(View view, int viewRef) {
        ViewGroup viewGroup = (ViewGroup) view.getRootView().findViewById(viewRef);
        if (viewGroup != null) {
            this.viewRef = viewRef;
            this.refreshViewBlur(view);
        }
    }
}
