From cc7cdfdd5fa49abffb5fd0e852db66bf6fe2cf14 Mon Sep 17 00:00:00 2001 From: winter Date: Thu, 23 Jan 2025 18:55:52 +0000 Subject: implement blocking users it doesn't work yet for notifications! but i think i got it in most other places --- Digitigrade/Timeline/Timeline.php | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'Digitigrade/Timeline/Timeline.php') diff --git a/Digitigrade/Timeline/Timeline.php b/Digitigrade/Timeline/Timeline.php index b3def28..f53eaa4 100644 --- a/Digitigrade/Timeline/Timeline.php +++ b/Digitigrade/Timeline/Timeline.php @@ -1,6 +1,9 @@ getItems(self::RESULTS_PER_PAGE, self::RESULTS_PER_PAGE * $page); + return $this->getItemsFiltered(self::RESULTS_PER_PAGE, self::RESULTS_PER_PAGE * $page); + } + + /** + * @return TimelineItem[] + */ + private function getItemsFiltered(int $limit, int $offset): array { + $user = UserAccount::findByCurrentSession(); + $items = $this->getItems($limit, $offset); + if ($user == null) + return $items; + // filter out notes from blocked users + return array_filter($items, function (TimelineItem $item) use ($user) { + $obj = $item->getObject(); + if ($obj instanceof Note && $user->actor->blocks($obj->author)) { + return false; + } + return true; + }); } /** -- cgit v1.3