Fix issue #475 - Support notifications when edited
This commit is contained in:
parent
2593d08d20
commit
4b106ffba4
|
@ -64,6 +64,7 @@ public class NotificationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||||
private final int TYPE_POLL = 5;
|
private final int TYPE_POLL = 5;
|
||||||
private final int TYPE_STATUS = 6;
|
private final int TYPE_STATUS = 6;
|
||||||
private final int TYPE_REACTION = 8;
|
private final int TYPE_REACTION = 8;
|
||||||
|
private final int TYPE_UPDATE = 9;
|
||||||
public FetchMoreCallBack fetchMoreCallBack;
|
public FetchMoreCallBack fetchMoreCallBack;
|
||||||
private Context context;
|
private Context context;
|
||||||
|
|
||||||
|
@ -92,6 +93,8 @@ public class NotificationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||||
return TYPE_MENTION;
|
return TYPE_MENTION;
|
||||||
case "reblog":
|
case "reblog":
|
||||||
return TYPE_REBLOG;
|
return TYPE_REBLOG;
|
||||||
|
case "update":
|
||||||
|
return TYPE_UPDATE;
|
||||||
case "favourite":
|
case "favourite":
|
||||||
return TYPE_FAVOURITE;
|
return TYPE_FAVOURITE;
|
||||||
case "poll":
|
case "poll":
|
||||||
|
@ -227,6 +230,8 @@ public class NotificationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||||
holderStatus.bindingNotification.status.typeOfNotification.setImageResource(R.drawable.ic_baseline_star_24);
|
holderStatus.bindingNotification.status.typeOfNotification.setImageResource(R.drawable.ic_baseline_star_24);
|
||||||
} else if (getItemViewType(position) == TYPE_REBLOG) {
|
} else if (getItemViewType(position) == TYPE_REBLOG) {
|
||||||
holderStatus.bindingNotification.status.typeOfNotification.setImageResource(R.drawable.ic_baseline_repeat_24);
|
holderStatus.bindingNotification.status.typeOfNotification.setImageResource(R.drawable.ic_baseline_repeat_24);
|
||||||
|
} else if (getItemViewType(position) == TYPE_UPDATE) {
|
||||||
|
holderStatus.bindingNotification.status.typeOfNotification.setImageResource(R.drawable.ic_baseline_edit_24);
|
||||||
} else if (getItemViewType(position) == TYPE_REACTION) {
|
} else if (getItemViewType(position) == TYPE_REACTION) {
|
||||||
holderStatus.bindingNotification.status.typeOfNotification.setImageResource(R.drawable.ic_baseline_insert_emoticon_24);
|
holderStatus.bindingNotification.status.typeOfNotification.setImageResource(R.drawable.ic_baseline_insert_emoticon_24);
|
||||||
} else if (getItemViewType(position) == TYPE_POLL) {
|
} else if (getItemViewType(position) == TYPE_POLL) {
|
||||||
|
@ -292,6 +297,8 @@ public class NotificationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||||
title = String.format(Locale.getDefault(), "%s %s", notification.account.display_name, context.getString(R.string.notif_favourite));
|
title = String.format(Locale.getDefault(), "%s %s", notification.account.display_name, context.getString(R.string.notif_favourite));
|
||||||
} else if (getItemViewType(position) == TYPE_REBLOG) {
|
} else if (getItemViewType(position) == TYPE_REBLOG) {
|
||||||
title = String.format(Locale.getDefault(), "%s %s", notification.account.display_name, context.getString(R.string.notif_reblog));
|
title = String.format(Locale.getDefault(), "%s %s", notification.account.display_name, context.getString(R.string.notif_reblog));
|
||||||
|
} else if (getItemViewType(position) == TYPE_UPDATE) {
|
||||||
|
title = String.format(Locale.getDefault(), "%s %s", notification.account.display_name, context.getString(R.string.notif_update));
|
||||||
} else if (getItemViewType(position) == TYPE_POLL) {
|
} else if (getItemViewType(position) == TYPE_POLL) {
|
||||||
title = context.getString(R.string.notif_poll);
|
title = context.getString(R.string.notif_poll);
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,6 +230,8 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
excludeType.remove("reblog");
|
excludeType.remove("reblog");
|
||||||
} else if (notificationType == NotificationTypeEnum.POLLS) {
|
} else if (notificationType == NotificationTypeEnum.POLLS) {
|
||||||
excludeType.remove("poll");
|
excludeType.remove("poll");
|
||||||
|
} else if (notificationType == NotificationTypeEnum.UPDATES) {
|
||||||
|
excludeType.remove("update");
|
||||||
} else if (notificationType == NotificationTypeEnum.TOOTS) {
|
} else if (notificationType == NotificationTypeEnum.TOOTS) {
|
||||||
excludeType.remove("status");
|
excludeType.remove("status");
|
||||||
} else if (notificationType == NotificationTypeEnum.FOLLOWS) {
|
} else if (notificationType == NotificationTypeEnum.FOLLOWS) {
|
||||||
|
@ -477,7 +479,7 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
if (i != refPosition) {
|
if (i != refPosition) {
|
||||||
//Loop through notifications, only fav and boost will be aggregated if they are just bellow
|
//Loop through notifications, only fav and boost will be aggregated if they are just bellow
|
||||||
if (notifications.get(i).type != null && notifications.get(refPosition).type != null && notifications.get(i).type.equals(notifications.get(refPosition).type)
|
if (notifications.get(i).type != null && notifications.get(refPosition).type != null && notifications.get(i).type.equals(notifications.get(refPosition).type)
|
||||||
&& (notifications.get(i).type.equals("favourite") || notifications.get(i).type.equals("reblog"))
|
&& (notifications.get(i).type.equals("favourite") || notifications.get(i).type.equals("reblog") || notifications.get(i).type.equals("update"))
|
||||||
&& notifications.get(i).status != null && notifications.get(refPosition).status != null && notifications.get(i).status.id.equals(notifications.get(refPosition).status.id)
|
&& notifications.get(i).status != null && notifications.get(refPosition).status != null && notifications.get(i).status.id.equals(notifications.get(refPosition).status.id)
|
||||||
) {
|
) {
|
||||||
if (notificationList.size() > 0) {
|
if (notificationList.size() > 0) {
|
||||||
|
@ -676,6 +678,8 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
@SerializedName("FAVOURITES")
|
@SerializedName("FAVOURITES")
|
||||||
FAVOURITES("FAVOURITES"),
|
FAVOURITES("FAVOURITES"),
|
||||||
@SerializedName("REBLOGS")
|
@SerializedName("REBLOGS")
|
||||||
|
UPDATES("UPDATES"),
|
||||||
|
@SerializedName("UPDATES")
|
||||||
REBLOGS("REBLOGS"),
|
REBLOGS("REBLOGS"),
|
||||||
@SerializedName("POLLS")
|
@SerializedName("POLLS")
|
||||||
POLLS("POLLS"),
|
POLLS("POLLS"),
|
||||||
|
|
|
@ -76,6 +76,7 @@ public class FragmentNotificationContainer extends Fragment {
|
||||||
binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_poll_24));
|
binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_poll_24));
|
||||||
binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_home_24));
|
binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_home_24));
|
||||||
binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_person_add_alt_1_24));
|
binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_person_add_alt_1_24));
|
||||||
|
binding.tabLayout.addTab(binding.tabLayout.newTab().setIcon(R.drawable.ic_baseline_edit_24));
|
||||||
binding.viewpagerNotificationContainer.setAdapter(new FedilabNotificationPageAdapter(getChildFragmentManager(), true));
|
binding.viewpagerNotificationContainer.setAdapter(new FedilabNotificationPageAdapter(getChildFragmentManager(), true));
|
||||||
}
|
}
|
||||||
AtomicBoolean changes = new AtomicBoolean(false);
|
AtomicBoolean changes = new AtomicBoolean(false);
|
||||||
|
@ -90,6 +91,7 @@ public class FragmentNotificationContainer extends Fragment {
|
||||||
ThemeHelper.changeButtonColor(requireActivity(), dialogView.displayPollResults);
|
ThemeHelper.changeButtonColor(requireActivity(), dialogView.displayPollResults);
|
||||||
ThemeHelper.changeButtonColor(requireActivity(), dialogView.displayUpdatesFromPeople);
|
ThemeHelper.changeButtonColor(requireActivity(), dialogView.displayUpdatesFromPeople);
|
||||||
ThemeHelper.changeButtonColor(requireActivity(), dialogView.displayFollows);
|
ThemeHelper.changeButtonColor(requireActivity(), dialogView.displayFollows);
|
||||||
|
ThemeHelper.changeButtonColor(requireActivity(), dialogView.displayUpdates);
|
||||||
|
|
||||||
DrawableCompat.setTintList(DrawableCompat.wrap(dialogView.displayAllCategories.getThumbDrawable()), ThemeHelper.getSwitchCompatThumbDrawable(requireActivity()));
|
DrawableCompat.setTintList(DrawableCompat.wrap(dialogView.displayAllCategories.getThumbDrawable()), ThemeHelper.getSwitchCompatThumbDrawable(requireActivity()));
|
||||||
DrawableCompat.setTintList(DrawableCompat.wrap(dialogView.displayAllCategories.getTrackDrawable()), ThemeHelper.getSwitchCompatTrackDrawable(requireActivity()));
|
DrawableCompat.setTintList(DrawableCompat.wrap(dialogView.displayAllCategories.getTrackDrawable()), ThemeHelper.getSwitchCompatTrackDrawable(requireActivity()));
|
||||||
|
@ -125,6 +127,7 @@ public class FragmentNotificationContainer extends Fragment {
|
||||||
dialogView.displayPollResults.setChecked(true);
|
dialogView.displayPollResults.setChecked(true);
|
||||||
dialogView.displayUpdatesFromPeople.setChecked(true);
|
dialogView.displayUpdatesFromPeople.setChecked(true);
|
||||||
dialogView.displayFollows.setChecked(true);
|
dialogView.displayFollows.setChecked(true);
|
||||||
|
dialogView.displayUpdates.setChecked(true);
|
||||||
String excludedCategories = sharedpreferences.getString(getString(R.string.SET_EXCLUDED_NOTIFICATIONS_TYPE) + BaseMainActivity.currentUserID + BaseMainActivity.currentInstance, null);
|
String excludedCategories = sharedpreferences.getString(getString(R.string.SET_EXCLUDED_NOTIFICATIONS_TYPE) + BaseMainActivity.currentUserID + BaseMainActivity.currentInstance, null);
|
||||||
List<String> excludedCategoriesList = new ArrayList<>();
|
List<String> excludedCategoriesList = new ArrayList<>();
|
||||||
if (excludedCategories != null) {
|
if (excludedCategories != null) {
|
||||||
|
@ -155,6 +158,10 @@ public class FragmentNotificationContainer extends Fragment {
|
||||||
excludedCategoriesList.add("follow");
|
excludedCategoriesList.add("follow");
|
||||||
dialogView.displayFollows.setChecked(false);
|
dialogView.displayFollows.setChecked(false);
|
||||||
break;
|
break;
|
||||||
|
case "update":
|
||||||
|
excludedCategoriesList.add("update");
|
||||||
|
dialogView.displayUpdates.setChecked(false);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -173,6 +180,8 @@ public class FragmentNotificationContainer extends Fragment {
|
||||||
notificationType = "status";
|
notificationType = "status";
|
||||||
} else if (checkedId == R.id.display_follows) {
|
} else if (checkedId == R.id.display_follows) {
|
||||||
notificationType = "follow";
|
notificationType = "follow";
|
||||||
|
} else if (checkedId == R.id.display_updates) {
|
||||||
|
notificationType = "update";
|
||||||
}
|
}
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
excludedCategoriesList.remove(notificationType);
|
excludedCategoriesList.remove(notificationType);
|
||||||
|
|
|
@ -83,6 +83,9 @@ public class FedilabNotificationPageAdapter extends FragmentStatePagerAdapter {
|
||||||
case 6:
|
case 6:
|
||||||
bundle.putSerializable(Helper.ARG_NOTIFICATION_TYPE, FragmentMastodonNotification.NotificationTypeEnum.FOLLOWS);
|
bundle.putSerializable(Helper.ARG_NOTIFICATION_TYPE, FragmentMastodonNotification.NotificationTypeEnum.FOLLOWS);
|
||||||
break;
|
break;
|
||||||
|
case 7:
|
||||||
|
bundle.putSerializable(Helper.ARG_NOTIFICATION_TYPE, FragmentMastodonNotification.NotificationTypeEnum.UPDATES);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fragmentMastodonNotification.setArguments(bundle);
|
fragmentMastodonNotification.setArguments(bundle);
|
||||||
|
@ -91,6 +94,6 @@ public class FedilabNotificationPageAdapter extends FragmentStatePagerAdapter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getCount() {
|
public int getCount() {
|
||||||
return extended ? 7 : 2;
|
return extended ? 8 : 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -102,6 +102,13 @@
|
||||||
android:text="@string/notif_display_follows"
|
android:text="@string/notif_display_follows"
|
||||||
app:icon="@drawable/ic_baseline_person_add_alt_1_24" />
|
app:icon="@drawable/ic_baseline_person_add_alt_1_24" />
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/display_updates"
|
||||||
|
style="@style/Widget.App.Button.IconOnly"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/notif_display_updates"
|
||||||
|
app:icon="@drawable/ic_baseline_edit_24" />
|
||||||
</com.google.android.material.button.MaterialButtonToggleGroup>
|
</com.google.android.material.button.MaterialButtonToggleGroup>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1987,4 +1987,6 @@
|
||||||
<string name="profiles">Profiles</string>
|
<string name="profiles">Profiles</string>
|
||||||
<string name="toast_feature_not_supported">Your instance does not seem to support that feature!</string>
|
<string name="toast_feature_not_supported">Your instance does not seem to support that feature!</string>
|
||||||
<string name="watch_trends_for_instance">Watch trends for this instance</string>
|
<string name="watch_trends_for_instance">Watch trends for this instance</string>
|
||||||
|
<string name="notif_update">Edited a message</string>
|
||||||
|
<string name="notif_display_updates">Updates</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in New Issue