aaaa

mail@pastecode.io avatarunknown
plain_text
25 days ago
44 kB
3
Indexable
Never
/*
 * Copyright (c) 2018 SANTANDER BRASIL, All Rights Reserved.
 */

package com.santander.app.homelogada.presentation;

/**
 * Created by Santander on 01/01/18.
 */


import static com.santander.app.homelogada.presentation.IdSantanderCallerKt.KEY_BLOCKED_ID_FLAG;
import static com.santander.app.homelogada.presentation.IdSantanderCallerKt.PREFS_BLOCKED_ID_SNT;
import static com.santander.app.homelogada.presentation.IdSantanderCallerKt.getDocumentKey;

import android.app.Dialog;
import android.content.Intent;
import android.content.IntentSender;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;

import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.fragment.app.Fragment;


import com.google.android.play.core.appupdate.AppUpdateInfo;
import com.google.android.play.core.appupdate.AppUpdateManager;
import com.google.android.play.core.appupdate.AppUpdateManagerFactory;
import com.google.android.play.core.install.model.AppUpdateType;
import com.google.android.play.core.install.model.UpdateAvailability;
import com.google.android.play.core.review.ReviewInfo;
import com.google.android.play.core.review.ReviewManager;
import com.google.android.play.core.review.ReviewManagerFactory;
import com.google.android.play.core.tasks.OnCompleteListener;
import com.google.android.play.core.tasks.OnFailureListener;
import com.google.android.play.core.tasks.Task;
import com.google.firebase.crashlytics.FirebaseCrashlytics;
import com.santander.app.MinhaConta;
import com.santander.app.R;
import com.santander.app.acessocanal.task.FutureCallBackTask;
import com.santander.app.analytics.AnalyticsTags;
import com.santander.app.analytics.PerformanceTraces;
import com.santander.app.analytics.firebase.Tags;
import com.santander.app.authentication.SantanderIdEnablingData;
import com.santander.app.avaliacaostore.presentation.AvaliacaoDialog;
import com.santander.app.avaliacaostore.presentation.contract.IAvaliarAppView;
import com.santander.app.avaliacaostore.presenter.AvaliacaoAppPresenter;
import com.santander.app.biometric.facial.register.RegisterFacialBiometricsApplicationStarter;
import com.santander.app.cartoes.parcelamentofatura.ParcelamentoFaturasApplicationStarter;
import com.santander.app.chat.Chat;
import com.santander.app.chat.ChatApplication;
import com.santander.app.chat.controller.ChatController;
import com.santander.app.components.view.SessionControlledActivity;
import com.santander.app.components.view.avisofinalano.AvisoFinalAnoActivity;
import com.santander.app.components.view.cardLayout.CardLayout;
import com.santander.app.contacorrente.domain.Conta;
import com.santander.app.crm.CrmShared;
import com.santander.app.crm.PageEnum;
import com.santander.app.datacontroller.ControllerResolver;
import com.santander.app.datacontroller.DataController;
import com.santander.app.dataservice.BannerService;
import com.santander.app.deeplink.DeepLinkType;
import com.santander.app.deeplink.MainDeepLinkRedirect;
import com.santander.app.ecommerce.view.ECommerceDialog;
import com.santander.app.ecommerce.view.ECommerceDialogImpl;
import com.santander.app.homelogada.interactor.MenuInteractor;
import com.santander.app.homelogada.interactor.MenuInteractorImpl;
import com.santander.app.homelogada.novahome.presentation.HomeLoggedFragment;
import com.santander.app.homelogada.presenter.HomeLogadaPresenter;
import com.santander.app.homelogada.presenter.HomeLogadaPresenterImpl;
import com.santander.app.idsantander.IdSantanderTipoConversaoEnum;
import com.santander.app.idsantander.habilitacaoIdRemoto.features.offer.presentation.IdSantanderRemoteOfferActivity;
import com.santander.app.idsantander.habilitargeolocalizacao.dialog.HabilitarIDGeoLocalizacao;
import com.santander.app.idsantander.presentation.IdSantanderHabilitacaoActivity;
import com.santander.app.idsantander.presentation.IdSantanderHabilitacaoSMSOfertaActivity;
import com.santander.app.idsantander.presentation.IdSantanderOfertaActivity;
import com.santander.app.idsantander.presentation.IdSantanderOtimizacaoActivity;
import com.santander.app.meugerente.MeuGerenteApplicationStarter;
import com.santander.app.meuperfil.presentation.EscolhaContaPreferencialActivity;
import com.santander.app.newmenu.utils.DefaultDialogUtils;
import com.santander.app.news.NewsActivity;
import com.santander.app.pagamentos.titulos.presentation.PagamentosCodigoBarrasActivity;
import com.santander.app.personaldataprotection.LgpdApplicationStarter;
import com.santander.app.propostasemaberto.presentation.PropostasEmAbertoActivity;
import com.santander.app.santanderon.controller.SantanderOnController;
import com.santander.app.santanderwebviewbridge.common.WebViewBridgeConstants;
import com.santander.app.santanderwebviewbridge.features.creditcardinvoicepayment.CreditCardInvoicePaymentApplicationStarter;
import com.santander.app.sessionmanagement.domain.ISession;
import com.santander.app.sessionmanagement.domain.Session;
import com.santander.app.util.AvaliarHelperKt;
import com.santander.app.util.DialogUtil;
import com.santander.app.util.ImageUtil;
import com.santander.app.util.NaoManterAtividadesHelperKt;
import com.santander.app.util.NaoManterProperties;
import com.santander.app.util.ReloadHomeServicesUtil;
import com.santander.app.util.SecurityUtil;
import com.santander.app.util.accessibility.AccessibilityUtil;
import com.santander.app.util.dynamicauth.DynamicAuthApp;
import com.santander.app.util.dynamicauth.DynamicAuthenticationService;
import com.santander.app.util.encryptation.KeyStoreHelper;
import com.santander.app.util.security.DeviceProfiler;
import com.santander.app.util.toolbar.ToolBarHandler;
import com.santander.app.validation.TipoUsuarioConsultivoEnum;
import com.santander.app.validation.presentation.IdSantanderUsuarioConsultivoActivity;
import com.santander.app.welcome.WelcomeLibApplicationStarter;
import com.santander.interact.repository.model.offer.InteractionPoint;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;

import app.santander.com.module.SantanderLogger;
import br.com.santander.analytics.SantanderAnalytics;
import br.com.santander.chatbot.elegibilidade.core.Constants;
import br.com.santander.commons.utils.firebase.FirebaseService;
import br.com.santander.crmlib.lightbox.LightboxAd;
import br.com.santander.modulo.mbbcoredomain.domain.UserProfile;
import br.com.santander.modulo.welcomesantander.WelcomeApplication;
import br.com.santander.modulo.welcomesantander.commons.WelcomeIDSantanderCallback;
import br.com.santander.modulo.welcomesantander.feature.task.domain.TaskCash;
import br.com.santander.modulo.welcomesantander.service.WelcomeService;
import br.com.santander.preferences.Preferences;
import br.com.santander.semaphore.SemaphoreApplication;
import br.com.santander.semaphore.domain.SemaphoreCode;
import br.com.santander.semaphore.interfaces.ISemaphoreCache;
import br.com.santander.syncstorage.domain.Property;
import br.com.santander.syncstorage.service.StorageService;
import br.com.santander.ui.dialog.view.SantanderDialog;
import br.com.santander.ui.iconBadge.SantanderIconWithBadge;

@SuppressWarnings("all")
public class HomeLogadaActivity extends SessionControlledActivity implements HomeLogadaView,
        IAvaliarAppView, ChatApplication.ChatComponentCallback {

    private ISession iSession = Session.getInstance();

    private HomeLogadaActivity mActivity;

    private HomeLogadaPresenter homeLogadaPresenter;
    private AvaliacaoAppPresenter avaliacaoAppPresenter;

    private CardLayout cardlayoutCrm;
    private CrmShared crmShared;

    private MenuItem chatAction;
    private MenuInteractor menuInteractor;

    private SantanderIconWithBadge notificationIcon;
    private SantanderIconWithBadge attendanceIcon;
    private Conta conta = new Conta();

    private AvaliacaoDialog avaliacaoDialog;
    private Dialog loadingDialog;

    private boolean mostrarNotificacao;
    private MeuGerenteApplicationStarter meuGerenteStarter;
    private ChatController chatController;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home_logada_activity);

        try {
            if (!Session.getInstance().isInitedByLauncher() || Session.getInstance().getTokenSession() == null) {
                showEmptyHomeError();
            } else {
                mActivity = this;
                SantanderLogger.w("LOGIN_PERFORMANCE_SENHA", "onCreate()");

                DeviceProfiler.shareRsaKey(getApplicationContext()); //runs async :)

                SantanderLogger.w("TEST_LOGIN", "HomeLogadaPresenterImpl - END");

                if (Session.getInstance().getUser().getValidacaoTransacional() == null) {
                    SantanderAnalytics.getInstance().getMetricsAnalyticsInstance().logTextMetric(
                            AnalyticsTags.OUTROS.OUTROS_DADOS_SESSAO_TRATAMENTO_EXCECAO, "Acao transacional invalida");
                    exitAppProperly(true, getBaseContext().getResources().getString(R.string.dialog_erro_reopen_app));
                } else if (Session.getInstance().getUser().getAutenticarUsuario() == null) {
                    SantanderAnalytics.getInstance().getMetricsAnalyticsInstance().logTextMetric(
                            AnalyticsTags.OUTROS.OUTROS_DADOS_SESSAO_TRATAMENTO_EXCECAO, "Sessao AutenticarUsuario nulo");
                } else {
                    init();
                    SantanderAnalytics.getInstance().getFirebaseInstance().pushScreenview(this, Tags.ScreenView.HOME_LOGADA);
                    verifyDeepLink();

                    SantanderAnalytics.getInstance().getFirebaseInstance().setUserProperty(Tags.Property.PRIMARY_SEGMENT,
                            Session.getInstance().getUser().getAutenticarUsuario().getSegmentoPrimario());
                    SantanderAnalytics.getInstance().getFirebaseInstance().setUserProperty(Tags.Property.SECONDARY_SEGMENT,
                            Session.getInstance().getUser().getAutenticarUsuario().getSegmentoSecundario());

                    if (Session.getInstance().getUser().getUserProfile() == UserProfile.SAVINGS_ACCOUNT) {
                        SantanderAnalytics.getInstance().getFirebaseInstance().setUserProperty(
                                Tags.Property.DIMENSION36,
                                Tags.Property.SAVINGS_ACCOUNT);
                    } else {
                        SantanderAnalytics.getInstance().getFirebaseInstance().setUserProperty(
                                Tags.Property.DIMENSION36,
                                Tags.Property.CURRENT_ACCOUNT);
                    }
                }
                if (!Session.getInstance().isChatInitialized()) {
                    initChat();
                }

                MinhaConta.getInstance().getSDDInstance().clearMotionEvents();
            }
        } catch (Exception e) {
            FirebaseCrashlytics.getInstance().recordException(e);
            finish();
//            android.os.Process.killProcess(android.os.Process.myPid());
//            System.exit(0);
        }

        //fixToolbarOverlappingFragment();
    }

    //TODO remover codigo na versão 12.4, já será possivel obeservar o comportamento em varios dispositivos.
    private void fixToolbarOverlappingFragment() {
        // It broke after migration to AndroidX
        if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
            FrameLayout fragmentContainer = findViewById(R.id.home_logada_fragment_container);

            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.MATCH_PARENT
            );

            int defaultMarginPx = 0;
            float actionbarSizeDp = 40f;

            int actionbarSizePx = (int) TypedValue.applyDimension(
                    TypedValue.COMPLEX_UNIT_DIP,
                    actionbarSizeDp,
                    getResources().getDisplayMetrics()
            );

            params.setMargins(defaultMarginPx, actionbarSizePx, defaultMarginPx, defaultMarginPx);

            fragmentContainer.setLayoutParams(params);
        }
    }

    private HomeLogadaPresenter getHomeLogadaPresenter() {
        if (!isDestroyed() && homeLogadaPresenter == null) {
            homeLogadaPresenter = new HomeLogadaPresenterImpl(this, HomeLogadaActivity.this);
        }
        return homeLogadaPresenter;
    }

    private AvaliacaoAppPresenter getAvaliacaoAppPresenter() {
        if (avaliacaoAppPresenter == null) {
            avaliacaoAppPresenter = new AvaliacaoAppPresenter(this);
        }
        return avaliacaoAppPresenter;
    }

    private void verifyDeepLink() {
        SantanderLogger.w("TEST_LOGIN", "verifyDeepLink - START");
        if (SemaphoreApplication.getInstance().getSemaphoreCache().isOn(SemaphoreCode.MBB_NPS)) {
            getHomeLogadaPresenter().verifyDeepLinkNPS();
        }
        getHomeLogadaPresenter().verifyDeepLink();
        SantanderLogger.w("TEST_LOGIN", "verifyDeepLink - END");
    }

    public static void exitAppProperly() {
        DialogUtil.showExitDialog(MinhaConta.getAppContext().getString(R.string.default_error), true);
    }

    public static void exitAppProperly(boolean showHome, String erroMessage) {
        DialogUtil.showExitDialog(erroMessage, showHome);
    }

    public void redirectDeepLink(Uri uri) {
        MainDeepLinkRedirect.getInstance().redirect(this, uri);
    }

    @Override
    public void init() {

        initViews();

        initDynamicAuth();

        montarActionBar();

        getHomeLogadaPresenter().checkForBanners();

        aplicarSegmentoCartao();

        getHomeLogadaPresenter().checkOfferRegisterBiometricFacial();

        checkWelcomeNeedExecute();

//        menuAdicionarFoto();

        renovarSessao();

        homeLoaded();

        getHomeLogadaPresenter().iniciarPreferencias();

        getHomeLogadaPresenter().correcaoContaPreferencial();

        getHomeLogadaPresenter().notificacaoFimAno();

        getHomeLogadaPresenter().reloadDroppedCart();

        getHomeLogadaPresenter().checkForNews();

        getHomeLogadaPresenter().checkPropostas();

        getHomeLogadaPresenter().checkLGPDLogin();

        tagueamentoAndroidID();

        tagueamentoMenu();

        initFragment();
    }

    private void checkForAppUpdate() {
        AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(this);

        Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();

        appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    && appUpdateInfo.updatePriority() >= 4 /* high priority */
                    && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
                try {
                    appUpdateManager.startUpdateFlowForResult(
                            appUpdateInfo,
                            AppUpdateType.FLEXIBLE,
                            this,
                            100
                    );
                } catch (IntentSender.SendIntentException e) {
                    throw new RuntimeException(e);
                }
            }
        });
    }

    private void showEmptyHomeError() {
        montarActionBar();

        SantanderDialog.showSantanderDialog(
                this,
                new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        DialogUtil.logoutApp(HomeLogadaActivity.this.getApplicationContext());
                    }
                },
                null,
                null,
                getString(R.string.home_logada_erro_inicializacao),
                null,
                getString(R.string.ok
                )
        );
    }

    private void checkWelcomeNeedExecute() {
        ISemaphoreCache semaforoCache = SemaphoreApplication.getInstance().getSemaphoreCache();
        String cpf = "";
        try {
            cpf = Session.getInstance().getUser().getCpf().replace("\\D+", "");
        } catch (Exception e) {
            cpf = "";
            SantanderLogger.e(e);
        }
        startWelcomeApplicationCallback();
        WelcomeService welcomeService = new WelcomeService();
        TaskCash taskCash = welcomeService.getTaskCach(cpf);
        if (Session.getInstance().getUser().getWelcomeElegible()
                && semaforoCache.isOn(SemaphoreCode.MBB_BOAS_VINDAS)
        ) {
            if (taskCash.getShowWelcome()) {
                WelcomeApplication.Companion.getInstance().launchWelcome(this);
            } else if (taskCash.getShowWalkTrough()) {
                WelcomeApplication.Companion.getInstance().launchWalkTrough(this);
            }

        } else {
            idSantanderNeedExecute();
        }
    }

    private void startWelcomeApplicationCallback() {
        WelcomeLibApplicationStarter controller = new WelcomeLibApplicationStarter(this);
        controller.setWelcomeIDSantanderCallback(new WelcomeIDSantanderCallback() {
            @Override
            public void openIDSantander() {

                SantanderIdEnablingData santanderIdEnablingData = Session.getInstance().getSantanderIdEnablingData();
                if (santanderIdEnablingData != null && !showIdSantanderBlocked(santanderIdEnablingData)) {
                    if (!Session.getInstance().isSantanderIdEnabled()) {
                        IdSantanderCallerKt.callIdSantander(HomeLogadaActivity.this, santanderIdEnablingData);
                    }
                }
            }
        });
        controller.start();
    }

    private void idSantanderNeedExecute() {
        SantanderIdEnablingData santanderIdEnablingData = Session.getInstance().getSantanderIdEnablingData();
        if (santanderIdEnablingData != null && !showIdSantanderBlocked(santanderIdEnablingData)) {
            if (!Session.getInstance().isSantanderIdEnabled() && !Session.getInstance().isHomeLoaded()) {
                IdSantanderCallerKt.callIdSantander(this, santanderIdEnablingData);
            }
        }
    }

    private void initViews() {
        SantanderLogger.w("TEST_LOGIN", "bind view");

        cardlayoutCrm = findViewById(R.id.cardlayout_crm);
    }

    @Override
    public void startLGPDLogin() {
        LgpdApplicationStarter starterLgpd = new LgpdApplicationStarter();
        starterLgpd.launchLgpd(this, "Login");
    }

    private void tagueamentoHome(Boolean tagHomeLogada) {
        if ((tagHomeLogada) && (iSession.getUser().getUserProfile() == UserProfile.CURRENT_ACCOUNT)) {
            String card = Session.getInstance().getUser().getCartaoCache().existemCartoes() ? Tags.Label.HOME_OWN_CARD :
                    Tags.Label.HOME_NO_CARD;
            SantanderAnalytics.getInstance().getFirebaseInstance().setUserProperty(Tags.Property.HOME_CARD_STATUS, card);

            String loan = Session.getInstance().getUser().getEmprestimoCache().getEmprestimos().getValor() != null ? Tags.Label.HOME_OWN_LOAN :
                    Tags.Label.HOME_NO_LOAN;
            SantanderAnalytics.getInstance().getFirebaseInstance().setUserProperty(Tags.Property.HOME_CARD_STATUS, loan);

            String savings = Session.getInstance().getUser().getContaCache().existePoupanca() ? Tags.Label.HOME_OWN_SAVINGS :
                    Tags.Label.HOME_OWN_SAVINGS;
            SantanderAnalytics.getInstance().getFirebaseInstance().setUserProperty(Tags.Property.HOME_SAVINGS_STATUS, savings);

            String investiment = Session.getInstance().getUser().getInvestimentoCache().getInvestimentos().size() > 0 ? Tags.Label.HOME_OWN_INVESTIMENT :
                    Tags.Label.HOME_NO_INVESTIMENT;
            SantanderAnalytics.getInstance().getFirebaseInstance().setUserProperty(Tags.Property.HOME_INVESTIMET_STATUS, investiment);
        }
    }

    private void initFragment() {
        Boolean tagHomeLogada = getIntent().getBooleanExtra("tagHomeLogada", false);

        Fragment homeLoggedFragment = HomeLoggedFragment.newInstance();
        if (homeLoggedFragment.getArguments() == null) {
            Bundle bundle = new Bundle();
            bundle.putBoolean("tagHomeLogada", tagHomeLogada);
            homeLoggedFragment.setArguments(bundle);
        } else {
            homeLoggedFragment.getArguments().putBoolean("tagHomeLogada", tagHomeLogada);
        }

        replaceFragment(homeLoggedFragment);

        tagueamentoHome(tagHomeLogada);
    }

    protected void replaceFragment(@NonNull Fragment fragment) {
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.home_logada_fragment_container, fragment, HomeLoggedFragment.TAG)
                .commit();
    }

    @Override
    public void showInteractLightbox(LightboxAd lightboxView) {
        lightboxView.show(InteractionPoint.LIGHTBOX_HOME, this);
    }

    @Override
    public void initDynamicAuth() {
        SantanderLogger.w("TEST_LOGIN", "initDynamicAuth()");

        DynamicAuthApp.configSyncCallback();
        DynamicAuthenticationService.INSTANCE.init(this);
    }

    @Override
    public void initRegisterFacialBiometricsOffer() {
        if (!RegisterFacialBiometricsApplicationStarter.INSTANCE.getHasInitialized()) {
            RegisterFacialBiometricsApplicationStarter.INSTANCE.init(this);
        }
        RegisterFacialBiometricsApplicationStarter.INSTANCE.processorStatusEligibility(
                false,
                Session.getInstance().getFacialBiometricsRegisterStatus()
        );
    }

    private void tagueamentoAndroidID() {
        try {
            SantanderAnalytics.getInstance().getMetricsAnalyticsInstance().logTextMetric(
                    AnalyticsTags.IDSANTANDER.ID_SANTANDER_ANDROID_ID, "Android ID:   " + Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID));
        } catch (Exception e) {
            FirebaseCrashlytics.getInstance().recordException(e);
            SantanderAnalytics.getInstance().getMetricsAnalyticsInstance().logTextMetric(AnalyticsTags.IDSANTANDER.ID_SANTANDER_ANDROID_ID, "Unable to get Android ID");
        }
    }

    private void tagueamentoMenu() {
        String chatLabel = Tags.Label.CHAT_NO_NOTIFICATION;

        if (Session.getInstance().getUser().getNotificacoes() > 0) {
            chatLabel = Tags.Label.CHAT_WITH_NOTIFICATION;
        }

        FirebaseService.pushEvent(
                Tags.ScreenView.HOME_LOGADA,
                Tags.Category.HOME_LOGADA + Tags.Label.HOME_CHAT, Tags.Action.EXIBIU,
                chatLabel
        );

        if (SemaphoreApplication.getInstance().getSemaphoreCache().isOn(
                SemaphoreCode.MBB_ATENDIMENTO_VIA_HEADER)) {
            FirebaseService.pushEvent(
                    Tags.ScreenView.HOME_LOGADA,
                    Tags.Category.HOME_LOGADA + Tags.Label.HOME_CHAT, Tags.Action.EXIBIU,
                    Tags.Label.CENTRAL_DE_ATENDIMENTO
            );
        }
    }

    @Override
    public void showNews() {
        startActivity(new Intent(this, NewsActivity.class));
        overridePendingTransition(R.anim.push_up_in, R.anim.push_up_out);
    }

    @Override
    public void showPropostasEmAberto() {
        startActivity(new Intent(this, PropostasEmAbertoActivity.class));
        overridePendingTransition(R.anim.push_up_in, R.anim.push_up_out);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        verifyDeepLink();
    }

    private View.OnClickListener getSantanderOnBannerClicked() {
        return new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SantanderOnController.deepLinkRedirect(mActivity, DeepLinkType.SANTANDER_ON, "");
            }
        };
    }

    private void checkDontKeepActivitiesIsEnabled() {
        if (NaoManterAtividadesHelperKt.isFinishActivitiesOptionEnabled(this, false)) {
            NaoManterAtividadesHelperKt.showNaoManterDialog(this, getSupportFragmentManager(), new NaoManterProperties(true, true, true, false));
        }
    }

    private void storeShowDkaDialogStatus(boolean isChecked) {
        SharedPreferences mSharedPreferences = Preferences.get(getApplicationContext(), "dkaOption");
        SharedPreferences.Editor mEditor = mSharedPreferences.edit();
        mEditor.putBoolean("dkaStatus", isChecked);
        mEditor.apply();
    }

    private boolean getShowDkaDialogDStatus() {
        SharedPreferences mSharedPreferences = Preferences.get(getApplicationContext(), "dkaOption");
        return mSharedPreferences.getBoolean("dkaStatus", false);
    }

    @Override
    public void goToOnboardingFlow(boolean reoffer) {
        Intent intent = new Intent(this, IdSantanderHabilitacaoSMSOfertaActivity.class);
        intent.putExtra("onboarding", true);
        if (reoffer) intent.putExtra("reoffer", true);
        startActivity(intent);
    }

    @Override
    public void goToIdSantanderHabilitacaoSMS() {
        startActivity(new Intent(this, IdSantanderHabilitacaoSMSOfertaActivity.class));
    }

    @Override
    public void goToIdSantanderHabilitacaoATM(Boolean isGeo) {
        Intent intent = new Intent(this, IdSantanderHabilitacaoActivity.class);
        intent.putExtra("atm", true);
        intent.putExtra("geo", isGeo);
        startActivity(intent);
    }

    @Override
    public void goToIdSantanderHabilitacaoATM_QR() {
        Intent intent = new Intent(this, IdSantanderHabilitacaoActivity.class);
        intent.putExtra("atm-qr", true);
        startActivity(intent);
    }

    @Override
    public void goToEnableIdSantanderRemote(boolean isOnboarding) {
        Intent intent = new Intent(this, IdSantanderRemoteOfferActivity.class);
        intent.putExtra(IdSantanderRemoteOfferActivity.EXTRA_IS_ONBOARDING, isOnboarding);
        startActivity(intent);
    }

    @Override
    public void goToEscolharContaPreferencial() {
        startActivity(new Intent(this, EscolhaContaPreferencialActivity.class));
    }

    @Override
    public void goToIdSantanderCancelado() {

        Intent intent = new Intent(this, IdSantanderUsuarioConsultivoActivity.class);
        intent.putExtra("tipo", TipoUsuarioConsultivoEnum.ID_CANCELADO);
        startActivity(intent);
    }

    @Override
    public void goToIdSantanderSwipeObrigatoria() {
        startActivity(new Intent(this, IdSantanderOfertaActivity.class).putExtra("tipoConversao", IdSantanderTipoConversaoEnum.OBRIGATORIA));
    }

    @Override
    public void goToIdSantanderSwipe() {
        startActivity(new Intent(this, IdSantanderOfertaActivity.class).putExtra("tipoConversao", IdSantanderTipoConversaoEnum.OPCIONAL));
    }

    @Override
    public void checkFingerprintEnabling() {
        SantanderLogger.d("PAC", "Home - checkFingerprintEnabling");
        iSession.getUser().setPerfil("2");
        goToBloqueioADM();
    }

    @Override
    public void initFinalAnoAviso() {
        startActivity(new Intent(this, AvisoFinalAnoActivity.class));
    }

    @Override
    public void goToBloqueioADM() {
        Intent intent = new Intent(this, IdSantanderUsuarioConsultivoActivity.class);
        intent.putExtra("tipo", TipoUsuarioConsultivoEnum.BLOQUEIO_ADM);
        startActivity(intent);
    }

    @Override
    public void goToBloqueioCliente() {
        Intent intent = new Intent(this, IdSantanderUsuarioConsultivoActivity.class);
        intent.putExtra("tipo", TipoUsuarioConsultivoEnum.BLOQUEIO_CLIENTE);
        startActivity(intent);
    }

    @Override
    public void goToBloqueioTentativas() {
        Intent intent = new Intent(this, IdSantanderUsuarioConsultivoActivity.class);
        intent.putExtra("tipo", TipoUsuarioConsultivoEnum.BLOQUEIO_TENTATIVAS);
        startActivity(intent);
    }

    @Override
    public void goToErroInesperado() {
        Intent intent = new Intent(this, IdSantanderUsuarioConsultivoActivity.class);
        intent.putExtra("tipo", TipoUsuarioConsultivoEnum.ERRO_INESPERADO);
        startActivity(intent);
    }

    @Override
    public void goToOtimizacao() {
        startActivity(new Intent(this, IdSantanderOtimizacaoActivity.class));
    }

    @Override
    public void goToUsuarioConsultivo() {
        Intent intent = new Intent(this, IdSantanderUsuarioConsultivoActivity.class);
        intent.putExtra("tipo", TipoUsuarioConsultivoEnum.USUARIO_CONSULTIVO);
        startActivity(intent);
    }

    @Override
    protected void onResume() {
        super.onResume();

        PerformanceTraces.traceLoginDisplayHome.stop();

        // Checks for transaction done and show the google review dialog
        getAvaliacaoAppPresenter().verificarExibicao();

        HashMap<String, String> params = new HashMap<>();
        String service = AccessibilityUtil.getEnabledAccessibilityService(this);
        if (!service.equals("")) {
            params.put(Tags.Category.MODO_ACESSIBILIDADE, "true");
            params.put(Tags.Category.BIBLIOTECA_ACESSIBILIDADE, service);
        } else {
            params.put(Tags.Category.MODO_ACESSIBILIDADE, "false");
        }
        SantanderAnalytics.getInstance().getFirebaseInstance().pushScreenview(this, Tags.ScreenView.HOME_LOGADA, params);

        checkDontKeepActivitiesIsEnabled();
        DataController.getInstance().setActualActivity(this);

        SantanderLogger.w("TEST_LOGIN", "onResume");

        if (Session.getInstance().isChatEnable()) {
            showChatIcon(true);
        }

        getHomeLogadaPresenter().setActivityResumed(true);

        invalidateOptionsMenu();

        // Focus precisa estar sempre limpo, para não interferir nos scrolls
        if (getCurrentFocus() != null) {
            getCurrentFocus().clearFocus();
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        getHomeLogadaPresenter().setActivityResumed(false);
        DataController.getInstance().setActualActivity(null);
    }

    @Override
    public void montarActionBar() {
        SantanderLogger.w("TEST_LOGIN", "montarActionBar()");

        ActionBar actionBar = this.getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayShowHomeEnabled(false);
            actionBar.setDisplayShowTitleEnabled(false);
            actionBar.setElevation(0.0F);
            ToolBarHandler.INSTANCE.factoryToolBar(this, actionBar, null);
        }
    }

    private void aplicarSegmentoCartao() {
        SantanderLogger.w("TEST_LOGIN", "getSegmento()");

        MinhaConta.setUrlSegmentoCartao(SecurityUtil.getCreditCardSegment());
    }

    @Override
    public void menuAdicionarFoto() {
        SantanderLogger.w("TEST_LOGIN", "menuAdicionarFoto()");

        ToolBarHandler.INSTANCE.setPhoto(ImageUtil.getSavedImage(this, iSession.getUser().getCpf()), this);
    }

    @Override
    public void renovarSessao() {
        SantanderLogger.w("TEST_LOGIN", "renovarSessao()");
        iSession.setRenovarSessao(true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menuInteractor = new MenuInteractorImpl();
        menuInteractor.onCreateOptionsMenu(this, menu, getMenuInflater());
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        return menuInteractor.onOptionsItemSelected(this, item);
    }

    @Override
    public void onBackPressed() {
        DefaultDialogUtils.showExitAppDialog(HomeLogadaActivity.this);
        return;
    }

    @Override
    protected void onDestroy() {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy, HH:mm");
        SharedPreferences settings = Preferences.get(getApplicationContext(), "homeLogadaWidget");
        SharedPreferences.Editor editor = settings.edit();
        editor.putString("lastConecctionDate", sdf.format(date));
        editor.commit();

        super.onDestroy();
    }

    @Override
    public void homeLoaded() {
        SantanderLogger.w("TEST_LOGIN", "homeLoaded()");

        if (!iSession.isHomeLoaded()) {
            iSession.setHomeLoaded(true);

            SharedPreferences settings = Preferences.get(MinhaConta.getAppContext(), "SovereignBrasilProfile");
            SharedPreferences.Editor editor = settings.edit();
            editor.putString("idsantander_logou", KeyStoreHelper.encryptString("true"));
            editor.commit();

            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        final StorageService storageService = StorageService.getInstance(getApplicationContext());
                        storageService.addOrUpdateProperty(new Property("FIRST_LOGIN_" + Session.getInstance().getUser().getCpf(), "true"));

                        SantanderLogger.w("TEST_LOGIN", "homeLoaded()");
                    } catch (Exception e) {
                        FirebaseCrashlytics.getInstance().recordException(e);
                        SantanderAnalytics.getInstance().getMetricsAnalyticsInstance().logTextMetric("FIRST_LOGIN", "Exception" + e.getMessage());
                        SantanderLogger.e(e);
                        SantanderLogger.w("TEST_LOGIN", "homeLoaded() - Exception" + e.getMessage());
                    }
                }
            }).start();
        }
    }

    @Override
    public void dialogAvaliarShow() {
        if (SemaphoreApplication.getInstance().getSemaphoreCache().isOn(SemaphoreCode.MBB_IN_APP_REVIEW)) {
            boolean showAvaliarDialog = AvaliarHelperKt.shouldShowAvaliarDialog(this);
            if (showAvaliarDialog) {
                final ReviewManager reviewManager = ReviewManagerFactory.create(this);

                Task<ReviewInfo> request = reviewManager.requestReviewFlow();
                request.addOnCompleteListener(new OnCompleteListener<ReviewInfo>() {
                    @Override
                    public void onComplete(@NonNull Task<ReviewInfo> task) {
                        if (task.isSuccessful()) {
                            ReviewInfo reviewInfo = task.getResult();
                            Task<Void> flow = reviewManager.launchReviewFlow(HomeLogadaActivity.this, reviewInfo);
                            flow.addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    SantanderLogger.d("Caixa de diálogo de revisão do Google exibida");
                                }
                            });
                            flow.addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(Exception e) {
                                    SantanderLogger.d("Google App Review - ", e.getMessage());
                                }
                            });
                        } else {
                            SantanderLogger.d("Problema ao mostrar o Google na avaliação do aplicativo");
                        }
                    }
                });
            }
        }
    }

    @Override
    public void buscarBanner() {
        BannerService bannerService = ControllerResolver
                .getBannerService()
                .context(getApplicationContext());

        bannerService.requestNewBanner();
        SantanderLogger.w("TEST_LOGIN", "checkForBanners()");
    }

    @Override
    public void goToIdSantanderHabilitacaoGEO() {
        final Dialog d = new HabilitarIDGeoLocalizacao().create(this);

        d.findViewById(R.id.button_access)
                .setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        d.dismiss();
                        goToIdSantanderHabilitacaoATM(true);
                    }
                });
        d.show();
    }

    @Override
    public void showCampanha(String title, String body, String buttonLabel, String bitmapString, String deepLink, String approachId, String campaignId, String viewId) {
        ECommerceDialog eCommerceDialog = new ECommerceDialogImpl(this);
        eCommerceDialog.configure(title, body, buttonLabel, bitmapString, deepLink, approachId, campaignId, viewId);
        eCommerceDialog.show();
    }

    @Override
    public void mensagemErroTratado() {
        mensagemErroTratado(getString(R.string.erro_retorno_service));
    }

    @Override
    public void mensagemErroTratado(String mensagem) {
        DialogUtil.showDialogMessage(this, "Alerta", mensagem, false, "OK");
    }

    @Override
    public void initChat() {
        meuGerenteStarter = new MeuGerenteApplicationStarter(mActivity);

        final ChatApplication.ChatAction chatAction = new ChatApplication.ChatAction() {
            @Override
            public void onAction() {
                meuGerenteStarter.start();
            }
        };

        ChatApplication.getInstance().openChat(Constants.SERVICE_MANAGER, HomeLogadaActivity.this, HomeLogadaActivity.this, chatAction, null);
    }

    @Override
    public void showChatIcon(boolean show) {
        if (show) {
            chatIconVisible();
        } else {
            chatIconInvisible();
        }
    }

    //Para deixar o icone do chat visivel
    private void chatIconVisible() {
        SantanderLogger.d("Chat", "ELEGIVEL - DISPONIVEL | DESABILITADO | FORA DO HORARIO");
        if (chatAction != null) {
            chatAction.setVisible(true);
        }
    }

    //Para deixar o icone do chat oculto
    private void chatIconInvisible() {
        SantanderLogger.d("Chat", "NÃO ELEGIVEL - INDISPONIVEL");
        if (chatAction != null) {
            chatAction.setVisible(false);
        }
    }

    //Validação de permissão para visibilidade do botão de chat
    @Override
    public void isAbleToInitChat(boolean isAble) {
        Session.getInstance().setChatEnable(isAble);

        if (isAble) {
            chatIconVisible();
            getHomeLogadaPresenter().verifyDeepLinkChat();
        } else {
            chatIconInvisible();
        }

        ChatApplication.getInstance().chatElegible(isAble);
    }

    @Override
    public void goRedirectWay() {
        Bundle bundle = getIntent().getExtras();
        if (bundle != null) {
            boolean isWay = bundle.getBoolean("isway", false);
            if (isWay) {
                String action = bundle.getString("way_action", "");
                String numeroCartao = bundle.getString("NUMEROCARTAO");
                doRedirectWay(action, numeroCartao);
            }
        }
    }

    private void doRedirectWay(String action, String numeroCartao) {
        final String finalNumeroCartao = numeroCartao;
        switch (action) {
            case "pagarFatura":
                ReloadHomeServicesUtil reloadHome = new ReloadHomeServicesUtil();
                ReloadHomeServicesUtil.TipoReloadEnum[] tiposReload =
                        new ReloadHomeServicesUtil.TipoReloadEnum[]{ReloadHomeServicesUtil.TipoReloadEnum.RELOAD_BALANCE_AND_CARD};
                reloadHome.reloadDadosHome(tiposReload, new FutureCallBackTask() {
                    @Override
                    public void processFinish(Object output) {
                        chamarPagamentoFatura(finalNumeroCartao);
                    }
                });
                break;
            case "parcelarFatura":
                chamarParcelamentoFatura(numeroCartao);
                break;
            case "pagarTitulos":
                chamarPagamentoTitulosEContas();
                break;
        }
    }

    @Override
    public void atualizarNotificacoes() {
        invalidateOptionsMenu();
    }

    private boolean showIdSantanderBlocked(SantanderIdEnablingData enablingData) {
        String key = KEY_BLOCKED_ID_FLAG + "_" + getDocumentKey(this);

        if (enablingData.getAction().equals("INFORMAR_BLOQUEIO") && Preferences.get(this,
                PREFS_BLOCKED_ID_SNT).getBoolean(key, false)) {
            SecurityUtil.setUsuarioConsultivo();
            return true;
        } else {
            Preferences.get(this, PREFS_BLOCKED_ID_SNT).edit().putBoolean(key, false).apply();
            return false;
        }
    }

    private void chamarPagamentoFatura(String numeroCartao) {
        CreditCardInvoicePaymentApplicationStarter applicationStarter =
                new CreditCardInvoicePaymentApplicationStarter(this,
                        WebViewBridgeConstants.WEBVIEW_PATH_CREDIT_CARD_INVOICE_PAYMENT, numeroCartao);
        applicationStarter.start();
    }

    private void chamarParcelamentoFatura(String numeroCartao) {
        ParcelamentoFaturasApplicationStarter parcelamentoFaturasApplicationStarter = new ParcelamentoFaturasApplicationStarter(this);
        parcelamentoFaturasApplicationStarter.start();
    }

    private void chamarPagamentoTitulosEContas() {
        PagamentosCodigoBarrasActivity.alreadyLoaded = false;
        Intent intent = new Intent(this, PagamentosCodigoBarrasActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra("isway", true);
        startActivity(intent);
    }

    @Override
    public Chat getChatComponent() {
        return ChatApplication.getInstance().getChatComponent();
    }

    @Override
    public void startCrm() {
        crmShared = new CrmShared(this, cardlayoutCrm, PageEnum.Home);
    }


    private void mostrarNotificacao() {
        if (!mostrarNotificacao) {
            mostrarNotificacao = true;
            getHomeLogadaPresenter().notificacaoFimAno();
        }
    }

    @Override
    public void showLoadingScreen() {
        loadingDialog = DialogUtil.showLoading(this);
    }

    @Override
    public void hideLoadingScreen() {
        if (loadingDialog != null) {
            loadingDialog.dismiss();
            loadingDialog = null;
        }
    }

    public CrmShared getCrmShared() {
        return this.crmShared;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        getHomeLogadaPresenter().onActivityResult(requestCode, resultCode, data);

        registerForActivityResult(
                new ActivityResultContracts.StartIntentSenderForResult(),
                new ActivityResultCallback<ActivityResult>() {
                    @Override
                    public void onActivityResult(ActivityResult result) {
                        // handle callback
                        if (resultCode != RESULT_OK) {
                            SantanderLogger.d("Update flow failed! Result code: " + resultCode);
                            // If the update is cancelled or fails,
                            // you can request to start the update again.
                        }
                    }
                });
    }

/Users/t767903/Documents/Personal/ModulosLibs/gapzero-android/app/src/main/java/com/santander/app/homelogada/presentation/HomeLogadaActivity.java:340: error: incompatible types: com.google.android.gms.tasks.Task<AppUpdateInfo> cannot be converted to com.google.android.play.core.tasks.Task<AppUpdateInfo>
        Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
                                                                                 ^

}