package com.puntoz.pro;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.WindowManager;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

    WebView webView;
    String BASE = "http://216.152.155.250/PUNTOZ_PANEL/";
    String PANEL_URL = BASE + "preview.php?apk_tv=1";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        webView = new WebView(this);
        setContentView(webView);

        webView.setFocusable(true);
        webView.setFocusableInTouchMode(true);
        webView.requestFocus();

        WebSettings s = webView.getSettings();
        s.setJavaScriptEnabled(true);
        s.setDomStorageEnabled(true);
        s.setMediaPlaybackRequiresUserGesture(false);
        s.setLoadWithOverviewMode(false);
        s.setUseWideViewPort(false);
        s.setTextZoom(100);
        s.setSupportZoom(false);
        s.setBuiltInZoomControls(false);
        s.setDisplayZoomControls(false);
        s.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

        webView.setInitialScale(100);
        webView.setVerticalScrollBarEnabled(false);
        webView.setHorizontalScrollBarEnabled(false);

        webView.setWebChromeClient(new WebChromeClient());
        webView.addJavascriptInterface(new AndroidBridge(), "PuntozAndroid");

        webView.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return manejarUrl(url);
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                return manejarUrl(request.getUrl().toString());
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                inyectarBotonesTV();
            }
        });

        webView.loadUrl(PANEL_URL);
    }

    private boolean manejarUrl(String url) {
        if (url == null) return false;

        if (url.contains(".m3u8") || url.contains(".mp4") || url.contains(".mkv") || url.contains("stream")) {
            Intent i = new Intent(MainActivity.this, PlayerActivity.class);
            i.putExtra("url", url);
            startActivity(i);
            return true;
        }

        if (url.endsWith("/tv.php") || url.endsWith("tv.php")) {
            webView.loadUrl(BASE + "tv.php?apk_tv=1");
            return true;
        }

        if (url.contains("tv.php") && !url.contains("apk_tv=1")) {
            webView.loadUrl(BASE + "tv.php?apk_tv=1");
            return true;
        }

        return false;
    }

    public class AndroidBridge {
        @JavascriptInterface
        public void abrirTV() {
            runOnUiThread(() -> webView.loadUrl(BASE + "tv.php?apk_tv=1"));
        }

        @JavascriptInterface
        public void openPlayer(String url) {
            if (url == null || url.trim().isEmpty()) return;
            Intent i = new Intent(MainActivity.this, PlayerActivity.class);
            i.putExtra("url", url);
            startActivity(i);
        }
    }

    private void inyectarBotonesTV() {
        String js =
            "javascript:(function(){"
            + "document.body.style.margin='0';"
            + "document.body.style.padding='0';"
            + "document.body.style.overflow='hidden';"
            + "var all=document.querySelectorAll('div,a,button');"
            + "for(var i=0;i<all.length;i++){"
            + "var t=(all[i].innerText||all[i].textContent||'').toLowerCase();"
            + "if(t.indexOf('tv en vivo')>=0){"
            + "all[i].setAttribute('tabindex','0');"
            + "all[i].onclick=function(e){e.preventDefault();PuntozAndroid.abrirTV();return false;};"
            + "}"
            + "}"
            + "})();";
        webView.evaluateJavascript(js, null);
    }

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            int k = event.getKeyCode();

            if (k == KeyEvent.KEYCODE_DPAD_CENTER || k == KeyEvent.KEYCODE_ENTER) {
                webView.evaluateJavascript(
                    "(function(){var e=document.activeElement;if(e){e.click();}})();",
                    null
                );
                return true;
            }
        }

        return super.dispatchKeyEvent(event);
    }

    @Override
    public void onBackPressed() {
        if (webView != null && webView.canGoBack()) {
            webView.goBack();
        } else {
            super.onBackPressed();
        }
    }
}
