Poll notifications (#1229)

* show poll notifications in the app

* show poll notifications in the app

* allow filtering poll notifications in the poll fragment

* show poll notifications in system notifications
main
Konrad Pozniak 5 years ago committed by GitHub
parent 7ceaa8cbd7
commit 05348ef957
  1. 680
      app/schemas/com.keylesspalace.tusky.db.AppDatabase/16.json
  2. 2
      app/src/main/java/com/keylesspalace/tusky/TuskyApplication.java
  3. 31
      app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java
  4. 10
      app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java
  5. 36
      app/src/main/java/com/keylesspalace/tusky/adapter/StatusViewHolder.java
  6. 1
      app/src/main/java/com/keylesspalace/tusky/db/AccountEntity.kt
  7. 9
      app/src/main/java/com/keylesspalace/tusky/db/AppDatabase.java
  8. 5
      app/src/main/java/com/keylesspalace/tusky/entity/Notification.kt
  9. 11
      app/src/main/java/com/keylesspalace/tusky/entity/Poll.kt
  10. 13
      app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java
  11. 5
      app/src/main/java/com/keylesspalace/tusky/fragment/preference/NotificationPreferencesFragment.kt
  12. 80
      app/src/main/java/com/keylesspalace/tusky/util/NotificationHelper.java
  13. 9
      app/src/main/res/drawable/ic_poll_24dp.xml
  14. 6
      app/src/main/res/layout/item_status.xml
  15. 16
      app/src/main/res/values-ar/strings.xml
  16. 16
      app/src/main/res/values-ca/strings.xml
  17. 20
      app/src/main/res/values-cs/strings.xml
  18. 16
      app/src/main/res/values-cy/strings.xml
  19. 16
      app/src/main/res/values-de/strings.xml
  20. 16
      app/src/main/res/values-eo/strings.xml
  21. 16
      app/src/main/res/values-es/strings.xml
  22. 16
      app/src/main/res/values-eu/strings.xml
  23. 16
      app/src/main/res/values-fa/strings.xml
  24. 16
      app/src/main/res/values-fr/strings.xml
  25. 16
      app/src/main/res/values-hu/strings.xml
  26. 16
      app/src/main/res/values-it/strings.xml
  27. 16
      app/src/main/res/values-ja/strings.xml
  28. 16
      app/src/main/res/values-nl/strings.xml
  29. 20
      app/src/main/res/values-no-rNB/strings.xml
  30. 16
      app/src/main/res/values-oc/strings.xml
  31. 16
      app/src/main/res/values-pl/strings.xml
  32. 16
      app/src/main/res/values-pt-rBR/strings.xml
  33. 16
      app/src/main/res/values-ru/strings.xml
  34. 20
      app/src/main/res/values-sl/strings.xml
  35. 20
      app/src/main/res/values-sv/strings.xml
  36. 16
      app/src/main/res/values-ta/strings.xml
  37. 16
      app/src/main/res/values-tr/strings.xml
  38. 16
      app/src/main/res/values-zh-rCN/strings.xml
  39. 16
      app/src/main/res/values-zh-rHK/strings.xml
  40. 16
      app/src/main/res/values-zh-rMO/strings.xml
  41. 16
      app/src/main/res/values-zh-rSG/strings.xml
  42. 16
      app/src/main/res/values-zh-rTW/strings.xml
  43. 26
      app/src/main/res/values/strings.xml
  44. 6
      app/src/main/res/xml/notification_preferences.xml

@ -0,0 +1,680 @@
{
"formatVersion": 1,
"database": {
"version": 16,
"identityHash": "821df8c72aa78a288b4ae9fe2df21dda",
"entities": [
{
"tableName": "TootEntity",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`uid` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `text` TEXT, `urls` TEXT, `descriptions` TEXT, `contentWarning` TEXT, `inReplyToId` TEXT, `inReplyToText` TEXT, `inReplyToUsername` TEXT, `visibility` INTEGER)",
"fields": [
{
"fieldPath": "uid",
"columnName": "uid",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "urls",
"columnName": "urls",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "descriptions",
"columnName": "descriptions",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "contentWarning",
"columnName": "contentWarning",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "inReplyToId",
"columnName": "inReplyToId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "inReplyToText",
"columnName": "inReplyToText",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "inReplyToUsername",
"columnName": "inReplyToUsername",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "visibility",
"columnName": "visibility",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"uid"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "AccountEntity",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `domain` TEXT NOT NULL, `accessToken` TEXT NOT NULL, `isActive` INTEGER NOT NULL, `accountId` TEXT NOT NULL, `username` TEXT NOT NULL, `displayName` TEXT NOT NULL, `profilePictureUrl` TEXT NOT NULL, `notificationsEnabled` INTEGER NOT NULL, `notificationsMentioned` INTEGER NOT NULL, `notificationsFollowed` INTEGER NOT NULL, `notificationsReblogged` INTEGER NOT NULL, `notificationsFavorited` INTEGER NOT NULL, `notificationsPolls` INTEGER NOT NULL, `notificationSound` INTEGER NOT NULL, `notificationVibration` INTEGER NOT NULL, `notificationLight` INTEGER NOT NULL, `defaultPostPrivacy` INTEGER NOT NULL, `defaultMediaSensitivity` INTEGER NOT NULL, `alwaysShowSensitiveMedia` INTEGER NOT NULL, `mediaPreviewEnabled` INTEGER NOT NULL, `lastNotificationId` TEXT NOT NULL, `activeNotifications` TEXT NOT NULL, `emojis` TEXT NOT NULL, `tabPreferences` TEXT NOT NULL, `notificationsFilter` TEXT NOT NULL)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "domain",
"columnName": "domain",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "accessToken",
"columnName": "accessToken",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "isActive",
"columnName": "isActive",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "accountId",
"columnName": "accountId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "username",
"columnName": "username",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "displayName",
"columnName": "displayName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "profilePictureUrl",
"columnName": "profilePictureUrl",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "notificationsEnabled",
"columnName": "notificationsEnabled",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "notificationsMentioned",
"columnName": "notificationsMentioned",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "notificationsFollowed",
"columnName": "notificationsFollowed",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "notificationsReblogged",
"columnName": "notificationsReblogged",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "notificationsFavorited",
"columnName": "notificationsFavorited",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "notificationsPolls",
"columnName": "notificationsPolls",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "notificationSound",
"columnName": "notificationSound",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "notificationVibration",
"columnName": "notificationVibration",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "notificationLight",
"columnName": "notificationLight",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "defaultPostPrivacy",
"columnName": "defaultPostPrivacy",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "defaultMediaSensitivity",
"columnName": "defaultMediaSensitivity",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "alwaysShowSensitiveMedia",
"columnName": "alwaysShowSensitiveMedia",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "mediaPreviewEnabled",
"columnName": "mediaPreviewEnabled",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastNotificationId",
"columnName": "lastNotificationId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "activeNotifications",
"columnName": "activeNotifications",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "emojis",
"columnName": "emojis",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "tabPreferences",
"columnName": "tabPreferences",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "notificationsFilter",
"columnName": "notificationsFilter",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_AccountEntity_domain_accountId",
"unique": true,
"columnNames": [
"domain",
"accountId"
],
"createSql": "CREATE UNIQUE INDEX `index_AccountEntity_domain_accountId` ON `${TABLE_NAME}` (`domain`, `accountId`)"
}
],
"foreignKeys": []
},
{
"tableName": "InstanceEntity",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`instance` TEXT NOT NULL, `emojiList` TEXT, `maximumTootCharacters` INTEGER, PRIMARY KEY(`instance`))",
"fields": [
{
"fieldPath": "instance",
"columnName": "instance",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "emojiList",
"columnName": "emojiList",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "maximumTootCharacters",
"columnName": "maximumTootCharacters",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"instance"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "TimelineStatusEntity",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`serverId` TEXT NOT NULL, `url` TEXT, `timelineUserId` INTEGER NOT NULL, `authorServerId` TEXT, `inReplyToId` TEXT, `inReplyToAccountId` TEXT, `content` TEXT, `createdAt` INTEGER NOT NULL, `emojis` TEXT, `reblogsCount` INTEGER NOT NULL, `favouritesCount` INTEGER NOT NULL, `reblogged` INTEGER NOT NULL, `favourited` INTEGER NOT NULL, `sensitive` INTEGER NOT NULL, `spoilerText` TEXT, `visibility` INTEGER, `attachments` TEXT, `mentions` TEXT, `application` TEXT, `reblogServerId` TEXT, `reblogAccountId` TEXT, `poll` TEXT, PRIMARY KEY(`serverId`, `timelineUserId`), FOREIGN KEY(`authorServerId`, `timelineUserId`) REFERENCES `TimelineAccountEntity`(`serverId`, `timelineUserId`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields": [
{
"fieldPath": "serverId",
"columnName": "serverId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "timelineUserId",
"columnName": "timelineUserId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "authorServerId",
"columnName": "authorServerId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "inReplyToId",
"columnName": "inReplyToId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "inReplyToAccountId",
"columnName": "inReplyToAccountId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "content",
"columnName": "content",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "createdAt",
"columnName": "createdAt",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "emojis",
"columnName": "emojis",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "reblogsCount",
"columnName": "reblogsCount",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "favouritesCount",
"columnName": "favouritesCount",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "reblogged",
"columnName": "reblogged",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "favourited",
"columnName": "favourited",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "sensitive",
"columnName": "sensitive",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "spoilerText",
"columnName": "spoilerText",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "visibility",
"columnName": "visibility",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "attachments",
"columnName": "attachments",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "mentions",
"columnName": "mentions",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "application",
"columnName": "application",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "reblogServerId",
"columnName": "reblogServerId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "reblogAccountId",
"columnName": "reblogAccountId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "poll",
"columnName": "poll",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"serverId",
"timelineUserId"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_TimelineStatusEntity_authorServerId_timelineUserId",
"unique": false,
"columnNames": [
"authorServerId",
"timelineUserId"
],
"createSql": "CREATE INDEX `index_TimelineStatusEntity_authorServerId_timelineUserId` ON `${TABLE_NAME}` (`authorServerId`, `timelineUserId`)"
}
],
"foreignKeys": [
{
"table": "TimelineAccountEntity",
"onDelete": "NO ACTION",
"onUpdate": "NO ACTION",
"columns": [
"authorServerId",
"timelineUserId"
],
"referencedColumns": [
"serverId",
"timelineUserId"
]
}
]
},
{
"tableName": "TimelineAccountEntity",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`serverId` TEXT NOT NULL, `timelineUserId` INTEGER NOT NULL, `localUsername` TEXT NOT NULL, `username` TEXT NOT NULL, `displayName` TEXT NOT NULL, `url` TEXT NOT NULL, `avatar` TEXT NOT NULL, `emojis` TEXT NOT NULL, PRIMARY KEY(`serverId`, `timelineUserId`))",
"fields": [
{
"fieldPath": "serverId",
"columnName": "serverId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "timelineUserId",
"columnName": "timelineUserId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "localUsername",
"columnName": "localUsername",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "username",
"columnName": "username",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "displayName",
"columnName": "displayName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "avatar",
"columnName": "avatar",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "emojis",
"columnName": "emojis",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"serverId",
"timelineUserId"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "ConversationEntity",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` INTEGER NOT NULL, `id` TEXT NOT NULL, `accounts` TEXT NOT NULL, `unread` INTEGER NOT NULL, `s_id` TEXT NOT NULL, `s_url` TEXT, `s_inReplyToId` TEXT, `s_inReplyToAccountId` TEXT, `s_account` TEXT NOT NULL, `s_content` TEXT NOT NULL, `s_createdAt` INTEGER NOT NULL, `s_emojis` TEXT NOT NULL, `s_favouritesCount` INTEGER NOT NULL, `s_favourited` INTEGER NOT NULL, `s_sensitive` INTEGER NOT NULL, `s_spoilerText` TEXT NOT NULL, `s_attachments` TEXT NOT NULL, `s_mentions` TEXT NOT NULL, `s_showingHiddenContent` INTEGER NOT NULL, `s_expanded` INTEGER NOT NULL, `s_collapsible` INTEGER NOT NULL, `s_collapsed` INTEGER NOT NULL, `s_poll` TEXT, PRIMARY KEY(`id`, `accountId`))",
"fields": [
{
"fieldPath": "accountId",
"columnName": "accountId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "accounts",
"columnName": "accounts",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "unread",
"columnName": "unread",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastStatus.id",
"columnName": "s_id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "lastStatus.url",
"columnName": "s_url",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "lastStatus.inReplyToId",
"columnName": "s_inReplyToId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "lastStatus.inReplyToAccountId",
"columnName": "s_inReplyToAccountId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "lastStatus.account",
"columnName": "s_account",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "lastStatus.content",
"columnName": "s_content",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "lastStatus.createdAt",
"columnName": "s_createdAt",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastStatus.emojis",
"columnName": "s_emojis",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "lastStatus.favouritesCount",
"columnName": "s_favouritesCount",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastStatus.favourited",
"columnName": "s_favourited",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastStatus.sensitive",
"columnName": "s_sensitive",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastStatus.spoilerText",
"columnName": "s_spoilerText",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "lastStatus.attachments",
"columnName": "s_attachments",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "lastStatus.mentions",
"columnName": "s_mentions",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "lastStatus.showingHiddenContent",
"columnName": "s_showingHiddenContent",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastStatus.expanded",
"columnName": "s_expanded",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastStatus.collapsible",
"columnName": "s_collapsible",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastStatus.collapsed",
"columnName": "s_collapsed",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastStatus.poll",
"columnName": "s_poll",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id",
"accountId"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"821df8c72aa78a288b4ae9fe2df21dda\")"
]
}
}

@ -74,7 +74,7 @@ public class TuskyApplication extends Application implements HasActivityInjector
AppDatabase.MIGRATION_5_6, AppDatabase.MIGRATION_6_7, AppDatabase.MIGRATION_7_8,
AppDatabase.MIGRATION_8_9, AppDatabase.MIGRATION_9_10, AppDatabase.MIGRATION_10_11,
AppDatabase.MIGRATION_11_12, AppDatabase.MIGRATION_12_13, AppDatabase.MIGRATION_10_13,
AppDatabase.MIGRATION_13_14, AppDatabase.MIGRATION_14_15)
AppDatabase.MIGRATION_13_14, AppDatabase.MIGRATION_14_15, AppDatabase.MIGRATION_15_16)
.build();
accountManager = new AccountManager(appDatabase);
serviceLocator = new ServiceLocator() {

@ -68,7 +68,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
}
private static final int VIEW_TYPE_MENTION = 0;
private static final int VIEW_TYPE_STATUS = 0;
private static final int VIEW_TYPE_STATUS_NOTIFICATION = 1;
private static final int VIEW_TYPE_FOLLOW = 2;
private static final int VIEW_TYPE_PLACEHOLDER = 3;
@ -77,6 +77,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
private static final InputFilter[] COLLAPSE_INPUT_FILTER = new InputFilter[]{SmartLengthInputFilter.INSTANCE};
private static final InputFilter[] NO_INPUT_FILTER = new InputFilter[0];
private String accountId;
private StatusActionListener statusListener;
private NotificationActionListener notificationActionListener;
private boolean mediaPreviewEnabled;
@ -84,10 +85,12 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
private BidiFormatter bidiFormatter;
private AdapterDataSource<NotificationViewData> dataSource;
public NotificationsAdapter(AdapterDataSource<NotificationViewData> dataSource,
public NotificationsAdapter(String accountId,
AdapterDataSource<NotificationViewData> dataSource,
StatusActionListener statusListener,
NotificationActionListener notificationActionListener) {
super();
this.accountId = accountId;
this.dataSource = dataSource;
this.statusListener = statusListener;
this.notificationActionListener = notificationActionListener;
@ -101,7 +104,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
switch (viewType) {
case VIEW_TYPE_MENTION: {
case VIEW_TYPE_STATUS: {
View view = inflater
.inflate(R.layout.item_status, parent, false);
return new StatusViewHolder(view, useAbsoluteTime);
@ -159,17 +162,20 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
}
NotificationViewData.Concrete concreteNotificaton =
(NotificationViewData.Concrete) notification;
Notification.Type type = concreteNotificaton.getType();
switch (type) {
case MENTION: {
switch (viewHolder.getItemViewType()) {
case VIEW_TYPE_STATUS: {
StatusViewHolder holder = (StatusViewHolder) viewHolder;
StatusViewData.Concrete status = concreteNotificaton.getStatusViewData();
holder.setupWithStatus(status,
statusListener, mediaPreviewEnabled, payloadForHolder);
if(concreteNotificaton.getType() == Notification.Type.POLL) {
holder.setPollInfo(accountId.equals(concreteNotificaton.getAccount().getId()));
} else {
holder.hideStatusInfo();
}
break;
}
case FAVOURITE:
case REBLOG: {
case VIEW_TYPE_STATUS_NOTIFICATION: {
StatusNotificationViewHolder holder = (StatusNotificationViewHolder) viewHolder;
StatusViewData.Concrete statusViewData = concreteNotificaton.getStatusViewData();
if (payloadForHolder == null) {
@ -200,7 +206,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
}
break;
}
case FOLLOW: {
case VIEW_TYPE_FOLLOW: {
if (payloadForHolder == null) {
FollowViewHolder holder = (FollowViewHolder) viewHolder;
holder.setMessage(concreteNotificaton.getAccount(), bidiFormatter);
@ -225,8 +231,9 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
if (notification instanceof NotificationViewData.Concrete) {
NotificationViewData.Concrete concrete = ((NotificationViewData.Concrete) notification);
switch (concrete.getType()) {
case MENTION: {
return VIEW_TYPE_MENTION;
case MENTION:
case POLL: {
return VIEW_TYPE_STATUS;
}
case FAVOURITE:
case REBLOG: {

@ -815,13 +815,13 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
for(int i = 0; i < Status.MAX_POLL_OPTIONS; i++) {
if(i < options.size()) {
long percent = calculatePollPercent(options.get(i).getVotesCount(), poll.getVotesCount());
int percent = options.get(i).getPercent(poll.getVotesCount());
String pollOptionText = pollResults[i].getContext().getString(R.string.poll_option_format, percent, options.get(i).getTitle());
pollResults[i].setText(CustomEmojiHelper.emojifyText(HtmlUtils.fromHtml(pollOptionText), emojis, pollResults[i]));
pollResults[i].setVisibility(View.VISIBLE);
int level = (int) percent * 100;
int level = percent * 100;
pollResults[i].getBackground().setLevel(level);
@ -920,10 +920,4 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
}
private static long calculatePollPercent(int votes, int totalVotes) {
if(votes == 0) {
return 0;
}
return Math.round(votes / (double) totalVotes * 100);
}
}

@ -29,18 +29,19 @@ import com.keylesspalace.tusky.viewdata.StatusViewData;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import at.connyduck.sparkbutton.helpers.Utils;
public class StatusViewHolder extends StatusBaseViewHolder {
private static final InputFilter[] COLLAPSE_INPUT_FILTER = new InputFilter[]{SmartLengthInputFilter.INSTANCE};
private static final InputFilter[] NO_INPUT_FILTER = new InputFilter[0];
private TextView rebloggedBar;
private TextView statusInfo;
private ToggleButton contentCollapseButton;
StatusViewHolder(View itemView, boolean useAbsoluteTime) {
super(itemView, useAbsoluteTime);
rebloggedBar = itemView.findViewById(R.id.status_reblogged);
statusInfo = itemView.findViewById(R.id.status_info);
contentCollapseButton = itemView.findViewById(R.id.button_toggle_content);
}
@ -71,7 +72,7 @@ public class StatusViewHolder extends StatusBaseViewHolder {
@Override
protected void setupWithStatus(StatusViewData.Concrete status, final StatusActionListener listener,
boolean mediaPreviewEnabled, @Nullable Object payloads) {
if (status == null || payloads==null) {
if (status == null || payloads == null) {
if (status == null) {
showContent(false);
} else {
@ -81,30 +82,39 @@ public class StatusViewHolder extends StatusBaseViewHolder {
String rebloggedByDisplayName = status.getRebloggedByUsername();
if (rebloggedByDisplayName == null) {
hideRebloggedByDisplayName();
hideStatusInfo();
} else {
setRebloggedByDisplayName(rebloggedByDisplayName);
statusInfo.setOnClickListener(v -> listener.onOpenReblog(getAdapterPosition()));
}
rebloggedBar.setOnClickListener(v -> listener.onOpenReblog(getAdapterPosition()));}
}
else{
}
} else {
super.setupWithStatus(status, listener, mediaPreviewEnabled, payloads);
}
}
private void setRebloggedByDisplayName(final String name) {
Context context = rebloggedBar.getContext();
Context context = statusInfo.getContext();
String boostedText = context.getString(R.string.status_boosted_format, name);
rebloggedBar.setText(boostedText);
rebloggedBar.setVisibility(View.VISIBLE);
statusInfo.setText(boostedText);
statusInfo.setVisibility(View.VISIBLE);
}
// don't use this on the same ViewHolder as setRebloggedByDisplayName, will cause recycling issues as paddings are changed
void setPollInfo(final boolean ownPoll) {
statusInfo.setText(ownPoll ? R.string.poll_ended_created : R.string.poll_ended_voted);
statusInfo.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.ic_poll_24dp, 0, 0, 0);
statusInfo.setCompoundDrawablePadding(Utils.dpToPx(statusInfo.getContext(), 10));
statusInfo.setPaddingRelative(Utils.dpToPx(statusInfo.getContext(), 28), 0, 0, 0);
statusInfo.setVisibility(View.VISIBLE);
}
private void hideRebloggedByDisplayName() {
if (rebloggedBar == null) {
void hideStatusInfo() {
if (statusInfo == null) {
return;
}
rebloggedBar.setVisibility(View.GONE);
statusInfo.setVisibility(View.GONE);
}
private void setupCollapsedState(final StatusViewData.Concrete status, final StatusActionListener listener) {

@ -41,6 +41,7 @@ data class AccountEntity(@field:PrimaryKey(autoGenerate = true) var id: Long,
var notificationsFollowed: Boolean = true,
var notificationsReblogged: Boolean = true,
var notificationsFavorited: Boolean = true,
var notificationsPolls: Boolean = true,
var notificationSound: Boolean = true,
var notificationVibration: Boolean = true,
var notificationLight: Boolean = true,

@ -30,7 +30,7 @@ import androidx.annotation.NonNull;
@Database(entities = {TootEntity.class, AccountEntity.class, InstanceEntity.class, TimelineStatusEntity.class,
TimelineAccountEntity.class, ConversationEntity.class
}, version = 15)
}, version = 16)
public abstract class AppDatabase extends RoomDatabase {
public abstract TootDao tootDao();
@ -279,4 +279,11 @@ public abstract class AppDatabase extends RoomDatabase {
}
};
public static final Migration MIGRATION_15_16 = new Migration(15, 16) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE `AccountEntity` ADD COLUMN `notificationsPolls` INTEGER NOT NULL DEFAULT 1");
}
};
}

@ -30,7 +30,8 @@ data class Notification(
MENTION("mention"),
REBLOG("reblog"),
FAVOURITE("favourite"),
FOLLOW("follow");
FOLLOW("follow"),
POLL("poll");
companion object {
@ -42,7 +43,7 @@ data class Notification(
}
return UNKNOWN
}
val asList = listOf(MENTION,REBLOG,FAVOURITE,FOLLOW)
val asList = listOf(MENTION, REBLOG, FAVOURITE, FOLLOW, POLL)
}
override fun toString(): String {

@ -2,6 +2,7 @@ package com.keylesspalace.tusky.entity
import com.google.gson.annotations.SerializedName
import java.util.*
import kotlin.math.roundToInt
data class Poll(
val id: String,
@ -30,4 +31,12 @@ data class Poll(
data class PollOption(
val title: String,
@SerializedName("votes_count") val votesCount: Int
)
) {
fun getPercent(totalVotes: Int): Int {
return if (votesCount == 0) {
0
} else {
(votesCount / totalVotes.toDouble() * 100).roundToInt()
}
}
}

@ -222,7 +222,8 @@ public class NotificationsFragment extends SFragment implements
recyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL));
adapter = new NotificationsAdapter(dataSource, this, this);
adapter = new NotificationsAdapter(accountManager.getActiveAccount().getAccountId(),
dataSource, this, this);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
alwaysShowSensitiveMedia = accountManager.getActiveAccount().getAlwaysShowSensitiveMedia();
boolean mediaPreviewEnabled = accountManager.getActiveAccount().getMediaPreviewEnabled();
@ -652,13 +653,15 @@ public class NotificationsFragment extends SFragment implements
private String getNotificationText(Notification.Type type) {
switch (type) {
case MENTION:
return getString(R.string.filter_mentions);
return getString(R.string.notification_mention_name);
case FAVOURITE:
return getString(R.string.filter_favorites);
return getString(R.string.notification_favourite_name);
case REBLOG:
return getString(R.string.filter_boosts);
return getString(R.string.notification_boost_name);
case FOLLOW:
return getString(R.string.filter_follows);
return getString(R.string.notification_follow_name);
case POLL:
return getString(R.string.notification_poll_name);
default:
return "Unknown";
}

@ -62,6 +62,10 @@ class NotificationPreferencesFragment : PreferenceFragmentCompat(), Preference.O
favoritedPref.isChecked = activeAccount.notificationsFavorited
favoritedPref.onPreferenceChangeListener = this
val pollsPref = requirePreference("notificationFilterPolls") as SwitchPreference
pollsPref.isChecked = activeAccount.notificationsPolls
pollsPref.onPreferenceChangeListener = this
val soundPref = requirePreference("notificationAlertSound") as SwitchPreference
soundPref.isChecked = activeAccount.notificationSound
soundPref.onPreferenceChangeListener = this
@ -94,6 +98,7 @@ class NotificationPreferencesFragment : PreferenceFragmentCompat(), Preference.O
"notificationFilterFollows" -> activeAccount.notificationsFollowed = newValue as Boolean
"notificationFilterReblogs" -> activeAccount.notificationsReblogged = newValue as Boolean
"notificationFilterFavourites" -> activeAccount.notificationsFavorited = newValue as Boolean
"notificationFilterPolls" -> activeAccount.notificationsPolls = newValue as Boolean
"notificationAlertSound" -> activeAccount.notificationSound = newValue as Boolean
"notificationAlertVibrate" -> activeAccount.notificationVibration = newValue as Boolean
"notificationAlertLight" -> activeAccount.notificationLight = newValue as Boolean

@ -35,6 +35,8 @@ import androidx.core.app.RemoteInput;
import androidx.core.app.TaskStackBuilder;
import androidx.core.content.ContextCompat;
import androidx.core.text.BidiFormatter;
import android.text.TextUtils;
import android.util.Log;
import com.bumptech.glide.Glide;
@ -48,6 +50,8 @@ import com.keylesspalace.tusky.R;
import com.keylesspalace.tusky.db.AccountEntity;
import com.keylesspalace.tusky.db.AccountManager;
import com.keylesspalace.tusky.entity.Notification;
import com.keylesspalace.tusky.entity.Poll;
import com.keylesspalace.tusky.entity.PollOption;
import com.keylesspalace.tusky.entity.Status;
import com.keylesspalace.tusky.receiver.NotificationClearBroadcastReceiver;
import com.keylesspalace.tusky.receiver.SendStatusBroadcastReceiver;
@ -105,6 +109,7 @@ public class NotificationHelper {
public static final String CHANNEL_FOLLOW = "CHANNEL_FOLLOW";
public static final String CHANNEL_BOOST = "CHANNEL_BOOST";
public static final String CHANNEL_FAVOURITE = "CHANNEL_FAVOURITE";
public static final String CHANNEL_POLL = "CHANNEL_POLL";
/**
* time in minutes between notification checks
@ -159,12 +164,12 @@ public class NotificationHelper {
notificationId++;
builder.setContentTitle(titleForType(context, body, bidiFormatter))
.setContentText(bodyForType(body));
builder.setContentTitle(titleForType(context, body, bidiFormatter, account))
.setContentText(bodyForType(body, context));
if (body.getType() == Notification.Type.MENTION) {
if (body.getType() == Notification.Type.MENTION || body.getType() == Notification.Type.POLL) {
builder.setStyle(new NotificationCompat.BigTextStyle()
.bigText(bodyForType(body)));
.bigText(bodyForType(body, context)));
}
//load the avatar synchronously
@ -337,21 +342,25 @@ public class NotificationHelper {
CHANNEL_MENTION + account.getIdentifier(),
CHANNEL_FOLLOW + account.getIdentifier(),
CHANNEL_BOOST + account.getIdentifier(),
CHANNEL_FAVOURITE + account.getIdentifier()};
CHANNEL_FAVOURITE + account.getIdentifier(),
CHANNEL_POLL + account.getIdentifier(),
};
int[] channelNames = {
R.string.notification_channel_mention_name,
R.string.notification_channel_follow_name,
R.string.notification_channel_boost_name,
R.string.notification_channel_favourite_name
R.string.notification_mention_name,
R.string.notification_follow_name,
R.string.notification_boost_name,
R.string.notification_favourite_name,
R.string.notification_poll_name
};
int[] channelDescriptions = {
R.string.notification_channel_mention_descriptions,
R.string.notification_channel_follow_description,
R.string.notification_channel_boost_description,
R.string.notification_channel_favourite_description
R.string.notification_mention_descriptions,
R.string.notification_follow_description,
R.string.notification_boost_description,
R.string.notification_favourite_description,
R.string.notification_poll_description
};
List<NotificationChannel> channels = new ArrayList<>(4);
List<NotificationChannel> channels = new ArrayList<>(5);
NotificationChannelGroup channelGroup = new NotificationChannelGroup(account.getIdentifier(), account.getFullName());
@ -472,8 +481,13 @@ public class NotificationHelper {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
String channelId = getChannelId(account, notification);
if(channelId == null) {
// unknown notificationtype
return false;
}
//noinspection ConstantConditions
NotificationChannel channel = notificationManager.getNotificationChannel(getChannelId(account, notification));
NotificationChannel channel = notificationManager.getNotificationChannel(channelId);
return channel.getImportance() > NotificationManager.IMPORTANCE_NONE;
}
@ -486,14 +500,15 @@ public class NotificationHelper {
return account.getNotificationsReblogged();
case FAVOURITE:
return account.getNotificationsFavorited();
case POLL:
return account.getNotificationsPolls();
default:
return false;
}
}
private static String getChannelId(AccountEntity account, Notification notification) {
private static @Nullable String getChannelId(AccountEntity account, Notification notification) {
switch (notification.getType()) {
default:
case MENTION:
return CHANNEL_MENTION + account.getIdentifier();
case FOLLOW:
@ -502,6 +517,10 @@ public class NotificationHelper {
return CHANNEL_BOOST + account.getIdentifier();
case FAVOURITE:
return CHANNEL_FAVOURITE + account.getIdentifier();
case POLL:
return CHANNEL_POLL + account.getIdentifier();
default:
return null;
}
}
@ -554,7 +573,7 @@ public class NotificationHelper {
}
@Nullable
private static String titleForType(Context context, Notification notification, BidiFormatter bidiFormatter) {
private static String titleForType(Context context, Notification notification, BidiFormatter bidiFormatter, AccountEntity account) {
String accountName = bidiFormatter.unicodeWrap(notification.getAccount().getName());
switch (notification.getType()) {
case MENTION:
@ -569,22 +588,43 @@ public class NotificationHelper {
case REBLOG:
return String.format(context.getString(R.string.notification_reblog_format),
accountName);
case POLL:
if(notification.getStatus().getAccount().getId().equals(account.getAccountId())) {
return context.getString(R.string.poll_ended_created);
} else {
return context.getString(R.string.poll_ended_voted);
}
}
return null;
}
private static String bodyForType(Notification notification) {
private static String bodyForType(Notification notification, Context context) {
switch (notification.getType()) {
case FOLLOW:
return "@" + notification.getAccount().getUsername();
case MENTION:
case FAVOURITE:
case REBLOG:
if (notification.getStatus().getSensitive()) {
if (!TextUtils.isEmpty(notification.getStatus().getSpoilerText())) {
return notification.getStatus().getSpoilerText();
} else {
return notification.getStatus().getContent().toString();
}
case POLL:
if (!TextUtils.isEmpty(notification.getStatus().getSpoilerText())) {
return notification.getStatus().getSpoilerText();
} else {
StringBuilder builder = new StringBuilder(notification.getStatus().getContent());
builder.append('\n');
Poll poll = notification.getStatus().getPoll();
for(PollOption option: poll.getOptions()) {
int percent = option.getPercent(poll.getVotesCount());
CharSequence optionText = HtmlUtils.fromHtml(context.getString(R.string.poll_option_format, percent, option.getTitle()));
builder.append(optionText);
builder.append('\n');
}
return builder.toString();
}
}
return null;
}

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/tusky_blue"
android:pathData="M19,3L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM9,17L7,17v-7h2v7zM13,17h-2L11,7h2v10zM17,17h-2v-4h2v4z" />
</vector>

@ -13,7 +13,7 @@
android:paddingRight="14dp">
<androidx.emoji.widget.EmojiTextView
android:id="@+id/status_reblogged"
android:id="@+id/status_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/status_reblogged_bar_padding_top"
@ -40,7 +40,7 @@
android:importantForAccessibility="no"
android:scaleType="centerCrop"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/status_reblogged"
app:layout_constraintTop_toBottomOf="@id/status_info"
tools:src="@drawable/avatar_default" />
<com.keylesspalace.tusky.view.RoundedImageView
@ -72,7 +72,7 @@
app:layout_constraintEnd_toStartOf="@id/status_timestamp_info"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toEndOf="@id/status_avatar"
app:layout_constraintTop_toBottomOf="@id/status_reblogged"
app:layout_constraintTop_toBottomOf="@id/status_info"
tools:text="Ente r the void you foooooo" />
<TextView

@ -212,14 +212,14 @@
<string name="media_hide_sensitive">إخفاء الوسائط المعينة كحساسة</string>
<string name="media_hide_none">اظهار الوسائط المعينة كمحتوى حساس دائمًا</string>
<string name="media_hide_all">إخفاء كافة الوسائط دائما</string>
<string name="notification_channel_mention_name">إشارات جديدة</string>
<string name="notification_channel_mention_descriptions">الإخطارات عندما يشار إليك</string>
<string name="notification_channel_follow_name">متابِعون جدد</string>
<string name="notification_channel_follow_description">إخطارات عند تلقي متابعين جدد</string>
<string name="notification_channel_boost_name">الترقيات</string>
<string name="notification_channel_boost_description">إخطارات عندما يقوم أحدهم بترقية تبويقاتي</string>
<string name="notification_channel_favourite_name">المفضلة</string>
<string name="notification_channel_favourite_description">الإشعار عندما يقوم أحدهم بإضافة تبويقاتك إلى مفضلاته</string>
<string name="notification_mention_name">إشارات جديدة</string>
<string name="notification_mention_descriptions">الإخطارات عندما يشار إليك</string>
<string name="notification_follow_name">متابِعون جدد</string>
<string name="notification_follow_description">إخطارات عند تلقي متابعين جدد</string>
<string name="notification_boost_name">الترقيات</string>
<string name="notification_boost_description">إخطارات عندما يقوم أحدهم بترقية تبويقاتي</string>
<string name="notification_favourite_name">المفضلة</string>
<string name="notification_favourite_description">الإشعار عندما يقوم أحدهم بإضافة تبويقاتك إلى مفضلاته</string>
<string name="notification_mention_format">%s أشار إليك</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s و %4$d أخرى</string>
<string name="notification_summary_medium">%1$s, %2$s, و %3$s</string>

@ -168,14 +168,14 @@
<string name="pref_status_text_size">Mida de text de l\'estat</string>
<string name="notification_channel_mention_name">Mencions noves</string>
<string name="notification_channel_mention_descriptions">Notificacions sobre mencions noves</string>
<string name="notification_channel_follow_name">Seguidors nous</string>
<string name="notification_channel_follow_description">Notificacions sobre nous seguidors</string>
<string name="notification_channel_boost_name">Retoots</string>
<string name="notification_channel_boost_description">Notificacions si retootejents els teus toots</string>
<string name="notification_channel_favourite_name">Preferits</string>
<string name="notification_channel_favourite_description">Notificacions si marquen com a preferits els teus toots</string>
<string name="notification_mention_name">Mencions noves</string>
<string name="notification_mention_descriptions">Notificacions sobre mencions noves</string>
<string name="notification_follow_name">Seguidors nous</string>
<string name="notification_follow_description">Notificacions sobre nous seguidors</string>
<string name="notification_boost_name">Retoots</string>
<string name="notification_boost_description">Notificacions si retootejents els teus toots</string>
<string name="notification_favourite_name">Preferits</string>
<string name="notification_favourite_description">Notificacions si marquen com a preferits els teus toots</string>
<string name="notification_mention_format">%s et mencionen</string>

@ -218,14 +218,14 @@
<string name="media_hide_sensitive">Skrýt média označená jako citlivá</string>
<string name="media_hide_none">Vždy zobrazovat média označená jako citlivá</string>
<string name="media_hide_all">Vždy skrývat všechna média</string>
<string name="notification_channel_mention_name">Nové zmínky</string>
<string name="notification_channel_mention_descriptions">Oznámení o nových zmínkách</string>
<string name="notification_channel_follow_name">Noví sledující</string>
<string name="notification_channel_follow_description">Oznámení o nových sledujících</string>
<string name="notification_channel_boost_name">Boosty</string>
<string name="notification_channel_boost_description">Oznámení, když jsou vaše tooty boostnuty</string>
<string name="notification_channel_favourite_name">Oblíbení</string>
<string name="notification_channel_favourite_description">Oznámení, když jsou vaše tooty označeny jako oblíbené</string>
<string name="notification_mention_name">Nové zmínky</string>
<string name="notification_mention_descriptions">Oznámení o nových zmínkách</string>
<string name="notification_follow_name">Noví sledující</string>
<string name="notification_follow_description">Oznámení o nových sledujících</string>
<string name="notification_boost_name">Boosty</string>
<string name="notification_boost_description">Oznámení, když jsou vaše tooty boostnuty</string>
<string name="notification_favourite_name">Oblíbení</string>
<string name="notification_favourite_description">Oznámení, když jsou vaše tooty označeny jako oblíbené</string>
<string name="notification_mention_format">%s vás zmínil/a</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s a dalších %4$d</string>
<string name="notification_summary_medium">%1$s, %2$s a %3$s</string>
@ -386,10 +386,6 @@
<string name="notifications_clear">Vymazat</string>
<string name="notifications_apply_filter">Filtrovat</string>
<string name="filter_favorites">\@string/notification_channel_favourite_name</string>
<string name="filter_boosts">\@string/notification_channel_boost_name</string>
<string name="filter_follows">\@string/notification_channel_follow_name</string>
<string name="filter_mentions">\@string/notification_channel_mention_name</string>
<string name="filter_apply">Použít</string>
<string name="pref_title_bot_overlay">Zobrazovat indikátor pro roboty</string>

@ -183,14 +183,14 @@
<string name="status_text_size_medium">Canolig </string>
<string name="status_text_size_large">Mawr </string>
<string name="status_text_size_largest">Mwyaf </string>
<string name="notification_channel_mention_name">Yn sôn amdanoch o\'r newydd </string>
<string name="notification_channel_mention_descriptions">Hysbysiadau sôn amdanoch o\'r newydd</string>
<string name="notification_channel_follow_name">Dilynwyr Newydd</string>
<string name="notification_channel_follow_description">Hysbysiadau am ddilynwyr newydd </string>
<string name="notification_channel_boost_name">Hybiadau</string>
<string name="notification_channel_boost_description">Hysbysiadau pan gaiff eich tŵtiau eu hybu </string>
<string name="notification_channel_favourite_name">Ffefrynnau</string>
<string name="notification_channel_favourite_description">Hysbysiadau pan fo\'r tŵtiau wedi\'u marcio fel ffefryn </string>
<string name="notification_mention_name">Yn sôn amdanoch o\'r newydd </string>
<string name="notification_mention_descriptions">Hysbysiadau sôn amdanoch o\'r newydd</string>
<string name="notification_follow_name">Dilynwyr Newydd</string>
<string name="notification_follow_description">Hysbysiadau am ddilynwyr newydd </string>
<string name="notification_boost_name">Hybiadau</string>
<string name="notification_boost_description">Hysbysiadau pan gaiff eich tŵtiau eu hybu </string>
<string name="notification_favourite_name">Ffefrynnau</string>
<string name="notification_favourite_description">Hysbysiadau pan fo\'r tŵtiau wedi\'u marcio fel ffefryn </string>
<string name="notification_mention_format">Soniodd %s amdanoch </string>
<string name="notification_summary_large">%1$s, %2$s, %3$s a %4$d eraill</string>
<string name="notification_summary_medium">%1$s, %2$s, a %3$s</string>

@ -215,14 +215,14 @@
<string name="media_hide_sensitive">Verberge Medien welche als heikel makiert sind</string>
<string name="media_hide_none">Medien, die als sensibel markiert sind, immer anzeigen</string>
<string name="media_hide_all">Medien immer verstecken</string>
<string name="notification_channel_mention_name">Neue Erwähnungen</string>
<string name="notification_channel_mention_descriptions">Benachrichtigungen über neue Erwähnungen</string>
<string name="notification_channel_follow_name">Neue Folgende</string>
<string name="notification_channel_follow_description">Benachrichtigunen über neue Folgende</string>
<string name="notification_channel_boost_name">Geteilte Beiträge</string>
<string name="notification_channel_boost_description">Benachrichtigungen wenn deine Beiträge geteilt werden</string>
<string name="notification_channel_favourite_name">Favorisierte Beiträge</string>
<string name="notification_channel_favourite_description">Benachrichtigungen wenn deine Beiträge favorisiert werden</string>
<string name="notification_mention_name">Neue Erwähnungen</string>
<string name="notification_mention_descriptions">Benachrichtigungen über neue Erwähnungen</string>
<string name="notification_follow_name">Neue Folgende</string>
<string name="notification_follow_description">Benachrichtigunen über neue Folgende</string>
<string name="notification_boost_name">Geteilte Beiträge</string>
<string name="notification_boost_description">Benachrichtigungen wenn deine Beiträge geteilt werden</string>
<string name="notification_favourite_name">Favorisierte Beiträge</string>
<string name="notification_favourite_description">Benachrichtigungen wenn deine Beiträge favorisiert werden</string>
<string name="notification_mention_format">%s hat dich erwähnt</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s und %4$d andere</string>
<string name="notification_summary_medium">%1$s, %2$s, und %3$s</string>

@ -214,14 +214,14 @@
<string name="media_hide_sensitive">Kaŝi aŭdovidaĵojn markitajn kiel tiklaj</string>
<string name="media_hide_none">Ĉiam montri aŭdovidaĵojn markitajn kiel tiklaj</string>
<string name="media_hide_all">Ĉiam kaŝi ĉiujn aŭdovidaĵojn</string>
<string name="notification_channel_mention_name">Novaj mencioj</string>
<string name="notification_channel_mention_descriptions">Sciigoj pri novajn menciojn</string>
<string name="notification_channel_follow_name">Novaj sekvantoj</string>
<string name="notification_channel_follow_description">Sciigoj pri novajn sekvantojn</string>
<string name="notification_channel_boost_name">Diskonigoj</string>
<string name="notification_channel_boost_description">Sciigoj kiam viaj mesaĝoj estas diskonigita</string>
<string name="notification_channel_favourite_name">Stelumoj</string>
<string name="notification_channel_favourite_description">Sciigoj kiam viaj mesaĝoj estas stelumitaj</string>
<string name="notification_mention_name">Novaj mencioj</string>
<string name="notification_mention_descriptions">Sciigoj pri novajn menciojn</string>
<string name="notification_follow_name">Novaj sekvantoj</string>
<string name="notification_follow_description">Sciigoj pri novajn sekvantojn</string>
<string name="notification_boost_name">Diskonigoj</string>
<string name="notification_boost_description">Sciigoj kiam viaj mesaĝoj estas diskonigita</string>
<string name="notification_favourite_name">Stelumoj</string>
<string name="notification_favourite_description">Sciigoj kiam viaj mesaĝoj estas stelumitaj</string>
<string name="notification_mention_format">%s menciis vin</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s kaj %4$d aliaj</string>
<string name="notification_summary_medium">%1$s, %2$s, kaj %3$s</string>

@ -201,14 +201,14 @@
<string name="media_hide_sensitive">Ocultar medios marcados como sensibles</string>
<string name="media_hide_none">Mostrar siempre los medios marcados como sensibles</string>
<string name="media_hide_all">Ocultar siempre todos los medios</string>
<string name="notification_channel_mention_name">Nuevas menciones</string>
<string name="notification_channel_mention_descriptions">Notificaciones de nuevas menciones</string>
<string name="notification_channel_follow_name">Nuevos seguidores</string>
<string name="notification_channel_follow_description">Notificaciones de nuevos seguidores</string>
<string name="notification_channel_boost_name">Compartidos</string>
<string name="notification_channel_boost_description">Notificaciones de estados que fueron compartidos</string>
<string name="notification_channel_favourite_name">Favoritos</string>
<string name="notification_channel_favourite_description">Notificaciones de estados que recibieron favorito</string>
<string name="notification_mention_name">Nuevas menciones</string>
<string name="notification_mention_descriptions">Notificaciones de nuevas menciones</string>
<string name="notification_follow_name">Nuevos seguidores</string>
<string name="notification_follow_description">Notificaciones de nuevos seguidores</string>
<string name="notification_boost_name">Compartidos</string>
<string name="notification_boost_description">Notificaciones de estados que fueron compartidos</string>
<string name="notification_favourite_name">Favoritos</string>
<string name="notification_favourite_description">Notificaciones de estados que recibieron favorito</string>
<string name="notification_mention_format">%s te mencionó</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s y %4$d otros</string>
<string name="notification_summary_medium">%1$s, %2$s, y %3$s</string>

@ -187,14 +187,14 @@
<string name="media_hide_sensitive">Ezkutatu eduki mingarri gisa markatutako multimedia</string>
<string name="media_hide_none">Beti erakutsi eduki mingarri gisa markatutako multimedia</string>
<string name="media_hide_all">Beti ezkutatu multimedia guztiak</string>
<string name="notification_channel_mention_name">Aipamen berriak</string>
<string name="notification_channel_mention_descriptions">Aipamen berrien jakinarazpenak</string>
<string name="notification_channel_follow_name">Jarritzaile berriak</string>
<string name="notification_channel_follow_description">Jarraitzaile berrien jakinarazpenak</string>
<string name="notification_channel_boost_name">Bultzadak</string>
<string name="notification_channel_boost_description">Bultzatutako tuten jakinarazpenak</string>
<string name="notification_channel_favourite_name">Gogokoak</string>
<string name="notification_channel_favourite_description">Gogokoen jakinarazpenak</string>
<string name="notification_mention_name">Aipamen berriak</string>
<string name="notification_mention_descriptions">Aipamen berrien jakinarazpenak</string>
<string name="notification_follow_name">Jarritzaile berriak</string>
<string name="notification_follow_description">Jarraitzaile berrien jakinarazpenak</string>
<string name="notification_boost_name">Bultzadak</string>
<string name="notification_boost_description">Bultzatutako tuten jakinarazpenak</string>
<string name="notification_favourite_name">Gogokoak</string>
<string name="notification_favourite_description">Gogokoen jakinarazpenak</string>
<string name="notification_mention_format">%s-k aipatu zaitu</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s eta beste %4$d</string>
<string name="notification_summary_medium">%1$s, %2$s eta %3$s</string>

@ -183,14 +183,14 @@
<string name="media_hide_sensitive">رسانههای نشانگذاری شده به عنوان حساس را پنهان کن</string>
<string name="media_hide_none">رسانههای نشانهگذاری شده به عنوان حساس را همواره نشان بده</string>
<string name="media_hide_all">همه رسانهها را همواره پنهان کن</string>
<string name="notification_channel_mention_name">صدا زدن جدید</string>
<string name="notification_channel_mention_descriptions">هشدار در مورد صدازدن جدید</string>
<string name="notification_channel_follow_name">دنبالکنندههای جدید</string>
<string name="notification_channel_follow_description">هشدارها درمورد دنبالکنندگان جدید</string>
<string name="notification_channel_boost_name">تقویت</string>
<string name="notification_channel_boost_description">وقتی بوقهای شما تقویت شد هشدار بده</string>
<string name="notification_channel_favourite_name">مورد علاقهها</string>
<string name="notification_channel_favourite_description">هشدارها، زمانی که بوقهای شما مورد علاقه قرار گرفت</string>
<string name="notification_mention_name">صدا زدن جدید</string>
<string name="notification_mention_descriptions">هشدار در مورد صدازدن جدید</string>
<string name="notification_follow_name">دنبالکنندههای جدید</string>
<string name="notification_follow_description">هشدارها درمورد دنبالکنندگان جدید</string>
<string name="notification_boost_name">تقویت</string>
<string name="notification_boost_description">وقتی بوقهای شما تقویت شد هشدار بده</string>
<string name="notification_favourite_name">مورد علاقهها</string>
<string name="notification_favourite_description">هشدارها، زمانی که بوقهای شما مورد علاقه قرار گرفت</string>
<string name="notification_mention_format">%s شما را صدا زد</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s و %4$d دیگر</string>
<string name="notification_summary_medium">%1$s, %2$s, و %3$s</string>

@ -218,14 +218,14 @@
<string name="media_hide_sensitive">Masquer les médias marqués comme sensibles</string>
<string name="media_hide_none">Toujours afficher les médias marqués comme sensibles</string>
<string name="media_hide_all">Toujours masquer tous les médias</string>
<string name="notification_channel_mention_name">Nouvelles mentions</string>
<string name="notification_channel_mention_descriptions">Notifications pour les nouvelles mentions</string>
<string name="notification_channel_follow_name">Nouveaux abonnés</string>
<string name="notification_channel_follow_description">Notifications pour les nouveaux abonnés</string>
<string name="notification_channel_boost_name">Boosts</string>
<string name="notification_channel_boost_description">Notifications quand vos pouets sont boostés</string>
<string name="notification_channel_favourite_name">Favoris</string>
<string name="notification_channel_favourite_description">Notifications quand vos pouets sont mis en favoris</string>
<string name="notification_mention_name">Nouvelles mentions</string>
<string name="notification_mention_descriptions">Notifications pour les nouvelles mentions</string>
<string name="notification_follow_name">Nouveaux abonnés</string>
<string name="notification_follow_description">Notifications pour les nouveaux abonnés</string>
<string name="notification_boost_name">Boosts</string>
<string name="notification_boost_description">Notifications quand vos pouets sont boostés</string>
<string name="notification_favourite_name">Favoris</string>
<string name="notification_favourite_description">Notifications quand vos pouets sont mis en favoris</string>
<string name="notification_mention_format">%s vous a mentionné</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s et %4$d autres</string>
<string name="notification_summary_medium">%1$s, %2$s et %3$s</string>

@ -203,14 +203,14 @@
<string name="media_hide_sensitive">Rejtsd el az érzékenynek jelölt médiát</string>
<string name="media_hide_none">Mindig mutasd az érzékenynek jelölt médiát</string>
<string name="media_hide_all">Mindig rejtsd el a média tartalmakat</string>
<string name="notification_channel_mention_name">Új említések</string>
<string name="notification_channel_mention_descriptions">Értesítések új említések esetén</string>
<string name="notification_channel_follow_name">Új követők</string>
<string name="notification_channel_follow_description">Értesítések az új követők esetén</string>
<string name="notification_channel_boost_name">Rebloggok</string>
<string name="notification_channel_boost_description">Értesítések posztjaid rebloggolása esetén</string>
<string name="notification_channel_favourite_name">Kedvencek</string>
<string name="notification_channel_favourite_description">Értesítések mikor Tülköléseid kedvencnek jelölik</string>
<string name="notification_mention_name">Új említések</string>
<string name="notification_mention_descriptions">Értesítések új említések esetén</string>
<string name="notification_follow_name">Új követők</string>
<string name="notification_follow_description">Értesítések az új követők esetén</string>
<string name="notification_boost_name">Rebloggok</string>
<string name="notification_boost_description">Értesítések posztjaid rebloggolása esetén</string>
<string name="notification_favourite_name">Kedvencek</string>
<string name="notification_favourite_description">Értesítések mikor Tülköléseid kedvencnek jelölik</string>
<string name="notification_mention_format">%s megemített téged</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s és még %4$d</string>
<string name="notification_summary_medium">%1$s, %2$s meg %3$s</string>

@ -214,14 +214,14 @@
<string name="media_hide_sensitive">Nascondi media segnati come sensibili</string>
<string name="media_hide_none">Mostra sempre media segnati come sensibili</string>
<string name="media_hide_all">Nascondi sempre tutti i media</string>
<string name="notification_channel_mention_name">Nuove Menzioni</string>
<string name="notification_channel_mention_descriptions">Notifiche quando qualcuno ti menziona</string>
<string name="notification_channel_follow_name">Nuove persone che ti seguono</string>
<string name="notification_channel_follow_description">Notifiche su nuove persone che ti seguono</string>
<string name="notification_channel_boost_name">Boost</string>
<string name="notification_channel_boost_description">Notifiche quando i tuoi toot vengono boostati</string>
<string name="notification_channel_favourite_name">Preferiti</string>
<string name="notification_channel_favourite_description">Notifiche quando i tuoi toot vengono segnati come preferiti</string>
<string name="notification_mention_name">Nuove Menzioni</string>
<string name="notification_mention_descriptions">Notifiche quando qualcuno ti menziona</string>
<string name="notification_follow_name">Nuove persone che ti seguono</string>
<string name="notification_follow_description">Notifiche su nuove persone che ti seguono</string>
<string name="notification_boost_name">Boost</string>
<string name="notification_boost_description">Notifiche quando i tuoi toot vengono boostati</string>
<string name="notification_favourite_name">Preferiti</string>
<string name="notification_favourite_description">Notifiche quando i tuoi toot vengono segnati come preferiti</string>
<string name="notification_mention_format">%s ti ha menzionato</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s e %4$d altri</string>
<string name="notification_summary_medium">%1$s, %2$s e %3$s</string>

@ -206,14 +206,14 @@
<string name="media_hide_sensitive">閲覧注意としてマークされたメディアは隠す</string>
<string name="media_hide_none">閲覧注意としてマークされたメディアも常に表示する</string>
<string name="media_hide_all">全てのメディアを常に隠す</string>
<string name="notification_channel_mention_name">新しい返信</string>
<string name="notification_channel_mention_descriptions">新しい返信の通知</string>
<string name="notification_channel_follow_name">新しいフォロワー</string>
<string name="notification_channel_follow_description">新しいフォロワーの通知</string>
<string name="notification_channel_boost_name">ブースト</string>
<string name="notification_channel_boost_description">あなたのトゥートがブーストされたときの通知</string>
<string name="notification_channel_favourite_name">お気に入り</string>
<string name="notification_channel_favourite_description">あなたのトゥートがお気に入りに登録されたときの通知</string>
<string name="notification_mention_name">新しい返信</string>
<string name="notification_mention_descriptions">新しい返信の通知</string>
<string name="notification_follow_name">新しいフォロワー</string>
<string name="notification_follow_description">新しいフォロワーの通知</string>
<string name="notification_boost_name">ブースト</string>
<string name="notification_boost_description">あなたのトゥートがブーストされたときの通知</string>
<string name="notification_favourite_name">お気に入り</string>
<string name="notification_favourite_description">あなたのトゥートがお気に入りに登録されたときの通知</string>
<string name="notification_mention_format">%sさんが返信しました</string>
<string name="notification_summary_large">%1$sさん、%2$sさん、%3$sさんと他%4$d人</string>
<string name="notification_summary_medium">%1$sさん、%2$sさん、%3$sさん</string>

@ -213,14 +213,14 @@
<string name="media_hide_sensitive">Als gevoelig gemarkeerde media verbergen</string>
<string name="media_hide_none">Als gevoelig gemarkeerde media altijd verbergen</string>
<string name="media_hide_all">Media altijd verbergen</string>
<string name="notification_channel_mention_name">Nieuwe vermeldingen</string>
<string name="notification_channel_mention_descriptions">Meldingen over nieuwe vermeldingen</string>
<string name="notification_channel_follow_name">Nieuwe volgers</string>
<string name="notification_channel_follow_description">Meldingen over nieuwe volgers</string>
<string name="notification_channel_boost_name">Boosts</string>
<string name="notification_channel_boost_description">Meldingen wanneer jouw toots worden geboost</string>
<string name="notification_channel_favourite_name">Favorieten</string>
<string name="notification_channel_favourite_description">Meldingen wanneer jouw toots als favoriet worden gemarkeerd</string>
<string name="notification_mention_name">Nieuwe vermeldingen</string>
<string name="notification_mention_descriptions">Meldingen over nieuwe vermeldingen</string>
<string name="notification_follow_name">Nieuwe volgers</string>
<string name="notification_follow_description">Meldingen over nieuwe volgers</string>
<string name="notification_boost_name">Boosts</string>
<string name="notification_boost_description">Meldingen wanneer jouw toots worden geboost</string>
<string name="notification_favourite_name">Favorieten</string>
<string name="notification_favourite_description">Meldingen wanneer jouw toots als favoriet worden gemarkeerd</string>
<string name="notification_mention_format">%s vermeldde jou</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s en %4$d anderen</string>
<string name="notification_summary_medium">%1$s, %2$s en %3$s</string>

@ -229,12 +229,12 @@
<string name="pref_media_display">Mediavisning</string>
<string name="notification_channel_follow_name">Nye følgere</string>
<string name="notification_channel_follow_description">Varsler om nye følgere</string>
<string name="notification_channel_boost_name">Boosts</string>
<string name="notification_channel_boost_description">Varsler når tootene dine blir boostet</string>
<string name="notification_channel_favourite_name">Favoritter</string>
<string name="notification_channel_favourite_description">Varsler når tootene dine blir favorisert</string>
<string name="notification_follow_name">Nye følgere</string>
<string name="notification_follow_description">Varsler om nye følgere</string>
<string name="notification_boost_name">Boosts</string>
<string name="notification_boost_description">Varsler når tootene dine blir boostet</string>
<string name="notification_favourite_name">Favoritter</string>
<string name="notification_favourite_description">Varsler når tootene dine blir favorisert</string>
<string name="notification_mention_format">%s nevnte deg</string>
@ -302,8 +302,8 @@
<string name="action_remove_from_list">Slett konto fra listen</string>
<string name="pref_default_post_privacy">Standard synlighet for toots</string>
<string name="notification_channel_mention_name">Nye omtaler</string>
<string name="notification_channel_mention_descriptions">Varsler om nye omtaler</string>
<string name="notification_mention_name">Nye omtaler</string>
<string name="notification_mention_descriptions">Varsler om nye omtaler</string>
<string name="about_tusky_license">Tusky er fri og åpen kildekode. Applikasjonen er lisensiert under GNU General Public License versjon 3. Du kan se lisensen her: https://www.gnu.org/licenses/gpl-3.0.en.html</string>
<string name="about_project_site">Hjemmeside:
\n https://tusky.app</string>
@ -400,10 +400,6 @@
<string name="hashtag">Emneord</string>
<string name="notifications_clear">Slett</string>
<string name="notifications_apply_filter">Filter</string>
<string name="filter_favorites">\@string/notification_channel_favourite_name</string>
<string name="filter_boosts">\@string/notification_channel_boost_name</string>
<string name="filter_follows">\@string/notification_channel_follow_name</string>
<string name="filter_mentions">\@string/notification_channel_mention_name</string>
<string name="filter_apply">Bruk</string>
<string name="compose_shortcut_long_label">Skriv Toot</string>

@ -178,14 +178,14 @@
<string name="status_text_size_medium">Mejana</string>
<string name="status_text_size_large">Granda</string>
<string name="status_text_size_largest">Grandassa</string>
<string name="notification_channel_mention_name">Mencions nòvas</string>
<string name="notification_channel_mention_descriptions">Notificacions de mencions noves</string>
<string name="notification_channel_follow_name">Seguidors nòus</string>
<string name="notification_channel_follow_description">Notificacions de nòus seguidors</string>
<string name="notification_channel_boost_name">Retuts</string>
<string name="notification_channel_boost_description">Notificacions de compartiment de vòstres tuts</string>
<string name="notification_channel_favourite_name">Preferits</string>
<string name="notification_channel_favourite_description">Notificacions s’agradan vòstres tuts</string>
<string name="notification_mention_name">Mencions nòvas</string>
<string name="notification_mention_descriptions">Notificacions de mencions noves</string>
<string name="notification_follow_name">Seguidors nòus</string>
<string name="notification_follow_description">Notificacions de nòus seguidors</string>
<string name="notification_boost_name">Retuts</string>
<string name="notification_boost_description">Notificacions de compartiment de vòstres tuts</string>
<string name="notification_favourite_name">Preferits</string>
<string name="notification_favourite_description">Notificacions s’agradan vòstres tuts</string>
<string name="notification_mention_format">%s vos mencionan</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s e %4$d mai</string>
<string name="notification_summary_medium">%1$s, %2$s e %3$s</string>

@ -177,14 +177,14 @@
<string name="status_text_size_medium">Średni</string>
<string name="status_text_size_large">Duży</string>
<string name="status_text_size_largest">Ogromny</string>
<string name="notification_channel_mention_name">Nowe wspomnienia</string>
<string name="notification_channel_mention_descriptions">Powiadomienia o nowych wspomnieniach</string>
<string name="notification_channel_follow_name">Nowi śledzący</string>
<string name="notification_channel_follow_description">Powiadomienia o nowych śledzących</string>
<string name="notification_channel_boost_name">Podbicia</string>
<string name="notification_channel_boost_description">Powiadomienia o podbiciu wpisów</string>
<string name="notification_channel_favourite_name">Ulubione</string>
<string name="notification_channel_favourite_description">Powiadomienia o dodaniu wpisów do ulubionych</string>
<string name="notification_mention_name">Nowe wspomnienia</string>
<string name="notification_mention_descriptions">Powiadomienia o nowych wspomnieniach</string>
<string name="notification_follow_name">Nowi śledzący</string>
<string name="notification_follow_description">Powiadomienia o nowych śledzących</string>
<string name="notification_boost_name">Podbicia</string>
<string name="notification_boost_description">Powiadomienia o podbiciu wpisów</string>
<string name="notification_favourite_name">Ulubione</string>
<string name="notification_favourite_description">Powiadomienia o dodaniu wpisów do ulubionych</string>
<string name="notification_mention_format">%s wspomniał o Tobie</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s i %4$d innych</string>
<string name="notification_summary_medium">%1$s, %2$s, i %3$s</string>

@ -197,14 +197,14 @@
<string name="status_text_size_largest">Maior</string>
<string name="media_hide_sensitive">Ocultar mídia marcada como sensível</string>
<string name="notification_channel_mention_name">Novas Menções</string>
<string name="notification_channel_mention_descriptions">Notificações sobre novas menções</string>
<string name="notification_channel_follow_name">Novos Seguidores</string>
<string name="notification_channel_follow_description">Notificações sobre novos seguidores</string>
<string name="notification_channel_boost_name">Compartilhamentos</string>
<string name="notification_channel_boost_description">Notificações quando seus toots forem compartilhados</string>
<string name="notification_channel_favourite_name">Favoritos</string>
<string name="notification_channel_favourite_description">Notificações quando seus toots forem favoritados</string>
<string name="notification_mention_name">Novas Menções</string>
<string name="notification_mention_descriptions">Notificações sobre novas menções</string>
<string name="notification_follow_name">Novos Seguidores</string>
<string name="notification_follow_description">Notificações sobre novos seguidores</string>
<string name="notification_boost_name">Compartilhamentos</string>
<string name="notification_boost_description">Notificações quando seus toots forem compartilhados</string>
<string name="notification_favourite_name">Favoritos</string>
<string name="notification_favourite_description">Notificações quando seus toots forem favoritados</string>
<string name="notification_mention_format">%s mencionou você</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s e %4$d outros</string>
<string name="notification_summary_medium">%1$s, %2$s, e %3$s</string>

@ -229,14 +229,14 @@
<string name="media_hide_none">Всегда показывать чувствительные медиафайлы</string>
<string name="media_hide_all">Всегда скрывать все медиафайлы</string>
<string name="notification_channel_mention_name">Новые упоминания</string>
<string name="notification_channel_mention_descriptions">Уведомлять о новых упоминаниях</string>
<string name="notification_channel_follow_name">Новые подписчики</string>
<string name="notification_channel_follow_description">Уведомлять о новых подписчиках</string>
<string name="notification_channel_boost_name">Продвижения</string>
<string name="notification_channel_boost_description">Уведомлять, если кто-то продвинул ваши сообщения</string>
<string name="notification_channel_favourite_name">Избранное</string>
<string name="notification_channel_favourite_description">Уведомлять, когда ваши сообщения отмечают как «избранные»</string>
<string name="notification_mention_name">Новые упоминания</string>
<string name="notification_mention_descriptions">Уведомлять о новых упоминаниях</string>
<string name="notification_follow_name">Новые подписчики</string>
<string name="notification_follow_description">Уведомлять о новых подписчиках</string>
<string name="notification_boost_name">Продвижения</string>
<string name="notification_boost_description">Уведомлять, если кто-то продвинул ваши сообщения</string>
<string name="notification_favourite_name">Избранное</string>
<string name="notification_favourite_description">Уведомлять, когда ваши сообщения отмечают как «избранные»</string>
<string name="notification_mention_format">%s упомянул(а) Вас</string>

@ -227,14 +227,14 @@
<string name="pref_media_display">Prikaz medijev</string>
<string name="notification_channel_mention_name">Nove omembe</string>
<string name="notification_channel_mention_descriptions">Obvestila o novih omembah</string>
<string name="notification_channel_follow_name">Novi sledilci</string>
<string name="notification_channel_follow_description">Obvestila o novih sledilcih</string>
<string name="notification_channel_boost_name">Spodbude</string>
<string name="notification_channel_boost_description">Obvestila, ko so vaši tuti spodbujeni</string>
<string name="notification_channel_favourite_name">Priljubljeni</string>
<string name="notification_channel_favourite_description">Obvestila, ko so vaši tuti vzljubljeni</string>
<string name="notification_mention_name">Nove omembe</string>
<string name="notification_mention_descriptions">Obvestila o novih omembah</string>
<string name="notification_follow_name">Novi sledilci</string>
<string name="notification_follow_description">Obvestila o novih sledilcih</string>
<string name="notification_boost_name">Spodbude</string>
<string name="notification_boost_description">Obvestila, ko so vaši tuti spodbujeni</string>
<string name="notification_favourite_name">Priljubljeni</string>
<string name="notification_favourite_description">Obvestila, ko so vaši tuti vzljubljeni</string>
<string name="notification_mention_format">%s vas je omenil-a</string>
@ -403,10 +403,6 @@
<string name="hashtag">Ključnik</string>
<string name="notifications_clear">Počisti</string>
<string name="notifications_apply_filter">Filter</string>
<string name="filter_favorites">\@string/notification_channel_favourite_name</string>
<string name="filter_boosts">\@string/notification_channel_boost_name</string>
<string name="filter_follows">\@string/notification_channel_follow_name</string>
<string name="filter_mentions">\@string/notification_channel_mention_name</string>
<string name="filter_apply">Uporabi</string>
<string name="compose_shortcut_long_label">Sestavi tut</string>

@ -215,14 +215,14 @@
<string name="media_hide_sensitive">Dölj media som markerat känsligt</string>
<string name="media_hide_none">Visa alltid media som markerat känsligt</string>
<string name="media_hide_all">Dölj alltid media</string>
<string name="notification_channel_mention_name">Nya omnämnanden</string>
<string name="notification_channel_mention_descriptions">Notifieringar om nya omnämnanden</string>
<string name="notification_channel_follow_name">Nya följare</string>
<string name="notification_channel_follow_description">Notifieringar för nya följare</string>
<string name="notification_channel_boost_name">Knuffar</string>
<string name="notification_channel_boost_description">Notifieringar när dina toots blir knuffade</string>
<string name="notification_channel_favourite_name">Favoriter</string>
<string name="notification_channel_favourite_description">Notifieringar när dina toots blir markerade som favoriter</string>
<string name="notification_mention_name">Nya omnämnanden</string>
<string name="notification_mention_descriptions">Notifieringar om nya omnämnanden</string>
<string name="notification_follow_name">Nya följare</string>
<string name="notification_follow_description">Notifieringar för nya följare</string>
<string name="notification_boost_name">Knuffar</string>
<string name="notification_boost_description">Notifieringar när dina toots blir knuffade</string>
<string name="notification_favourite_name">Favoriter</string>
<string name="notification_favourite_description">Notifieringar när dina toots blir markerade som favoriter</string>
<string name="notification_mention_format">%s omnämnde dig</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s och %4$d andra</string>
<string name="notification_summary_medium">%1$s, %2$s, och %3$s</string>
@ -385,10 +385,6 @@
<string name="notifications_clear">Rensa</string>
<string name="notifications_apply_filter">Filtrera</string>
<string name="filter_favorites">\@string/notification_channel_favourite_name</string>
<string name="filter_boosts">\@string/notification_channel_boost_name</string>
<string name="filter_follows">\@string/notification_channel_follow_name</string>
<string name="filter_mentions">\@string/notification_channel_mention_name</string>
<string name="filter_apply">Utför</string>
<string name="pref_title_bot_overlay">Visa robotindikator</string>

@ -163,14 +163,14 @@
<string name="post_privacy_unlisted">படியலிடபபடதவரகள</string>
<string name="post_privacy_followers_only">ிபறபவரகள மட</string>
<string name="pref_status_text_size">ி உர அளவ</string>
<string name="notification_channel_mention_name">ிய கிகள</string>
<string name="notification_channel_mention_descriptions">ிய கிகள பறிய அறிிகள</string>
<string name="notification_channel_follow_name">ிய பிபறபவரகள</string>
<string name="notification_channel_follow_description">ிய பிடரபவரகள பறிய அறிிகள</string>
<string name="notification_channel_boost_name">ஊகி</string>
<string name="notification_channel_boost_description">எமத toot மிி.</string>
<string name="notification_channel_favourite_name">ிிதவகள</string>
<string name="notification_channel_favourite_description">எமத toot பிிதவிி.</string>
<string name="notification_mention_name">ிய கிகள</string>
<string name="notification_mention_descriptions">ிய கிகள பறிய அறிிகள</string>
<string name="notification_follow_name">ிய பிபறபவரகள</string>
<string name="notification_follow_description">ிய பிடரபவரகள பறிய அறிிகள</string>
<string name="notification_boost_name">ஊகி</string>
<string name="notification_boost_description">எமத toot மிி.</string>
<string name="notification_favourite_name">ிிதவகள</string>
<string name="notification_favourite_description">எமத toot பிிதவிி.</string>
<string name="notification_mention_format">%s தஙகளிி</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s மற %4$d மறறவரகள</string>
<string name="notification_summary_medium">%1$s, %2$s, மற %3$s</string>

@ -200,14 +200,14 @@
<string name="media_hide_sensitive">Hassas olarak işaretlenmiş medyayı gizle</string>
<string name="media_hide_none">Hassas olarak işaretlenmiş medyayı göster</string>
<string name="media_hide_all">Tüm medyayı gizle</string>
<string name="notification_channel_mention_name">Yeni Bahsedilenler</string>
<string name="notification_channel_mention_descriptions">Yeni bahsedilenler hakkında bildirim</string>
<string name="notification_channel_follow_name">Yeni Takipçiler</string>
<string name="notification_channel_follow_description">Yeni takipçiler hakkında bildirim</string>
<string name="notification_channel_boost_name">Yükseltilenler</string>
<string name="notification_channel_boost_description">Tootların yükseltildiğinde bildirimler</string>
<string name="notification_channel_favourite_name">Favoriler</string>
<string name="notification_channel_favourite_description">Tootların favori olarak işaretlendiğinde</string>
<string name="notification_mention_name">Yeni Bahsedilenler</string>
<string name="notification_mention_descriptions">Yeni bahsedilenler hakkında bildirim</string>
<string name="notification_follow_name">Yeni Takipçiler</string>
<string name="notification_follow_description">Yeni takipçiler hakkında bildirim</string>
<string name="notification_boost_name">Yükseltilenler</string>
<string name="notification_boost_description">Tootların yükseltildiğinde bildirimler</string>
<string name="notification_favourite_name">Favoriler</string>
<string name="notification_favourite_description">Tootların favori olarak işaretlendiğinde</string>
<string name="notification_mention_format">%s senden bahsetti</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s ve %4$d daha</string>
<string name="notification_summary_medium">%1$s, %2$s ve %3$s</string>

@ -194,14 +194,14 @@
<string name="media_hide_sensitive">自动隐藏敏感媒体</string>
<string name="media_hide_none">总是显示敏感媒体</string>
<string name="media_hide_all">总是隐藏所有媒体</string>
<string name="notification_channel_mention_name">被提及</string>
<string name="notification_channel_mention_descriptions">当有用户在嘟文中提及我时</string>
<string name="notification_channel_follow_name">关注者</string>
<string name="notification_channel_follow_description">当有用户关注我时</string>
<string name="notification_channel_boost_name">转嘟</string>
<string name="notification_channel_boost_description">当有用户转嘟了我的嘟文时</string>
<string name="notification_channel_favourite_name">收藏</string>
<string name="notification_channel_favourite_description">当有用户收藏了我的嘟文时</string>
<string name="notification_mention_name">被提及</string>
<string name="notification_mention_descriptions">当有用户在嘟文中提及我时</string>
<string name="notification_follow_name">关注者</string>
<string name="notification_follow_description">当有用户关注我时</string>
<string name="notification_boost_name">转嘟</string>
<string name="notification_boost_description">当有用户转嘟了我的嘟文时</string>
<string name="notification_favourite_name">收藏</string>
<string name="notification_favourite_description">当有用户收藏了我的嘟文时</string>
<string name="notification_mention_format">%s 提及了你</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s 和 %4$d 人</string>
<string name="notification_summary_medium">%1$s, %2$s, 和 %3$s</string>

@ -183,14 +183,14 @@
<string name="media_hide_sensitive">自動隱藏敏感媒體</string>
<string name="media_hide_none">總是顯示敏感媒體</string>
<string name="media_hide_all">總是隱藏所有媒體</string>
<string name="notification_channel_mention_name">被提及</string>
<string name="notification_channel_mention_descriptions">當有使用者在嘟文中提及我時</string>
<string name="notification_channel_follow_name">關注者</string>
<string name="notification_channel_follow_description">當有使用者關注我時</string>
<string name="notification_channel_boost_name">轉嘟</string>
<string name="notification_channel_boost_description">當有使用者轉嘟了我的嘟文時</string>
<string name="notification_channel_favourite_name">收藏</string>
<string name="notification_channel_favourite_description">當有使用者收藏了我的嘟文時</string>
<string name="notification_mention_name">被提及</string>
<string name="notification_mention_descriptions">當有使用者在嘟文中提及我時</string>
<string name="notification_follow_name">關注者</string>
<string name="notification_follow_description">當有使用者關注我時</string>
<string name="notification_boost_name">轉嘟</string>
<string name="notification_boost_description">當有使用者轉嘟了我的嘟文時</string>
<string name="notification_favourite_name">收藏</string>
<string name="notification_favourite_description">當有使用者收藏了我的嘟文時</string>
<string name="notification_mention_format">%s 提及了你</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s 和 %4$d 人</string>
<string name="notification_summary_medium">%1$s, %2$s, 和 %3$s</string>

@ -183,14 +183,14 @@
<string name="media_hide_sensitive">自動隱藏敏感媒體</string>
<string name="media_hide_none">總是顯示敏感媒體</string>
<string name="media_hide_all">總是隱藏所有媒體</string>
<string name="notification_channel_mention_name">被提及</string>
<string name="notification_channel_mention_descriptions">當有使用者在嘟文中提及我時</string>
<string name="notification_channel_follow_name">關注者</string>
<string name="notification_channel_follow_description">當有使用者關注我時</string>
<string name="notification_channel_boost_name">轉嘟</string>
<string name="notification_channel_boost_description">當有使用者轉嘟了我的嘟文時</string>
<string name="notification_channel_favourite_name">收藏</string>
<string name="notification_channel_favourite_description">當有使用者收藏了我的嘟文時</string>
<string name="notification_mention_name">被提及</string>
<string name="notification_mention_descriptions">當有使用者在嘟文中提及我時</string>
<string name="notification_follow_name">關注者</string>
<string name="notification_follow_description">當有使用者關注我時</string>
<string name="notification_boost_name">轉嘟</string>
<string name="notification_boost_description">當有使用者轉嘟了我的嘟文時</string>
<string name="notification_favourite_name">收藏</string>
<string name="notification_favourite_description">當有使用者收藏了我的嘟文時</string>
<string name="notification_mention_format">%s 提及了你</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s 和 %4$d 人</string>
<string name="notification_summary_medium">%1$s, %2$s, 和 %3$s</string>

@ -185,14 +185,14 @@
<string name="media_hide_sensitive">自动隐藏敏感媒体</string>
<string name="media_hide_none">总是显示敏感媒体</string>
<string name="media_hide_all">总是隐藏所有媒体</string>
<string name="notification_channel_mention_name">被提及</string>
<string name="notification_channel_mention_descriptions">当有用户在嘟文中提及我时</string>
<string name="notification_channel_follow_name">关注者</string>
<string name="notification_channel_follow_description">当有用户关注我时</string>
<string name="notification_channel_boost_name">转嘟</string>
<string name="notification_channel_boost_description">当有用户转嘟了我的嘟文时</string>
<string name="notification_channel_favourite_name">被收藏</string>
<string name="notification_channel_favourite_description">当有用户收藏了我的嘟文时</string>
<string name="notification_mention_name">被提及</string>
<string name="notification_mention_descriptions">当有用户在嘟文中提及我时</string>
<string name="notification_follow_name">关注者</string>
<string name="notification_follow_description">当有用户关注我时</string>
<string name="notification_boost_name">转嘟</string>
<string name="notification_boost_description">当有用户转嘟了我的嘟文时</string>
<string name="notification_favourite_name">被收藏</string>
<string name="notification_favourite_description">当有用户收藏了我的嘟文时</string>
<string name="notification_mention_format">%s 提及了你</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s 和 %4$d 人</string>
<string name="notification_summary_medium">%1$s, %2$s, 和 %3$s</string>

@ -183,14 +183,14 @@
<string name="media_hide_sensitive">自動隱藏敏感媒體</string>
<string name="media_hide_none">總是顯示敏感媒體</string>
<string name="media_hide_all">總是隱藏所有媒體</string>
<string name="notification_channel_mention_name">被提及</string>
<string name="notification_channel_mention_descriptions">當有使用者在嘟文中提及我時</string>
<string name="notification_channel_follow_name">關注者</string>
<string name="notification_channel_follow_description">當有使用者關注我時</string>
<string name="notification_channel_boost_name">轉嘟</string>
<string name="notification_channel_boost_description">當有使用者轉嘟了我的嘟文時</string>
<string name="notification_channel_favourite_name">收藏</string>
<string name="notification_channel_favourite_description">當有使用者收藏了我的嘟文時</string>
<string name="notification_mention_name">被提及</string>
<string name="notification_mention_descriptions">當有使用者在嘟文中提及我時</string>
<string name="notification_follow_name">關注者</string>
<string name="notification_follow_description">當有使用者關注我時</string>
<string name="notification_boost_name">轉嘟</string>
<string name="notification_boost_description">當有使用者轉嘟了我的嘟文時</string>
<string name="notification_favourite_name">收藏</string>
<string name="notification_favourite_description">當有使用者收藏了我的嘟文時</string>
<string name="notification_mention_format">%s 提及了你</string>
<string name="notification_summary_large">%1$s, %2$s, %3$s 和 %4$d 人</string>
<string name="notification_summary_medium">%1$s, %2$s, 和 %3$s</string>

@ -200,6 +200,7 @@
<string name="pref_title_notification_filter_follows">followed</string>
<string name="pref_title_notification_filter_reblogs">my posts are boosted</string>
<string name="pref_title_notification_filter_favourites">my posts are favourited</string>
<string name="pref_title_notification_filter_poll">polls have ended</string>
<string name="pref_title_appearance_settings">Appearance</string>
<string name="pref_title_app_theme">App Theme</string>
<string name="pref_title_timelines">Timelines</string>
@ -249,14 +250,16 @@
<string name="media_hide_none">Always show media marked as sensitive</string>
<string name="media_hide_all">Always hide all media</string>
<string name="notification_channel_mention_name">New Mentions</string>
<string name="notification_channel_mention_descriptions">Notifications about new mentions</string>
<string name="notification_channel_follow_name">New Followers</string>
<string name="notification_channel_follow_description">Notifications about new followers</string>
<string name="notification_channel_boost_name">Boosts</string>
<string name="notification_channel_boost_description">Notifications when your toots get boosted</string>
<string name="notification_channel_favourite_name">Favourites</string>
<string name="notification_channel_favourite_description">Notifications when your toots get marked as favourite</string>
<string name="notification_mention_name">New Mentions</string>
<string name="notification_mention_descriptions">Notifications about new mentions</string>
<string name="notification_follow_name">New Followers</string>
<string name="notification_follow_description">Notifications about new followers</string>
<string name="notification_boost_name">Boosts</string>
<string name="notification_boost_description">Notifications when your toots get boosted</string>
<string name="notification_favourite_name">Favourites</string>
<string name="notification_favourite_description">Notifications when your toots get marked as favourite</string>
<string name="notification_poll_name">Polls</string>
<string name="notification_poll_description">Notifications about polls that have ended</string>
<string name="notification_mention_format">%s mentioned you</string>
@ -462,10 +465,6 @@
<string name="hashtag">Hashtag</string>
<string name="notifications_clear">Clear</string>
<string name="notifications_apply_filter">Filter</string>
<string name="filter_favorites">@string/notification_channel_favourite_name</string>
<string name="filter_boosts">@string/notification_channel_boost_name</string>
<string name="filter_follows">@string/notification_channel_follow_name</string>
<string name="filter_mentions">@string/notification_channel_mention_name</string>
<string name="filter_apply">Apply</string>
<string name="compose_shortcut_long_label">Compose Toot</string>
@ -490,5 +489,8 @@
<string name="poll_vote">Vote</string>
<string name="poll_ended_voted">A poll you have voted in has ended</string>
<string name="poll_ended_created">A poll you created has ended</string>
</resources>

@ -39,6 +39,12 @@
android:title="@string/pref_title_notification_filter_favourites"
app:iconSpaceReserved="false" />
<SwitchPreference
android:defaultValue="true"
android:key="notificationFilterPolls"
android:title="@string/pref_title_notification_filter_poll"
app:iconSpaceReserved="false" />
</PreferenceCategory>
<PreferenceCategory

Loading…
Cancel
Save