package cl.monsoon.s1next.view.dialog; import android.app.AlertDialog; import android.app.Dialog; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import java.net.CookieManager; import javax.inject.Inject; import cl.monsoon.s1next.App; import cl.monsoon.s1next.R; import cl.monsoon.s1next.data.User; /** * A dialog shows logout prompt. * Logs out if user clicks the logout button. */ public final class LogoutDialogFragment extends DialogFragment { private static final String TAG = LogoutDialogFragment.class.getName(); @Inject CookieManager mCookieManager; @Inject User mUser; /** * Show {@link LogoutDialogFragment} if user has logged in. * * @return {@code true} if we need to show dialog, {@code false} otherwise. */ public static boolean showLogoutDialogIfNeeded(FragmentActivity fragmentActivity, User user) { if (user.isLogged()) { new LogoutDialogFragment().show(fragmentActivity.getSupportFragmentManager(), LogoutDialogFragment.TAG); return true; } return false; } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { App.getAppComponent(getContext()).inject(this); return new AlertDialog.Builder(getContext()) .setMessage(R.string.dialog_message_log_out) .setPositiveButton(R.string.dialog_button_text_log_out, (dialog, which) -> logout()) .setNegativeButton(android.R.string.cancel, null) .create(); } /** * Clears user's cookies and current user's info. */ private void logout() { mCookieManager.getCookieStore().removeAll(); mUser.setLogged(false); } }