package com.reactnative.ivpusic.imagepicker.dialog;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;

import com.reactnative.ivpusic.imagepicker.BuildConfig;
import com.reactnative.ivpusic.imagepicker.R;


public class PrivacyTipDialog extends Dialog {
    public static final String PRIVACY_TYPE = "privacy_type";
    public static final String PRIVACY_CAMERA = "privacy_camera";
    public static final String PRIVACY_ALBUM = "privacy_album";

    private ImageView ivIcon;
    private TextView tvTitle;
    private TextView tvContent;
    private String currentType = "";
    private Context context;

    public PrivacyTipDialog(@NonNull Context context) {
        super(context, R.style.PublicPrivacyTipDialog);
        this.context = context;
    }

    public void setPrivacyType(String type) {
        currentType = type;
        updatePrivacyUi();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.public_dialog_privacy_tip);
        getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);

        ivIcon = findViewById(R.id.iv_privacy_icon);
        tvTitle = findViewById(R.id.tv_privacy_title);
        tvContent = findViewById(R.id.tv_privacy_content);
    }

    private void updatePrivacyUi() {
        if (currentType == null || currentType.length() == 0) {
            return;
        }
        String appName = BuildConfig.APP_NAME;
        if (appName == null || appName.length() == 0) {
            appName = "该App";
        }
        if (currentType.equals(PRIVACY_CAMERA)) {
            updateImageViewUi(ivIcon, true);
            updateTextViewTitleUi(tvTitle, true, appName);
            updateTextViewContentUi(tvContent, true, appName);
        } else {
            updateImageViewUi(ivIcon, false);
            updateTextViewTitleUi(tvTitle, false, appName);
            updateTextViewContentUi(tvContent, false, appName);
        }
    }

    private void updateImageViewUi(ImageView imageView, boolean isCamera) {
        if (imageView != null) {
            imageView.setImageResource(isCamera ? R.drawable.icon_privacy_tip_camera : R.drawable.icon_privacy_tip_album);
        }
    }

    private void updateTextViewTitleUi(TextView textView, boolean isCamera, String appName) {
        if (textView != null && context != null) {
            try {
                String appNameDelimiter = context.getString(R.string.public_privacy_dialog_app_name_delimiter);
                int title = isCamera ? R.string.public_privacy_dialog_camera_title : R.string.public_privacy_dialog_album_title;
                String replace = context.getString(title).replace(appNameDelimiter, appName);
                textView.setText(replace);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private void updateTextViewContentUi(TextView textView, boolean isCamera, String appName) {
        if (textView != null && context != null) {
            try {
                String appNameDelimiter = context.getString(R.string.public_privacy_dialog_app_name_delimiter);
                int title = isCamera ? R.string.public_privacy_dialog_camera_content : R.string.public_privacy_dialog_album_content;
                String replace = context.getString(title).replace(appNameDelimiter, appName);
                textView.setText(replace);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void dismiss() {
        super.dismiss();
        currentType = null;
        ivIcon = null;
        tvTitle = null;
        tvContent = null;
    }
}
