package com.imagepicker.testing;

import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.JavaOnlyMap;

/**
 * Created by rusfearuth on 10.04.17.
 */

public class SampleCallback implements Callback
{
    private boolean hasError;
    private boolean didCancel;

    @Override
    public void invoke(Object... args)
    {
        System.out.println(args.length);
        System.out.println(String.valueOf(args[0]));
        System.out.println(args[0].getClass());
        for (int i = 0; i < args.length; i++) {
            if (lookingForError(args[i])) {
                break;
            }
        }
        for (int i = 0; i < args.length; i++) {
            if (lookingForCancelation(args[i])) {
                break;
            }
        }
    }

    public boolean hasError()
    {
        return hasError;
    }

    public boolean didCancel()
    {
        return didCancel;
    }

    private boolean lookingForError(Object arg)
    {
        hasError = false;
        if (arg == null)
        {
            return hasError;
        }

        if (arg instanceof String)
        {
            hasError = arg.equals("error") || ((String) arg).contains("error");
        }
        else if (arg instanceof JavaOnlyMap)
        {
            hasError = ((JavaOnlyMap) arg).hasKey("error");
        }
        return hasError;
    }

    private boolean lookingForCancelation(Object arg)
    {
        didCancel = false;
        if (arg == null)
        {
            return didCancel;
        }

        if (arg instanceof String)
        {
            didCancel = arg.equals("didCancel") || ((String) arg).contains("didCancel");
        }
        else if (arg instanceof JavaOnlyMap)
        {
            didCancel = ((JavaOnlyMap) arg).hasKey("didCancel");
        }
        return didCancel;
    }
}
