parent
1b17600835
commit
ddaab49976
|
@ -130,6 +130,7 @@ public class PushNotificationReceiver extends BroadcastReceiver{
|
|||
Notification.Builder builder;
|
||||
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
|
||||
boolean hasGroup=false;
|
||||
int version=AccountSessionManager.get(accountID).getRawLocalPreferences().getInt("notificationChannelsVersion", 1);
|
||||
List<NotificationChannelGroup> channelGroups=nm.getNotificationChannelGroups();
|
||||
for(NotificationChannelGroup group:channelGroups){
|
||||
if(group.getId().equals(accountID)){
|
||||
|
@ -137,7 +138,7 @@ public class PushNotificationReceiver extends BroadcastReceiver{
|
|||
break;
|
||||
}
|
||||
}
|
||||
if(!hasGroup){
|
||||
if(!hasGroup || version!=2){
|
||||
NotificationChannelGroup group=new NotificationChannelGroup(accountID, accountName);
|
||||
nm.createNotificationChannelGroup(group);
|
||||
List<NotificationChannel> channels=Arrays.stream(PushNotification.Type.values())
|
||||
|
@ -150,6 +151,7 @@ public class PushNotificationReceiver extends BroadcastReceiver{
|
|||
})
|
||||
.collect(Collectors.toList());
|
||||
nm.createNotificationChannels(channels);
|
||||
AccountSessionManager.get(accountID).getRawLocalPreferences().edit().putInt("notificationChannelsVersion", 2).apply();
|
||||
}
|
||||
builder=new Notification.Builder(context, accountID+"_"+pn.notificationType);
|
||||
}else{
|
||||
|
|
|
@ -42,7 +42,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
|
|||
private TextView bannerText;
|
||||
private Button bannerButton;
|
||||
|
||||
private CheckableListItem<Void> mentionsItem, boostsItem, favoritesItem, followersItem, pollsItem;
|
||||
private CheckableListItem<Void> mentionsItem, boostsItem, favoritesItem, followersItem, pollsItem, statusesItem;
|
||||
private List<CheckableListItem<Void>> typeItems;
|
||||
private boolean needUpdateNotificationSettings;
|
||||
private boolean notificationsAllowed=true;
|
||||
|
@ -62,7 +62,8 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
|
|||
boostsItem=new CheckableListItem<>(R.string.notification_type_reblog, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.reblog, this::toggleCheckableItem),
|
||||
favoritesItem=new CheckableListItem<>(R.string.notification_type_favorite, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.favourite, this::toggleCheckableItem),
|
||||
followersItem=new CheckableListItem<>(R.string.notification_type_follow, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.follow, this::toggleCheckableItem),
|
||||
pollsItem=new CheckableListItem<>(R.string.notification_type_poll, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.poll, this::toggleCheckableItem)
|
||||
pollsItem=new CheckableListItem<>(R.string.notification_type_poll, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.poll, this::toggleCheckableItem),
|
||||
statusesItem=new CheckableListItem<>(R.string.notification_type_status, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.status, this::toggleCheckableItem)
|
||||
));
|
||||
|
||||
typeItems=List.of(mentionsItem, boostsItem, favoritesItem, followersItem, pollsItem);
|
||||
|
@ -82,13 +83,15 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
|
|||
|| boostsItem.checked!=ps.alerts.reblog
|
||||
|| favoritesItem.checked!=ps.alerts.favourite
|
||||
|| followersItem.checked!=ps.alerts.follow
|
||||
|| pollsItem.checked!=ps.alerts.poll;
|
||||
|| pollsItem.checked!=ps.alerts.poll
|
||||
|| statusesItem.checked!=ps.alerts.status;
|
||||
if(needUpdateNotificationSettings && PushSubscriptionManager.arePushNotificationsAvailable()){
|
||||
ps.alerts.mention=mentionsItem.checked;
|
||||
ps.alerts.reblog=boostsItem.checked;
|
||||
ps.alerts.favourite=favoritesItem.checked;
|
||||
ps.alerts.follow=followersItem.checked;
|
||||
ps.alerts.poll=pollsItem.checked;
|
||||
ps.alerts.status=statusesItem.checked;
|
||||
AccountSessionManager.getInstance().getAccount(accountID).getPushSubscriptionManager().updatePushSettings(pushSubscription);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,7 +43,9 @@ public class PushNotification extends BaseModel{
|
|||
@SerializedName("follow")
|
||||
FOLLOW(R.string.notification_type_follow),
|
||||
@SerializedName("poll")
|
||||
POLL(R.string.notification_type_poll);
|
||||
POLL(R.string.notification_type_poll),
|
||||
@SerializedName("status")
|
||||
STATUS(R.string.notification_type_status);
|
||||
|
||||
@StringRes
|
||||
public final int localizedName;
|
||||
|
|
|
@ -41,21 +41,23 @@ public class PushSubscription extends BaseModel implements Cloneable{
|
|||
public boolean reblog;
|
||||
public boolean mention;
|
||||
public boolean poll;
|
||||
public boolean status;
|
||||
|
||||
public static Alerts ofAll(){
|
||||
Alerts alerts=new Alerts();
|
||||
alerts.follow=alerts.favourite=alerts.reblog=alerts.mention=alerts.poll=true;
|
||||
alerts.follow=alerts.favourite=alerts.reblog=alerts.mention=alerts.poll=alerts.status=true;
|
||||
return alerts;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return "Alerts{"+
|
||||
"follow="+follow+
|
||||
", favourite="+favourite+
|
||||
"favourite="+favourite+
|
||||
", follow="+follow+
|
||||
", reblog="+reblog+
|
||||
", mention="+mention+
|
||||
", poll="+poll+
|
||||
", status="+status+
|
||||
'}';
|
||||
}
|
||||
|
||||
|
|
|
@ -822,6 +822,7 @@
|
|||
<string name="manage_account">Manage account</string>
|
||||
<string name="switch_to_this_account">Switch to this account</string>
|
||||
<string name="delete_account">Delete account</string>
|
||||
<string name="notification_type_status">New posts</string>
|
||||
<plurals name="user_and_x_more_followed">
|
||||
<item quantity="one">%1$s and %2$,d other followed you</item>
|
||||
<item quantity="other">%1$s and %2$,d others followed you</item>
|
||||
|
|
Loading…
Reference in New Issue