private synchronized void showUpdateDialog()

in sdk/appcenter-distribute/src/main/java/com/microsoft/appcenter/distribute/Distribute.java [1531:1588]


    private synchronized void showUpdateDialog() {
        if (mListener == null && mUsingDefaultUpdateDialog == null) {
            mUsingDefaultUpdateDialog = true;
        }
        if (mListener != null && mForegroundActivity != mLastActivityWithDialog.get()) {
            AppCenterLog.debug(LOG_TAG, "Calling listener.onReleaseAvailable.");
            boolean customized = mListener.onReleaseAvailable(mForegroundActivity, mReleaseDetails);
            if (customized) {
                mLastActivityWithDialog = new WeakReference<>(mForegroundActivity);
            }
            mUsingDefaultUpdateDialog = !customized;
        }
        if (mUsingDefaultUpdateDialog != null && mUsingDefaultUpdateDialog) {
            if (!shouldRefreshDialog(mUpdateDialog)) {
                return;
            }
            AppCenterLog.debug(LOG_TAG, "Show default update dialog.");
            AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mForegroundActivity);
            dialogBuilder.setTitle(R.string.appcenter_distribute_update_dialog_title);
            final ReleaseDetails releaseDetails = mReleaseDetails;
            String message;
            if (releaseDetails.isMandatoryUpdate()) {
                message = mContext.getString(R.string.appcenter_distribute_update_dialog_message_mandatory);
            } else {
                message = mContext.getString(R.string.appcenter_distribute_update_dialog_message_optional);
            }
            message = formatAppNameAndVersion(message);
            dialogBuilder.setMessage(message);
            dialogBuilder.setPositiveButton(R.string.appcenter_distribute_update_dialog_download, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    enqueueDownloadOrShowUnknownSourcesDialog(releaseDetails);
                }
            });
            dialogBuilder.setCancelable(false);
            if (!releaseDetails.isMandatoryUpdate()) {
                dialogBuilder.setNegativeButton(R.string.appcenter_distribute_update_dialog_postpone, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        postponeRelease(releaseDetails);
                    }
                });
            }
            if (!TextUtils.isEmpty(releaseDetails.getReleaseNotes()) && releaseDetails.getReleaseNotesUrl() != null) {
                dialogBuilder.setNeutralButton(R.string.appcenter_distribute_update_dialog_view_release_notes, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        viewReleaseNotes(releaseDetails);
                    }
                });
            }
            mUpdateDialog = dialogBuilder.create();
            showAndRememberDialogActivity(mUpdateDialog);
        }
    }