package com.secureline.support;

import android.app.Activity;
import android.os.Bundle;
import android.os.ServiceManager;
import com.android.secureline.ISecureLineManager;
import android.widget.TextView;
import android.widget.Button;
import android.content.Intent;
import android.net.Uri;
import android.content.ClipboardManager;
import android.content.ClipData;
import android.content.Context;
import android.widget.ImageView;
import android.widget.Toast;
import com.secureline.support.R;

public class MainActivity extends Activity {

    private ISecureLineManager mService;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        connectService();
        loadInfo();
        setupSupportButtons();
	setupCopyButton();
    }

    private void connectService() {

        try {

            mService = ISecureLineManager.Stub.asInterface(
                    ServiceManager.getService("secureline")
            );

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void loadInfo() {

        try {

            TextView supportId = findViewById(R.id.support_id);
            TextView licenseStatus = findViewById(R.id.license_status);
            TextView licensePlan = findViewById(R.id.license_plan);
            TextView licenseDaysLeft = findViewById(R.id.license_days_left);

            if (mService == null) {

		supportId.setText(getString(R.string.unavailable));

		licenseStatus.setText(getString(R.string.unknown));

		licensePlan.setText(getString(R.string.unknown));

                licenseDaysLeft.setText("--");

                return;
            }

            String supportIdValue = mService.getSupportId();
            supportId.setText(supportIdValue == null || supportIdValue.isEmpty()
                    ? getString(R.string.unavailable)
                    : supportIdValue);

            boolean active = mService.isLicenseActive();

	    licenseStatus.setText(
	            active
	                    ? getString(R.string.active)
	                    : getString(R.string.expired)
	    );

	    if (active) {

	        licenseStatus.setTextColor(
	                getColor(R.color.sl_color_text_primary)
	        );

	    } else {

	        licenseStatus.setTextColor(
	                getColor(R.color.sl_color_danger_soft)
	        );

	    }

            String plan = mService.getLicensePlan();
            licensePlan.setText(plan == null || plan.isEmpty()
                    ? getString(R.string.unknown)
                    : plan);

            int days = mService.getLicenseDaysLeft();

            if (days < 0) {

                licenseDaysLeft.setText("--");

            } else {

		licenseDaysLeft.setText(
                    getString(days == 1 ? R.string.day_singular : R.string.days_format, days)
                );

            }

        } catch (Exception e) {

            e.printStackTrace();

        }
    }

    private void setupCopyButton() {

        ImageView copyBtn =
                findViewById(R.id.copy_support_id);

        TextView supportId =
                findViewById(R.id.support_id);

        if(copyBtn == null || supportId == null)
            return;

        copyBtn.setOnClickListener(v -> {

            String text =
                    supportId.getText().toString();

            ClipboardManager cm =
                    (ClipboardManager)getSystemService(
                            Context.CLIPBOARD_SERVICE
                    );

            cm.setPrimaryClip(
                    ClipData.newPlainText(
                            "support_id",
                            text
                    )
            );

            Toast.makeText(
                    this,
		    getString(R.string.support_id_copied),
                    Toast.LENGTH_SHORT
            ).show();

        });
    }

    private void setupSupportButtons() {

        Button telegram = findViewById(R.id.contact_telegram);
        Button signal = findViewById(R.id.contact_signal);

        if (telegram != null) {

            telegram.setOnClickListener(v -> {

                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(Uri.parse("https://t.me/lemenzoos"));
                startActivity(i);

            });
        }

        if (signal != null) {

            signal.setOnClickListener(v -> {

                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(Uri.parse("https://signal.me/#eu/lemenzoos.1213"));
                startActivity(i);

            });
        }
    }
}
