summaryrefslogtreecommitdiffstats
path: root/app/src/main/java
diff options
context:
space:
mode:
authorstom79 <tschneider.ac@gmail.com>2019-01-11 14:55:53 +0100
committerstom79 <tschneider.ac@gmail.com>2019-01-11 14:55:53 +0100
commitb60216a8c1a206e1c111ced1e1232e468a0ccfc1 (patch)
tree3247c598c145fe23fe5bf18f60a83c74172812da /app/src/main/java
parent9cde0eeaf38cd17e009b89aec1e3ddc14267691c (diff)
Some fixes
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/API.java1
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java18
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java22
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java27
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java4
5 files changed, 49 insertions, 23 deletions
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
index 8435f8e8c..0d2f99120 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
@@ -1752,7 +1752,6 @@ public class API {
b.putParcelable("status", status1);
b.putSerializable("action", statusAction);
} catch (JSONException ignored) {}
- b.putSerializable("action", statusAction);
Intent intentBC = new Intent(Helper.RECEIVE_ACTION);
intentBC.putExtras(b);
LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java
index 820a8a36a..6cdb56157 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java
@@ -855,6 +855,24 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
}
}
+
+ public void notifyNotificationWithActionChanged(Status status){
+ for (int i = 0; i < notificationsListAdapter.getItemCount(); i++) {
+ if (notificationsListAdapter.getItemAt(i) != null && notificationsListAdapter.getItemAt(i).getType().toLowerCase().equals("mention") && notificationsListAdapter.getItemAt(i).getStatus() != null && notificationsListAdapter.getItemAt(i).getStatus().getId().equals(status.getId())) {
+ try {
+ if( notifications.get(i).getStatus() != null){
+ notifications.get(i).getStatus().setFavourited(status.isFavourited());
+ notifications.get(i).getStatus().setFavourites_count(status.getFavourites_count());
+ notifications.get(i).getStatus().setReblogged(status.isReblogged());
+ notifications.get(i).getStatus().setReblogs_count(status.getReblogs_count());
+ }
+ notificationsListAdapter.notifyItemChanged(i);
+ } catch (Exception ignored) {
+ }
+ }
+ }
+ }
+
@Override
public long getItemId(int position) {
return position;
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java
index 5bf97a920..9b4e709cd 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java
@@ -2700,31 +2700,15 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
}
}
- public void notifyStatusWithActionChanged(API.StatusAction statusAction, Status status){
+ public void notifyStatusWithActionChanged(Status status){
for (int i = 0; i < statusListAdapter.getItemCount(); i++) {
//noinspection ConstantConditions
if (statusListAdapter.getItemAt(i) != null && statusListAdapter.getItemAt(i).getId().equals(status.getId())) {
try {
- int j;
- int countFav = statuses.get(i).getFavourites_count();
- int countReblog = statuses.get(i).getReblogs_count();
- if( statusAction == API.StatusAction.UNFAVOURITE){
- countFav--;
- if( countFav < 0)
- countFav = 0;
- }else if( statusAction == API.StatusAction.FAVOURITE){
- countFav++;
- }else if( statusAction == API.StatusAction.UNREBLOG){
- countReblog--;
- if( countReblog < 0)
- countReblog = 0;
- }else if( statusAction == API.StatusAction.REBLOG){
- countReblog++;
- }
statuses.get(i).setFavourited(status.isFavourited());
- statuses.get(i).setFavourites_count(countFav);
+ statuses.get(i).setFavourites_count(status.getFavourites_count());
statuses.get(i).setReblogged(status.isReblogged());
- statuses.get(i).setReblogs_count(countReblog);
+ statuses.get(i).setReblogs_count(status.getReblogs_count());
statusListAdapter.notifyItemChanged(i);
} catch (Exception ignored) {
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java
index e07bbac16..b85c7483b 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java
@@ -14,7 +14,10 @@ package fr.gouv.etalab.mastodon.fragments;
* You should have received a copy of the GNU General Public License along with Mastalab; if not,
* see <http://www.gnu.org/licenses>. */
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
@@ -23,6 +26,7 @@ import android.os.Looper;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
+import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
@@ -41,9 +45,11 @@ import fr.gouv.etalab.mastodon.R;
import fr.gouv.etalab.mastodon.activities.MainActivity;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveMissingNotificationsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveNotificationsAsyncTask;
+import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask;
import fr.gouv.etalab.mastodon.client.APIResponse;
import fr.gouv.etalab.mastodon.client.Entities.Account;
import fr.gouv.etalab.mastodon.client.Entities.Notification;
+import fr.gouv.etalab.mastodon.client.Entities.Status;
import fr.gouv.etalab.mastodon.drawers.NotificationsListAdapter;
import fr.gouv.etalab.mastodon.helper.Helper;
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveMissingNotificationsInterface;
@@ -72,6 +78,7 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve
private String userId, instance;
private SharedPreferences sharedpreferences;
LinearLayoutManager mLayoutManager;
+ private BroadcastReceiver receive_action;
public DisplayNotificationsFragment(){
}
@@ -125,6 +132,24 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve
}
});
+ if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON) {
+
+ if( receive_action != null)
+ LocalBroadcastManager.getInstance(context).unregisterReceiver(receive_action);
+ receive_action = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Bundle b = intent.getExtras();
+ assert b != null;
+ Status status = b.getParcelable("status");
+ if( status != null) {
+ notificationsListAdapter.notifyNotificationWithActionChanged(status);
+ }
+ }
+ };
+ LocalBroadcastManager.getInstance(context).registerReceiver(receive_action, new IntentFilter(Helper.RECEIVE_ACTION));
+ }
+
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
@@ -198,6 +223,8 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve
super.onDestroy();
if(asyncTask != null && asyncTask.getStatus() == AsyncTask.Status.RUNNING)
asyncTask.cancel(true);
+ if( receive_action != null)
+ LocalBroadcastManager.getInstance(context).unregisterReceiver(receive_action);
}
@Override
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java
index 42e4bdba5..e52f08ab6 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java
@@ -51,7 +51,6 @@ import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveMissingFeedsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrievePeertubeSearchAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask;
-import fr.gouv.etalab.mastodon.client.API;
import fr.gouv.etalab.mastodon.client.APIResponse;
import fr.gouv.etalab.mastodon.client.Entities.Account;
import fr.gouv.etalab.mastodon.client.Entities.Conversation;
@@ -217,9 +216,8 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
Bundle b = intent.getExtras();
assert b != null;
Status status = b.getParcelable("status");
- API.StatusAction statusAction = (API.StatusAction)b.getSerializable("action");
if( status != null) {
- statusListAdapter.notifyStatusWithActionChanged(statusAction, status);
+ statusListAdapter.notifyStatusWithActionChanged(status);
}
}
};