package com.fiuu.xdk.reactnative;

import org.json.JSONObject;

import java.util.Locale;

/**
 * Validates the explicit payment mode sent from JavaScript.
 */
final class PaymentModeHandler {

    static final String FIELD = "mp_payment_mode";
    static final String MODE_STANDARD = "standard";
    static final String MODE_GOOGLE_PAY = "google_pay";

    private PaymentModeHandler() {
    }

    static String validate(JSONObject obj) {
        String mode = normalize(obj.optString(FIELD, ""));
        if (mode.isEmpty()) {
            return "Missing or invalid payment mode: mp_payment_mode must be \"standard\" or \"google_pay\".";
        }
        if (!MODE_STANDARD.equals(mode) && !MODE_GOOGLE_PAY.equals(mode)) {
            return "Unsupported payment mode \"" + mode + "\". Use \"standard\" or \"google_pay\".";
        }
        return null;
    }

    static String normalize(String mode) {
        return mode == null ? "" : mode.trim().toLowerCase(Locale.ROOT);
    }

    static boolean isGooglePay(String mode) {
        return MODE_GOOGLE_PAY.equals(normalize(mode));
    }
}
