From e72cbfc571223aa75697a93cd9d4b1f28f6f80fa Mon Sep 17 00:00:00 2001 From: Robert Benedikt Date: Thu, 17 Dec 2020 14:24:15 +0100 Subject: [PATCH] feat: reset data and restart app on logout --- .../ui/activities/ResilientActivity.java | 26 +++---------------- .../racecommittee/app/RaceApplication.java | 18 +++++++++++++ .../app/ui/activities/BaseActivity.java | 3 ++- .../app/ui/activities/SessionActivity.java | 17 +++--------- .../ui/fragments/MainPreferenceFragment.java | 14 ++++++---- 5 files changed, 36 insertions(+), 42 deletions(-) diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/ResilientActivity.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/ResilientActivity.java index 45f1d132d98..ee3e3fb354a 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/ResilientActivity.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/ResilientActivity.java @@ -1,40 +1,22 @@ package com.sap.sailing.android.shared.ui.activities; -import com.sap.sailing.android.shared.logging.ExLog; - -import android.content.Intent; import android.view.MenuItem; +import com.sap.sailing.android.shared.logging.ExLog; + public class ResilientActivity extends LoggableActivity { private static final String TAG = ResilientActivity.class.getName(); @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: + if (item.getItemId() == android.R.id.home) { ExLog.i(this, TAG, "Clicked HOME."); return onHomeClicked(); - default: - return super.onOptionsItemSelected(item); } + return super.onOptionsItemSelected(item); } protected boolean onHomeClicked() { return false; } - - protected void fadeActivity(Class activity, boolean newTopTask) { - Intent intent = new Intent(getBaseContext(), activity); - if (newTopTask) { - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - } - fadeActivity(intent); - } - - protected void fadeActivity(Intent intent) { - startActivity(intent); - overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); - finish(); - } } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/RaceApplication.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/RaceApplication.java index d21a1a11f73..d323e0f1134 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/RaceApplication.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/RaceApplication.java @@ -1,12 +1,30 @@ package com.sap.sailing.racecommittee.app; +import android.content.Intent; + import com.sap.sailing.android.shared.application.LoggableApplication; import com.sap.sailing.racecommittee.app.utils.PreferenceHelper; public class RaceApplication extends LoggableApplication { + + private static RaceApplication sInstance; + + public static RaceApplication getInstance() { + return sInstance; + } + @Override public void onCreate() { super.onCreate(); + sInstance = this; new PreferenceHelper(this).setupPreferences(); } + + public void restart() { + final Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName()); + if (intent != null) { + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } + } } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/BaseActivity.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/BaseActivity.java index 8a997c66429..5e2310ca90c 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/BaseActivity.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/BaseActivity.java @@ -18,6 +18,7 @@ import com.sap.sailing.android.shared.util.AuthCheckTask; import com.sap.sailing.android.shared.util.BitmapHelper; import com.sap.sailing.racecommittee.app.AppPreferences; import com.sap.sailing.racecommittee.app.R; +import com.sap.sailing.racecommittee.app.RaceApplication; import com.sap.sailing.racecommittee.app.data.DataManager; import com.sap.sailing.racecommittee.app.domain.BackPressListener; import com.sap.sailing.racecommittee.app.utils.ThemeHelper; @@ -108,7 +109,7 @@ public class BaseActivity extends SendingServiceAwareActivity implements AuthChe */ protected boolean onReset() { resetDataManager(); - fadeActivity(LoginActivity.class, true); + RaceApplication.getInstance().restart(); return true; } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/SessionActivity.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/SessionActivity.java index 50f2669adfe..b3470e8b3d9 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/SessionActivity.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/activities/SessionActivity.java @@ -1,7 +1,5 @@ package com.sap.sailing.racecommittee.app.ui.activities; -import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; @@ -43,12 +41,8 @@ public abstract class SessionActivity extends BaseActivity { ExLog.i(this, TAG, String.format("Logging out from activity %s", this.getClass().getSimpleName())); AlertDialog dialog = new AlertDialog.Builder(this) .setTitle(getString(R.string.change_dialog_title)).setMessage(getString(R.string.change_dialog_message)) - .setPositiveButton(android.R.string.ok, new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - doLogout(); - } - }).setNegativeButton(android.R.string.cancel, null).create(); + .setPositiveButton(android.R.string.ok, (dialog1, which) -> doLogout()) + .setNegativeButton(android.R.string.cancel, null).create(); dialog.show(); return true; } @@ -58,12 +52,7 @@ public abstract class SessionActivity extends BaseActivity { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(this.getString(R.string.data_reload_title)); builder.setMessage(this.getString(R.string.data_reload_message)); - builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - doLogout(); - } - }); + builder.setPositiveButton(android.R.string.ok, (dialog, which) -> doLogout()); builder.setCancelable(false); builder.show(); } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/MainPreferenceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/MainPreferenceFragment.java index acd059ea470..c494861ab6d 100755 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/MainPreferenceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/MainPreferenceFragment.java @@ -1,8 +1,8 @@ package com.sap.sailing.racecommittee.app.ui.fragments; +import android.app.Activity; import android.content.Context; import android.content.DialogInterface; -import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; @@ -27,10 +27,10 @@ import com.sap.sailing.android.shared.util.ViewHelper; import com.sap.sailing.domain.base.configuration.DeviceConfiguration; import com.sap.sailing.racecommittee.app.AppPreferences; import com.sap.sailing.racecommittee.app.R; +import com.sap.sailing.racecommittee.app.RaceApplication; import com.sap.sailing.racecommittee.app.data.DataManager; import com.sap.sailing.racecommittee.app.data.clients.LoadClient; import com.sap.sailing.racecommittee.app.domain.configuration.impl.PreferencesDeviceConfigurationLoader; -import com.sap.sailing.racecommittee.app.ui.activities.PasswordActivity; import com.sap.sailing.racecommittee.app.ui.fragments.preference.CourseDesignerPreferenceFragment; import com.sap.sailing.racecommittee.app.ui.fragments.preference.GeneralPreferenceFragment; import com.sap.sailing.racecommittee.app.ui.fragments.preference.RegattaPreferenceFragment; @@ -122,9 +122,13 @@ public class MainPreferenceFragment extends LoggableFragment { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - AppPreferences.on(getActivity()).setAccessToken(null); - startActivity(new Intent(getActivity(), PasswordActivity.class)); - getActivity().finish(); + final Activity activity = requireActivity(); + AppPreferences.on(activity).setAccessToken(null); + + DataManager dataManager = (DataManager) DataManager.create(activity); + dataManager.resetAll(); + + RaceApplication.getInstance().restart(); } }).setNegativeButton(android.R.string.cancel, null).show(); }