diff --git a/CHANGELOG.md b/CHANGELOG.md index cf59ca7ff..a01ddb061 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ - Set Last-Modified header for atom feeds, fixes #2988 ([c18dcde3](https://github.com/pixelfed/pixelfed/commit/c18dcde3)) - Add instance post/profile embed config setting ([7734dc03](https://github.com/pixelfed/pixelfed/commit/7734dc03)) - Remove remote posts from NetworkTimelineService when processing Tombstones ([2e4f2377](https://github.com/pixelfed/pixelfed/commit/2e4f2377)) +- Limit NotificationService to 400 items ([f6ed560e](https://github.com/pixelfed/pixelfed/commit/f6ed560e)) - ([](https://github.com/pixelfed/pixelfed/commit/)) ## [v0.11.3 (2022-05-09)](https://github.com/pixelfed/pixelfed/compare/v0.11.2...v0.11.3) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index 68558a3c2..276b1fb2d 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -2449,7 +2449,7 @@ class ApiV1Controller extends Controller 'media_ids' => 'sometimes|array|max:' . config_cache('pixelfed.max_album_length'), 'sensitive' => 'nullable', 'visibility' => 'string|in:private,unlisted,public', - 'spoiler_text' => 'sometimes|string|max:140', + 'spoiler_text' => 'sometimes|max:140', ]); if(config('costar.enabled') == true) { diff --git a/app/Services/NotificationService.php b/app/Services/NotificationService.php index cd0044bb7..264f9df31 100644 --- a/app/Services/NotificationService.php +++ b/app/Services/NotificationService.php @@ -194,6 +194,9 @@ class NotificationService { public static function set($id, $val) { + if(self::count($id) > 400) { + Redis::zpopmin(self::CACHE_KEY . $id); + } return Redis::zadd(self::CACHE_KEY . $id, $val, $val); } @@ -220,7 +223,7 @@ class NotificationService { public static function getNotification($id) { - return Cache::remember('service:notification:'.$id, 86400, function() use($id) { + $notification = Cache::remember('service:notification:'.$id, 86400, function() use($id) { $n = Notification::with('item')->find($id); if(!$n) { @@ -238,6 +241,16 @@ class NotificationService { $resource = new Fractal\Resource\Item($n, new NotificationTransformer()); return $fractal->createData($resource)->toArray(); }); + + if(!$notification) { + return; + } + + if(isset($notification['account'])) { + $notification['account'] = AccountService::get($notification['account']['id'], true); + } + + return $notification; } public static function setNotification(Notification $notification)