From 60e8b0a099b8f0e994570ce6a8dc0b75195950ba Mon Sep 17 00:00:00 2001 From: suleymanakbas91 Date: Tue, 8 Dec 2015 14:57:41 +0200 Subject: [PATCH] Displaying account message feature added --- .../android/activities/MainActivity.java | 47 +++++++++++++++++-- .../lokki/android/utilities/ServerApi.java | 20 +++++++- 2 files changed, 62 insertions(+), 5 deletions(-) diff --git a/App/src/main/java/cc/softwarefactory/lokki/android/activities/MainActivity.java b/App/src/main/java/cc/softwarefactory/lokki/android/activities/MainActivity.java index c97148d5..ee89b212 100644 --- a/App/src/main/java/cc/softwarefactory/lokki/android/activities/MainActivity.java +++ b/App/src/main/java/cc/softwarefactory/lokki/android/activities/MainActivity.java @@ -206,14 +206,13 @@ protected void onResume() { Log.i(TAG, "onResume - user NOT logged in, so avoiding launching services."); return; } - - + Log.i(TAG, "onResume - user logged in, so launching services."); startServices(); LocalBroadcastManager.getInstance(this).registerReceiver(exitMessageReceiver, new IntentFilter("EXIT")); LocalBroadcastManager.getInstance(this).registerReceiver(switchToMapReceiver, new IntentFilter("GO-TO-MAP")); LocalBroadcastManager.getInstance(this).registerReceiver(serverMessageReceiver, new IntentFilter("MESSAGE")); - + LocalBroadcastManager.getInstance(this).registerReceiver(switchToSignUpReceiver, new IntentFilter("SIGN-UP")); Log.i(TAG, "onResume - check if dashboard is null"); if (MainApplication.dashboard == null) { @@ -343,6 +342,7 @@ protected void onPause() { LocalBroadcastManager.getInstance(this).unregisterReceiver(switchToMapReceiver); LocalBroadcastManager.getInstance(this).unregisterReceiver(exitMessageReceiver); LocalBroadcastManager.getInstance(this).unregisterReceiver(serverMessageReceiver); + LocalBroadcastManager.getInstance(this).unregisterReceiver(switchToSignUpReceiver); super.onPause(); //Set location update accuracy to low if the service has been initialized if (mBoundLocationService != null) { @@ -688,6 +688,29 @@ public void onClick(DialogInterface dialog, int which) { } }; + private BroadcastReceiver switchToSignUpReceiver = new BroadcastReceiver() { + + @Override + public void onReceive(Context context, Intent intent) { + Log.d(TAG, "switchToSignUp onReceive"); + + AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this); + alertDialog.setTitle(getString(R.string.app_name)); + String message = intent.getStringExtra("message"); + alertDialog.setMessage(message) + .setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + logoutSilent(); + } + }) + .setCancelable(false); + alertDialog.show(); + + signUserIn(); + } + }; private BroadcastReceiver switchToMapReceiver = new BroadcastReceiver() { @@ -728,6 +751,24 @@ public void onClick(DialogInterface dialog, int which){ .show(); } + public void logoutSilent(){ + final MainActivity main = this; + PreferenceUtils.setString(main, PreferenceUtils.KEY_USER_ACCOUNT, null); + PreferenceUtils.setString(main, PreferenceUtils.KEY_USER_ID, null); + PreferenceUtils.setString(main, PreferenceUtils.KEY_AUTH_TOKEN, null); + PreferenceUtils.setString(main, PreferenceUtils.KEY_CONTACTS, null); + PreferenceUtils.setString(main, PreferenceUtils.KEY_DASHBOARD, null); + PreferenceUtils.setString(main, PreferenceUtils.KEY_LOCAL_CONTACTS, null); + PreferenceUtils.setString(main, PreferenceUtils.KEY_PLACES, null); + MainApplication.user = null; + MainApplication.dashboard = null; + MainApplication.contacts = null; + MainApplication.places = null; + MainApplication.firstTimeZoom = true; + //Restart main activity to clear state + main.recreate(); + } + public void setPhoneContacts(List phoneContacts) { this.phoneContacts = phoneContacts; AddContactsFragment acf = new AddContactsFragment(this); diff --git a/App/src/main/java/cc/softwarefactory/lokki/android/utilities/ServerApi.java b/App/src/main/java/cc/softwarefactory/lokki/android/utilities/ServerApi.java index a9d30545..d48d2072 100644 --- a/App/src/main/java/cc/softwarefactory/lokki/android/utilities/ServerApi.java +++ b/App/src/main/java/cc/softwarefactory/lokki/android/utilities/ServerApi.java @@ -70,17 +70,33 @@ public void callback(String url, JSONObject json, AjaxStatus status) { Intent intent = new Intent("EXIT"); LocalBroadcastManager.getInstance(context).sendBroadcast(intent); + } else if (status.getCode() == 404) { + Log.e(TAG, "User does not exist. Must sign up again."); + String message = "Your account has expired. Please sign up again."; + Intent intent = new Intent("SIGN-UP"); + intent.putExtra("message", message); + LocalBroadcastManager.getInstance(context).sendBroadcast(intent); } else if (json != null) { Log.d(TAG, "json returned: " + json); try { - if (json.has("serverMessage")) + if (json.has("outOfDateVersionMessage")) { - String message = json.get("serverMessage").toString(); + String message = json.get("outOfDateVersionMessage").toString(); Intent intent = new Intent("MESSAGE"); intent.putExtra("message", message); LocalBroadcastManager.getInstance(context).sendBroadcast(intent); return; } + + if (json.has("accountExpiredMessage")) + { + String message = json.get("accountExpiredMessage").toString(); + Intent intent = new Intent("SIGN-UP"); + intent.putExtra("message", message); + LocalBroadcastManager.getInstance(context).sendBroadcast(intent); + return; + } + MainApplication.dashboard = JsonUtils.createFromJson(json.toString(), MainApplication.Dashboard.class); PreferenceUtils.setString(context, PreferenceUtils.KEY_DASHBOARD, JsonUtils.serialize(MainApplication.dashboard)); MainApplication.user.setLocation(MainApplication.dashboard.getLocation());