package fr.bamlab.rncameraroll;

import android.content.Context;
import android.graphics.Camera;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableArray;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.WritableNativeArray;
import com.facebook.react.bridge.WritableNativeMap;

/**
 * Created by almouro on 11/12/15.
 */
class CameraRollModule extends ReactContextBaseJavaModule {
    private Context context;

    public CameraRollModule(ReactApplicationContext reactContext) {
        super(reactContext);
        this.context = reactContext;
    }

    /**
     * @return the name of this module. This will be the name used to {@code require()} this module
     * from javascript.
     */
    @Override
    public String getName() {
        return "CameraRollAndroid";
    }

    @ReactMethod
    public void getCameraImages(ReadableMap data, Callback onSuccess) {
        WritableNativeArray result = new WritableNativeArray();

        for(CameraImage imageData : CameraImagesManager.getCameraImages(this.context,
                data.getInt("first"), data.hasKey("after") ? data.getString("after") : "")) {
            WritableMap imageDataMap = new WritableNativeMap();
            imageDataMap.putString("uri", imageData.getLocalPath());
            imageDataMap.putInt("width", imageData.getWidth());
            imageDataMap.putInt("height", imageData.getHeight());
            imageDataMap.putInt("orientation", imageData.getOrientation());
            imageDataMap.putString("timestamp", Long.toString(imageData.getTimestamp()));

            result.pushMap(imageDataMap);
        }

        onSuccess.invoke(result);
    }
}