Merge pull request #11360 from annando/announce-notification

Don't create empty announce notifications
This commit is contained in:
Hypolite Petovan 2022-03-19 14:53:34 -04:00 committed by GitHub
commit e738428876
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 9 deletions

View file

@ -220,7 +220,7 @@ class UserNotification
return; return;
} }
if (self::checkExplicitMention($item, $profiles)) { if (($item['verb'] != Activity::ANNOUNCE) && self::checkExplicitMention($item, $profiles)) {
$notification_type = $notification_type | self::TYPE_EXPLICIT_TAGGED; $notification_type = $notification_type | self::TYPE_EXPLICIT_TAGGED;
if (!$notified) { if (!$notified) {
self::insertNotificationByItem(self::TYPE_EXPLICIT_TAGGED, $uid, $item); self::insertNotificationByItem(self::TYPE_EXPLICIT_TAGGED, $uid, $item);
@ -228,7 +228,7 @@ class UserNotification
} }
} }
if (self::checkImplicitMention($item, $profiles)) { if (($item['verb'] != Activity::ANNOUNCE) && self::checkImplicitMention($item, $profiles)) {
$notification_type = $notification_type | self::TYPE_IMPLICIT_TAGGED; $notification_type = $notification_type | self::TYPE_IMPLICIT_TAGGED;
if (!$notified) { if (!$notified) {
self::insertNotificationByItem(self::TYPE_IMPLICIT_TAGGED, $uid, $item); self::insertNotificationByItem(self::TYPE_IMPLICIT_TAGGED, $uid, $item);
@ -252,7 +252,7 @@ class UserNotification
} }
} }
if (self::checkCommentedThread($item, $contacts)) { if (($item['verb'] != Activity::ANNOUNCE) && self::checkCommentedThread($item, $contacts)) {
$notification_type = $notification_type | self::TYPE_THREAD_COMMENT; $notification_type = $notification_type | self::TYPE_THREAD_COMMENT;
if (!$notified) { if (!$notified) {
self::insertNotificationByItem(self::TYPE_THREAD_COMMENT, $uid, $item); self::insertNotificationByItem(self::TYPE_THREAD_COMMENT, $uid, $item);
@ -260,7 +260,7 @@ class UserNotification
} }
} }
if (self::checkCommentedParticipation($item, $contacts)) { if (($item['verb'] != Activity::ANNOUNCE) && self::checkCommentedParticipation($item, $contacts)) {
$notification_type = $notification_type | self::TYPE_COMMENT_PARTICIPATION; $notification_type = $notification_type | self::TYPE_COMMENT_PARTICIPATION;
if (!$notified) { if (!$notified) {
self::insertNotificationByItem(self::TYPE_COMMENT_PARTICIPATION, $uid, $item); self::insertNotificationByItem(self::TYPE_COMMENT_PARTICIPATION, $uid, $item);
@ -268,7 +268,7 @@ class UserNotification
} }
} }
if (self::checkActivityParticipation($item, $contacts)) { if (($item['verb'] != Activity::ANNOUNCE) && self::checkActivityParticipation($item, $contacts)) {
$notification_type = $notification_type | self::TYPE_ACTIVITY_PARTICIPATION; $notification_type = $notification_type | self::TYPE_ACTIVITY_PARTICIPATION;
if (!$notified) { if (!$notified) {
self::insertNotificationByItem(self::TYPE_ACTIVITY_PARTICIPATION, $uid, $item); self::insertNotificationByItem(self::TYPE_ACTIVITY_PARTICIPATION, $uid, $item);

View file

@ -33,6 +33,7 @@ use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\Group; use Friendica\Model\Group;
use Friendica\Model\Post; use Friendica\Model\Post;
use Friendica\Model\User;
use Friendica\Model\Verb; use Friendica\Model\Verb;
use Friendica\Module\Register; use Friendica\Module\Register;
use Friendica\Module\Response; use Friendica\Module\Response;
@ -183,7 +184,12 @@ class Ping extends BaseModule
} }
} }
$navNotifications = array_map(function (Entity\Notification $notification) { $owner = User::getOwnerDataById(local_user());
$navNotifications = array_map(function (Entity\Notification $notification) use ($owner) {
if (($notification->type == Post\UserNotification::TYPE_NONE) && in_array($owner['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP])) {
return null;
}
try { try {
return $this->formattedNavNotification->createFromNotification($notification); return $this->formattedNavNotification->createFromNotification($notification);
} catch (NoMessageException $e) { } catch (NoMessageException $e) {

View file

@ -138,8 +138,7 @@ class Notification extends BaseRepository
*/ */
public function selectDigestForUser(int $uid): Collection\Notifications public function selectDigestForUser(int $uid): Collection\Notifications
{ {
$values = [$uid, Verb::getID(\Friendica\Protocol\Activity::ANNOUNCE), $values = [$uid];
UserNotification::TYPE_COMMENT_PARTICIPATION, UserNotification::TYPE_ACTIVITY_PARTICIPATION, UserNotification::TYPE_THREAD_COMMENT];
$like_condition = ''; $like_condition = '';
if (!$this->pconfig->get($uid, 'system', 'notify_like')) { if (!$this->pconfig->get($uid, 'system', 'notify_like')) {
@ -159,7 +158,7 @@ class Notification extends BaseRepository
WHERE `id` IN ( WHERE `id` IN (
SELECT MAX(`id`) SELECT MAX(`id`)
FROM `notification` FROM `notification`
WHERE `uid` = ? AND NOT (`vid` = ? AND `type` IN (?, ?, ?)) WHERE `uid` = ?
$like_condition $like_condition
$announce_condition $announce_condition
GROUP BY IFNULL(`parent-uri-id`, `actor-id`) GROUP BY IFNULL(`parent-uri-id`, `actor-id`)