diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java index 7a53acc67..4d1f3e5dd 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java @@ -16,12 +16,15 @@ package fr.gouv.etalab.mastodon.activities; import android.annotation.SuppressLint; +import android.content.BroadcastReceiver; import android.content.Intent; +import android.content.IntentFilter; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.content.ContextCompat; +import android.support.v4.content.LocalBroadcastManager; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.ActionBar; import android.support.v7.widget.LinearLayoutManager; @@ -41,6 +44,7 @@ import java.util.List; import es.dmoral.toasty.Toasty; import fr.gouv.etalab.mastodon.R; import fr.gouv.etalab.mastodon.asynctasks.RetrieveContextAsyncTask; +import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask; import fr.gouv.etalab.mastodon.client.Entities.Account; import fr.gouv.etalab.mastodon.client.Entities.Context; import fr.gouv.etalab.mastodon.client.Entities.Error; @@ -72,6 +76,7 @@ public class ShowConversationActivity extends BaseActivity implements OnRetriev private List statuses; private StatusListAdapter statusListAdapter; private boolean expanded; + private BroadcastReceiver receive_action; @Override protected void onCreate(Bundle savedInstanceState) { @@ -110,6 +115,25 @@ public class ShowConversationActivity extends BaseActivity implements OnRetriev if( detailsStatus == null || detailsStatus.getId() == null) finish(); + + if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON) { + + if( receive_action != null) + LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(receive_action); + receive_action = new BroadcastReceiver() { + @Override + public void onReceive(android.content.Context context, Intent intent) { + Bundle b = intent.getExtras(); + assert b != null; + Status status = b.getParcelable("status"); + if( status != null) { + statusListAdapter.notifyStatusWithActionChanged(status); + } + } + }; + LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(receive_action, new IntentFilter(Helper.RECEIVE_ACTION)); + } + if( getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); if( getSupportActionBar() != null) { @@ -269,6 +293,12 @@ public class ShowConversationActivity extends BaseActivity implements OnRetriev } } + @Override + public void onDestroy() { + super.onDestroy(); + if( receive_action != null) + LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(receive_action); + } @Override public void onRetrieveContext(Context context, Error error) { 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 9b4e709cd..aa06ae2ce 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 @@ -2627,7 +2627,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct } } - if( statusAction == API.StatusAction.REBLOG){ + /*if( statusAction == API.StatusAction.REBLOG){ int position = 0; for(Status status: statuses){ if( status.getId().equals(targetedId)) { @@ -2674,7 +2674,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct } position++; } - } + }*/ if( statusAction == API.StatusAction.PEERTUBEDELETECOMMENT){ int position = 0; for(Status status: statuses){