package com.dittomart.meatsbhavan.web.webViewClient;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.dittomart.meatsbhavan.util.Constant;
import com.dittomart.meatsbhavan.util.SharePref;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;

public class MyWebViewClient extends WebViewClient {

    private static final String TAG = MyWebViewClient.class.getSimpleName();
    private Context context;

    public MyWebViewClient(Context context) {
        this.context = context;
        SharePref sharePref = new SharePref(context);
    }


    @Override
    public void onPageFinished(WebView view, String url) {
        getLocalStorageAndSaveOnAndroidPref("storeName", view);
        getLocalStorageAndSaveOnAndroidPref("razorpayKeyId", view);
        getLocalStorageAndSaveOnAndroidPref("currencyId", view);
    }

    private void getLocalStorageAndSaveOnAndroidPref(String key, WebView view) {
        String JAVASCRIPT_LOCAL_STORAGE_LOOKUP = "javascript:window";
        view.evaluateJavascript(JAVASCRIPT_LOCAL_STORAGE_LOOKUP.concat(".localStorage.getItem('" + key + "')"), value -> SharePref.setDataPref(key, value));
    }


    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.d(TAG, "shouldOverrideUrlLoading: "+url);
        String intentDomains = SharePref.getDataFromPref(Constant.INTENT_DOMAINS);
        Log.d(TAG, "shouldOverrideUrlLoading: "+intentDomains);
        
        try {
            JsonArray elemArr = new JsonParser().parse(intentDomains).getAsJsonArray();
            boolean enteredIntent = false;
            for (int i = 0; i < elemArr.size(); i++) {
                String value = elemArr.get(i).getAsString();
                if (url.contains(value)) {
                    if(!enteredIntent){
                        enteredIntent = true;
                        Uri uri = Uri.parse(url);
                        Intent sendIntent = new Intent(Intent.ACTION_VIEW, uri);
                        context.startActivity(sendIntent);
                        break;
                    }
                }
            }
            if(enteredIntent){
                return true;
            }
        } catch (Exception e) {
            Log.e(TAG, "Error parsing intent domains JSON: " + e.getMessage());
        }
        
        return super.shouldOverrideUrlLoading(view,url);
    }
}
