diff --git a/app/build.gradle b/app/build.gradle index 30f1c4354..2318f8f30 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "fr.gouv.etalab.mastodon" minSdkVersion 16 targetSdkVersion 28 - versionCode 249 - versionName "1.77.1" + versionCode 250 + versionName "1.78.0-beta-1" multiDexEnabled true } dexOptions { 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 ecd81a740..54f80748c 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 @@ -129,9 +129,8 @@ public class ShowConversationActivity extends BaseActivity implements OnRetriev 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); + if( status != null && statusListAdapter != null) { + statusListAdapter.notifyStatusWithActionChanged(status); } } }; 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..8e6970977 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. @@ -2063,7 +2065,6 @@ public class API { try { Status status1 = parseStatuses(context, new JSONObject(resp)); b.putParcelable("status", status1); - b.putSerializable("action", statusAction); } catch (JSONException ignored) {} Intent intentBC = new Intent(Helper.RECEIVE_ACTION); intentBC.putExtras(b); @@ -2212,13 +2213,20 @@ 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(); + status.setPoll(poll); + b.putParcelable("status", status); + 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/client/GNUAPI.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/GNUAPI.java index f61bd9eab..9fab9d736 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/GNUAPI.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/GNUAPI.java @@ -1389,7 +1389,6 @@ public class GNUAPI { try { Status status1 = parseStatuses(context, new JSONObject(resp)); b.putParcelable("status", status1); - b.putSerializable("action", statusAction); } catch (JSONException ignored) {} Intent intentBC = new Intent(Helper.RECEIVE_ACTION); intentBC.putExtras(b); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ArtListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ArtListAdapter.java index 757f90cab..1c0e2578b 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ArtListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ArtListAdapter.java @@ -316,29 +316,12 @@ public class ArtListAdapter extends RecyclerView.Adapter implements OnPostAction } } - 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 favCount = statuses.get(i).getFavourites_count(); - int boostCount = statuses.get(i).getReblogs_count(); - if( statusAction == API.StatusAction.REBLOG) - boostCount++; - else if( statusAction == API.StatusAction.UNREBLOG) - boostCount--; - else if( statusAction == API.StatusAction.FAVOURITE) - favCount++; - else if( statusAction == API.StatusAction.UNFAVOURITE) - favCount--; - if( boostCount < 0 ) - boostCount = 0; - if( favCount < 0 ) - favCount = 0; - statuses.get(i).setFavourited(status.isFavourited()); - statuses.get(i).setFavourites_count(favCount); - statuses.get(i).setReblogged(status.isReblogged()); - statuses.get(i).setReblogs_count(boostCount); + statuses.set(i, status); statusListAdapter.notifyItemChanged(i); } catch (Exception ignored) { } 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 02518844f..89a4c90c4 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 @@ -541,6 +541,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On if (social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON && status != null) { holder.rated.setVisibility(View.GONE); + holder.poll_container.setVisibility(View.GONE); holder.multiple_choice.setVisibility(View.GONE); holder.single_choice.setVisibility(View.GONE); holder.submit_vote.setVisibility(View.GONE); @@ -1080,33 +1081,12 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On } - public void notifyNotificationWithActionChanged(API.StatusAction statusAction, Status status){ + public void notifyNotificationWithActionChanged(Status status){ for (int i = 0; i < notificationsListAdapter.getItemCount(); i++) { if (notificationsListAdapter.getItemAt(i) != null && notificationsListAdapter.getItemAt(i).getStatus() != null && notificationsListAdapter.getItemAt(i).getStatus().getId().equals(status.getId())) { try { if( notifications.get(i).getStatus() != null){ - int favCount = notifications.get(i).getStatus().getFavourites_count(); - int boostCount = notifications.get(i).getStatus().getReblogs_count(); - if( statusAction == API.StatusAction.REBLOG) - boostCount++; - else if( statusAction == API.StatusAction.UNREBLOG) - boostCount--; - else if( statusAction == API.StatusAction.FAVOURITE) - favCount++; - else if( statusAction == API.StatusAction.UNFAVOURITE) - favCount--; - else if( statusAction == API.StatusAction.REFRESHPOLL){ - if( status.getPoll() != null) - notifications.get(i).getStatus().setPoll(status.getPoll()); - } - if( boostCount < 0 ) - boostCount = 0; - if( favCount < 0 ) - favCount = 0; - notifications.get(i).getStatus().setFavourited(status.isFavourited()); - notifications.get(i).getStatus().setFavourites_count(favCount); - notifications.get(i).getStatus().setReblogged(status.isReblogged()); - notifications.get(i).getStatus().setReblogs_count(boostCount); + notifications.get(i).setStatus(status); notificationsListAdapter.notifyItemChanged(i); break; } @@ -1344,7 +1324,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On @Override public void onPoll(Status status, Poll poll) { status.setPoll(poll); - notifyNotificationWithActionChanged(API.StatusAction.REFRESHPOLL, status); + notifyNotificationWithActionChanged(status); } class ViewHolder extends RecyclerView.ViewHolder { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/PixelfedListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/PixelfedListAdapter.java index 00ff45703..0f4a5842c 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/PixelfedListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/PixelfedListAdapter.java @@ -460,29 +460,12 @@ public class PixelfedListAdapter extends RecyclerView.Adapter implements OnPostA } } - public void notifyStatusWithActionChanged(API.StatusAction statusAction, Status status){ + public void notifyStatusWithActionChanged(Status status){ for (int i = 0; i < pixelfedListAdapter.getItemCount(); i++) { //noinspection ConstantConditions if (pixelfedListAdapter.getItemAt(i) != null && pixelfedListAdapter.getItemAt(i).getId().equals(status.getId())) { try { - int favCount = statuses.get(i).getFavourites_count(); - int boostCount = statuses.get(i).getReblogs_count(); - if( statusAction == API.StatusAction.REBLOG) - boostCount++; - else if( statusAction == API.StatusAction.UNREBLOG) - boostCount--; - else if( statusAction == API.StatusAction.FAVOURITE) - favCount++; - else if( statusAction == API.StatusAction.UNFAVOURITE) - favCount--; - if( boostCount < 0 ) - boostCount = 0; - if( favCount < 0 ) - favCount = 0; - statuses.get(i).setFavourited(status.isFavourited()); - statuses.get(i).setFavourites_count(favCount); - statuses.get(i).setReblogged(status.isReblogged()); - statuses.get(i).setReblogs_count(boostCount); + statuses.set(i, status); pixelfedListAdapter.notifyItemChanged(i); } catch (Exception ignored) { } 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 2e37c1186..8e9fe254c 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 @@ -3025,29 +3025,12 @@ 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 favCount = statuses.get(i).getFavourites_count(); - int boostCount = statuses.get(i).getReblogs_count(); - if( statusAction == API.StatusAction.REBLOG) - boostCount++; - else if( statusAction == API.StatusAction.UNREBLOG) - boostCount--; - else if( statusAction == API.StatusAction.FAVOURITE) - favCount++; - else if( statusAction == API.StatusAction.UNFAVOURITE) - favCount--; - if( boostCount < 0 ) - boostCount = 0; - if( favCount < 0 ) - favCount = 0; - statuses.get(i).setFavourited(status.isFavourited()); - statuses.get(i).setFavourites_count(favCount); - statuses.get(i).setReblogged(status.isReblogged()); - statuses.get(i).setReblogs_count(boostCount); + statuses.set(i, status); 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 726ec35ca..388f1d3b4 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,10 +157,8 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve Bundle b = intent.getExtras(); assert b != null; Status status = b.getParcelable("status"); - API.StatusAction statusAction = (API.StatusAction) b.getSerializable("action"); - if (status != null) { - notificationsListAdapter.notifyNotificationWithActionChanged(statusAction, status); - } + if( notificationsListAdapter != null && status != null) + notificationsListAdapter.notifyNotificationWithActionChanged(status); } }; LocalBroadcastManager.getInstance(context).registerReceiver(receive_action, new IntentFilter(Helper.RECEIVE_ACTION)); 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..015408a25 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,9 +245,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 != null) { - statusListAdapter.notifyStatusWithActionChanged(statusAction, status); + statusListAdapter.notifyStatusWithActionChanged(status); } } }; diff --git a/app/src/main/res/drawable/ic_emoji_selector.png b/app/src/main/res/drawable/ic_emoji_selector.png deleted file mode 100644 index e3c71797c..000000000 Binary files a/app/src/main/res/drawable/ic_emoji_selector.png and /dev/null differ diff --git a/app/src/main/res/layout-sw600dp/activity_toot.xml b/app/src/main/res/layout-sw600dp/activity_toot.xml index 546eb435a..e43f650dd 100644 --- a/app/src/main/res/layout-sw600dp/activity_toot.xml +++ b/app/src/main/res/layout-sw600dp/activity_toot.xml @@ -1,5 +1,4 @@ - - + android:layout_height="match_parent" + android:fillViewport="true"> + + android:paddingBottom="@dimen/fab_margin"> + + android:visibility="gone" /> + + android:gravity="top|start" + android:hint="@string/toot_placeholder" + android:inputType="textMultiLine|textCapSentences" + android:minLines="4" /> + + + android:layout_height="wrap_content" + android:visibility="gone"> + + android:indeterminate="false" + android:max="100" + android:progress="0" /> + + android:gravity="center" + android:textColor="@color/dark_text" + android:textSize="12sp" /> + + android:visibility="gone"> + - + android:padding="5dp"> + + android:layout_height="wrap_content" + android:orientation="horizontal"> + + android:contentDescription="@string/toot_select_image" + android:gravity="center" + android:scaleType="centerCrop" + android:src="@drawable/ic_insert_photo" /> + - + android:contentDescription="@string/poll" + android:scaleType="centerCrop" + android:src="@drawable/ic_view_list_poll" + android:visibility="gone"/> + + +