Reliably diasplay "like" and "share" notifications

This commit is contained in:
Michael 2021-08-23 15:07:14 +00:00
parent e7f25f2bee
commit c78b7f45c5
3 changed files with 23 additions and 8 deletions

View File

@ -605,7 +605,10 @@ function notification_store_and_send($params, $sitelink, $tsitelink, $hsitelink,
function notification_from_array(array $notification) function notification_from_array(array $notification)
{ {
Logger::info('Start', ['uid' => $notification['uid'], 'id' => $notification['id'], 'type' => $notification['type']]);
if ($notification['type'] == Post\UserNotification::NOTIF_NONE) { if ($notification['type'] == Post\UserNotification::NOTIF_NONE) {
Logger::info('Not an item based notification, quitting', ['uid' => $notification['uid'], 'id' => $notification['id'], 'type' => $notification['type']]);
return false; return false;
} }
@ -636,6 +639,7 @@ function notification_from_array(array $notification)
['uid' => [0, $notification['uid']], 'uri-id' => $notification['target-uri-id'], 'deleted' => false], ['uid' => [0, $notification['uid']], 'uri-id' => $notification['target-uri-id'], 'deleted' => false],
['order' => ['uid' => true]]); ['order' => ['uid' => true]]);
if (empty($item)) { if (empty($item)) {
Logger::info('Item not found', ['uri-id' => $notification['target-uri-id'], 'type' => $notification['type']]);
return false; return false;
} }
@ -646,15 +650,16 @@ function notification_from_array(array $notification)
$subjectPrefix = $l10n->t('[Friendica:Notify]'); $subjectPrefix = $l10n->t('[Friendica:Notify]');
if (Post\ThreadUser::getIgnored($notification['parent-uri-id'], $notification['uid'])) { if (Post\ThreadUser::getIgnored($notification['parent-uri-id'], $notification['uid'])) {
Logger::info('Thread is ignored', ['parent-uri-id' => $notification['parent-uri-id']]); Logger::info('Thread is ignored', ['parent-uri-id' => $notification['parent-uri-id'], 'type' => $notification['type']]);
return false; return false;
} }
// Check to see if there was already a tag notify or comment notify for this post. // Check to see if there was already a tag notify or comment notify for this post.
// If so don't create a second notification // If so don't create a second notification
$condition = ['type' => [Notification\Type::TAG_SELF, Notification\Type::COMMENT, Notification\Type::SHARE], $condition = ['type' => [Notification\Type::TAG_SELF, Notification\Type::COMMENT, Notification\Type::SHARE],
'link' => $params['link'], 'uid' => $notification['uid']]; 'link' => $params['link'], 'verb' => Activity::POST, 'uid' => $notification['uid']];
if (DBA::exists('notify', $condition)) { if (DBA::exists('notify', $condition)) {
Logger::info('Duplicate found, quitting', $condition);
return false; return false;
} }
@ -682,6 +687,7 @@ function notification_from_array(array $notification)
$msg = Notification::getMessage($notification); $msg = Notification::getMessage($notification);
if (empty($msg)) { if (empty($msg)) {
Logger::info('No notification message, quitting', ['uid' => $notification['uid'], 'id' => $notification['id'], 'type' => $notification['type']]);
return false; return false;
} }
@ -696,6 +702,8 @@ function notification_from_array(array $notification)
$hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>'); $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
$itemlink = $params['link']; $itemlink = $params['link'];
Logger::info('Perform notification', ['uid' => $notification['uid'], 'id' => $notification['id'], 'type' => $notification['type']]);
return notification_store_and_send($params, $sitelink, $tsitelink, $hsitelink, $title, $subject, $preamble, $epreamble, $item['body'], $itemlink, true); return notification_store_and_send($params, $sitelink, $tsitelink, $hsitelink, $title, $subject, $preamble, $epreamble, $item['body'], $itemlink, true);
} }

View File

@ -462,10 +462,10 @@ function ping_get_notifications($uid)
&& empty($result[$notification['parent']]) && empty($result[$notification['parent']])
) { ) {
// Should we condense the notifications or show them all? // Should we condense the notifications or show them all?
if (DI::pConfig()->get(local_user(), 'system', 'detailed_notif')) { if (($notification['verb'] != Activity::POST) || DI::pConfig()->get(local_user(), 'system', 'detailed_notif')) {
$result[$notification["id"]] = $notification; $result[] = $notification;
} else { } else {
$result[$notification['parent']] = $notification; $result['p:' . $notification['parent']] = $notification;
} }
} }
} }

View File

@ -222,10 +222,17 @@ class Notification extends BaseModel
} }
} }
if (($notification['type'] == Post\UserNotification::NOTIF_SHARED) && !empty($item['causer-id'])) { if ($item['owner-id'] != $item['author-id']) {
$causer = Contact::getById($item['causer-id'], ['id', 'name', 'url']); $cid = $item['owner-id'];
}
if (!empty($item['causer-id']) && ($item['causer-id'] != $item['author-id'])) {
$cid = $item['causer-id'];
}
if (($notification['type'] == Post\UserNotification::NOTIF_SHARED) && !empty($cid)) {
$causer = Contact::getById($cid, ['id', 'name', 'url']);
if (empty($contact)) { if (empty($contact)) {
Logger::info('Causer not found', ['causer' => $item['causer-id']]); Logger::info('Causer not found', ['causer' => $cid]);
return $message; return $message;
} }
} elseif (in_array($notification['type'], [Post\UserNotification::NOTIF_COMMENT_PARTICIPATION, Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION])) { } elseif (in_array($notification['type'], [Post\UserNotification::NOTIF_COMMENT_PARTICIPATION, Post\UserNotification::NOTIF_ACTIVITY_PARTICIPATION])) {