feat: reset data and restart app on logout

This commit is contained in:
Robert Benedikt committed 2020-12-17 18:45:48 +01:00
1 parent 2213753fb9
commit e72cbfc571
5 files changed
+36 -42

No files matched your search

@@ -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();
}
}
@@ -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);
}
}
}
@@ -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;
}
@@ -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();
}
@@ -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();
}