diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/ManagePollAsyncTask.java b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/ManagePollAsyncTask.java index 209da409f..9df82ac9e 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/ManagePollAsyncTask.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/ManagePollAsyncTask.java @@ -58,7 +58,7 @@ public class ManagePollAsyncTask extends AsyncTask { if (type == type_s.SUBMIT){ poll = new API(contextReference.get()).submiteVote(status.getPoll().getId(),choices); }else if( type == type_s.REFRESH){ - poll = new API(contextReference.get()).getPoll(status.getPoll().getId()); + poll = new API(contextReference.get()).getPoll(status); } return null; } 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 624307792..4d8135842 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 @@ -78,6 +78,8 @@ import fr.gouv.etalab.mastodon.helper.Helper; import fr.gouv.etalab.mastodon.sqlite.AccountDAO; import fr.gouv.etalab.mastodon.sqlite.Sqlite; +import static fr.gouv.etalab.mastodon.client.API.StatusAction.REFRESHPOLL; + /** * Created by Thomas on 23/04/2017. @@ -2212,13 +2214,21 @@ public class API { /** * Public api call to refresh a poll - * @param pollId - * @return + * @param status Status + * @return Poll */ - public Poll getPoll(String pollId){ + public Poll getPoll(Status status){ try { HttpsConnection httpsConnection = new HttpsConnection(context); - String response = httpsConnection.get(getAbsoluteUrl(String.format("/polls/%s", pollId)), 60, null, prefKeyOauthTokenT); + String response = httpsConnection.get(getAbsoluteUrl(String.format("/polls/%s", status.getPoll().getId())), 60, null, prefKeyOauthTokenT); + Poll poll = parsePoll(context, new JSONObject(response)); + Bundle b = new Bundle(); + b.putParcelable("poll", poll); + b.putParcelable("status", status); + b.putSerializable("action", REFRESHPOLL); + Intent intentBC = new Intent(Helper.RECEIVE_ACTION); + intentBC.putExtras(b); + LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC); return parsePoll(context, new JSONObject(response)); } catch (HttpsConnection.HttpsConnectionException e) { setError(e.getStatusCode(), e); 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 726ec35ca..2c542b420 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 @@ -49,6 +49,7 @@ 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.Notification; +import fr.gouv.etalab.mastodon.client.Entities.Poll; import fr.gouv.etalab.mastodon.client.Entities.Status; import fr.gouv.etalab.mastodon.drawers.NotificationsListAdapter; import fr.gouv.etalab.mastodon.helper.Helper; @@ -156,6 +157,10 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve Bundle b = intent.getExtras(); assert b != null; Status status = b.getParcelable("status"); + Poll poll = b.getParcelable("poll"); + if (poll != null && status != null){ + status.setPoll(poll); + } API.StatusAction statusAction = (API.StatusAction) b.getSerializable("action"); if (status != null) { notificationsListAdapter.notifyNotificationWithActionChanged(statusAction, status); 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 249ac32e4..fd4ad652b 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 @@ -58,6 +58,7 @@ import fr.gouv.etalab.mastodon.client.APIResponse; import fr.gouv.etalab.mastodon.client.Entities.Account; import fr.gouv.etalab.mastodon.client.Entities.Conversation; import fr.gouv.etalab.mastodon.client.Entities.Peertube; +import fr.gouv.etalab.mastodon.client.Entities.Poll; import fr.gouv.etalab.mastodon.client.Entities.RemoteInstance; import fr.gouv.etalab.mastodon.client.Entities.Status; import fr.gouv.etalab.mastodon.client.Entities.TagTimeline; @@ -244,6 +245,10 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn Bundle b = intent.getExtras(); assert b != null; Status status = b.getParcelable("status"); + Poll poll = b.getParcelable("poll"); + if (poll != null && status != null){ + status.setPoll(poll); + } API.StatusAction statusAction = (API.StatusAction) b.getSerializable("action"); if( status != null && statusListAdapter != null) { statusListAdapter.notifyStatusWithActionChanged(statusAction, status);