package com.yf.scan;

import android.app.Activity;
import android.content.Intent;

import com.facebook.react.bridge.ActivityEventListener;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.WritableMap;
import com.yf.scan.scanner.CaptureActivity;
import com.yf.scan.scanner.OnQRCodeResultListener;


public class ScannerImpl implements ActivityEventListener, Scanner {

    static final int RC_SCAN = 60081;

    static final String CODE_ERROR_SCAN = "扫描失败";

    private Promise scanPromise;

    private Activity activity;

    private class QRCodeListenerImpl implements OnQRCodeResultListener {

        @Override
        public void onCodeResult(String code) {
            if (null != scanPromise) {
                WritableMap map = Arguments.createMap();
                map.putString("code", code);
                scanPromise.resolve(map);
            }
        }
    }

    private QRCodeListenerImpl qrCodeListener = new QRCodeListenerImpl();

    public static ScannerImpl of(Activity activity) {
        return new ScannerImpl(activity);
    }

    private ScannerImpl(Activity activity) {
        this.activity = activity;
    }

    public void updateActivity(Activity activity) {
        this.activity = activity;
    }

    @Override
    public void scan(Promise promise) {
        this.scanPromise = promise;
        Intent it = new Intent(activity, CaptureActivity.class);
       // it.putExtra(Config.QR_CODE_LISTENER, qrCodeListener);
        activity.startActivityForResult(it, RC_SCAN);
    }

    @Override
    public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
        if(requestCode == RC_SCAN){
            if (resultCode == Activity.RESULT_OK && data != null) {
                WritableMap map = Arguments.createMap();
                map.putString("barCode", data.getExtras().getString("result"));
                scanPromise.resolve(map);

            } else {
                scanPromise.reject(CODE_ERROR_SCAN,"没有获取到结果");
            }
        }
    }

    @Override
    public void onNewIntent(Intent intent) {}
}
