Как проверить, является ли уведомление упоминанием - PullRequest
1 голос
/ 22 января 2020

Я использую stream- laravel и хочу интегрировать @ -mentions с моей моделью поста. Теперь я добавил в свой activityNotify() пользователя, который упоминается в посте. Это отлично работает. Но когда я получаю фид уведомлений, глагол «пост», потому что активность, конечно, пост.

Для интерфейса я хочу знать, когда это @mention. Каков наилучший способ справиться с этим?

Я уведомляю пользователей @mention вот так

public function activityNotify()
    {
        $notify = collect();
        foreach ($this->mentions as $mention) {
            $userNotification = \FeedManager::getNotificationFeed($mention);
            $notify->push($userNotification);
        }

        return $notify;
    }

Мой вывод уведомлений выглядит так:

0 => array:10 [▼
    "activities" => array:1 [▼
      0 => [
        "actor" => App\User {#1652 ▶}
        "body" => "Hey @john Doe"
        "foreign_id" => "CommunityPost:37"
        "id" => "26428c80-3cee-11ea-8080-80013d33eb64"
        "object" => CommunityPost {#1683 ▶}
        "origin" => null
        "target" => ""
        "time" => "2020-01-22T08:06:53.000000"
        "verb" => "post"
      ]
    ]
    "activity_count" => 1
    "actor_count" => 1
    "created_at" => "2020-01-22T08:06:53.970618"
    "group" => "post_2020-01-22_26428c80-3cee-11ea-8080-80013d33eb64_"
    "id" => "26d6a746-3cee-11ea-8080-80000fca6a99.post_2020-01-22_26428c80-3cee-11ea-8080-80013d33eb64_"
    "is_read" => false
    "is_seen" => false
    "updated_at" => "2020-01-22T08:06:53.970618"
    "verb" => "post"
  ]

1 Ответ

1 голос
/ 22 января 2020

Вероятно, самый простой подход - это проанализировать поле тела действия и найти @username. Когда найдено, визуализируйте активность как упоминание вместо обычной публикации.

Вы также можете добавить пользовательские данные к активности; ie. добавьте настраиваемое поле said_user_ids и включите идентификаторы всех упомянутых пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...