From 042ab0a6e42255eb87bfc3e74ff94c00405b6ea2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 3 Sep 2026 13:49:02 +0930 Subject: [PATCH] Convert optional() to nullsafe operator Applies patch 2/21 from pixelfed-staging PR #9: replaces optional($x)->y with $x?->y across 16 files. Pint-clean. --- app/Console/Commands/Media/MediaFilterCleanup.php | 2 +- app/Console/Commands/Status/StatusAvatar.php | 2 +- app/Http/Controllers/Concerns/ManagesCachedPages.php | 2 +- app/Http/Controllers/GroupController.php | 4 ++-- app/Http/Controllers/Groups/GroupsCommentController.php | 2 +- app/Http/Controllers/Groups/GroupsFeedController.php | 2 +- app/Http/Controllers/PersonalAccessTokenController.php | 6 +++--- app/Http/Controllers/ProfileController.php | 4 ++-- app/Http/Resources/AdminRemoteReport.php | 4 ++-- app/Jobs/MediaPipeline/MediaDeletePipeline.php | 4 ++-- app/Models/CustomEmoji.php | 2 +- app/Services/Groups/GroupPostService.php | 2 +- app/Transformer/Api/AccountTransformer.php | 2 +- app/Transformer/Api/Mastodon/v1/AccountTransformer.php | 2 +- app/Util/ActivityPub/Helpers.php | 2 +- resources/views/admin/stories/home.blade.php | 2 +- 16 files changed, 22 insertions(+), 22 deletions(-) diff --git a/app/Console/Commands/Media/MediaFilterCleanup.php b/app/Console/Commands/Media/MediaFilterCleanup.php index e9ad75935..84d31f541 100644 --- a/app/Console/Commands/Media/MediaFilterCleanup.php +++ b/app/Console/Commands/Media/MediaFilterCleanup.php @@ -170,7 +170,7 @@ class MediaFilterCleanup extends Command 'remote_media' => (bool) $m->remote_media ? 'true' : 'false', 'mime' => $m->mime, 'size' => $m->size, - 'created_at' => optional($m->created_at)->toDateTimeString(), + 'created_at' => $m->created_at?->toDateTimeString(), 'media_path' => $m->media_path, ]; diff --git a/app/Console/Commands/Status/StatusAvatar.php b/app/Console/Commands/Status/StatusAvatar.php index 0853681aa..705c1b825 100644 --- a/app/Console/Commands/Status/StatusAvatar.php +++ b/app/Console/Commands/Status/StatusAvatar.php @@ -52,7 +52,7 @@ class StatusAvatar extends Command ['cdn_url', $avatar->cdn_url ?? 'null'], ['remote_url', $avatar->remote_url ?? 'null'], ['size', $avatar->size ?? 'null'], - ['last_fetched_at', optional($avatar->last_fetched_at)->toDateTimeString() ?? 'null'], + ['last_fetched_at', $avatar->last_fetched_at?->toDateTimeString() ?? 'null'], ]); if ($avatar->media_path && ! Str::startsWith($avatar->media_path, 'http')) { diff --git a/app/Http/Controllers/Concerns/ManagesCachedPages.php b/app/Http/Controllers/Concerns/ManagesCachedPages.php index 1ae103696..0e93496d7 100644 --- a/app/Http/Controllers/Concerns/ManagesCachedPages.php +++ b/app/Http/Controllers/Concerns/ManagesCachedPages.php @@ -26,7 +26,7 @@ trait ManagesCachedPages return [ 'title' => $page->title, 'content' => $page->content, - 'created_at' => optional($page->created_at)->format('M d, Y'), + 'created_at' => $page->created_at?->format('M d, Y'), ]; } } diff --git a/app/Http/Controllers/GroupController.php b/app/Http/Controllers/GroupController.php index fc337f136..27231dc7f 100644 --- a/app/Http/Controllers/GroupController.php +++ b/app/Http/Controllers/GroupController.php @@ -70,7 +70,7 @@ class GroupController extends GroupFederationController { abort_unless(config('groups.enabled'), 404); $group = Group::find($gid); - $pid = optional($request->user())->profile_id ?? false; + $pid = $request->user()?->profile_id ?? false; if (! $group || $group->status) { return response()->view('groups.unavailable')->setStatusCode(404); @@ -91,7 +91,7 @@ class GroupController extends GroupFederationController { abort_unless(config('groups.enabled'), 404); $group = Group::whereNull('status')->findOrFail($id); - $pid = optional($request->user())->profile_id ?? false; + $pid = $request->user()?->profile_id ?? false; $group = $this->toJson($group, $pid); diff --git a/app/Http/Controllers/Groups/GroupsCommentController.php b/app/Http/Controllers/Groups/GroupsCommentController.php index f7e0d6227..722cac11a 100644 --- a/app/Http/Controllers/Groups/GroupsCommentController.php +++ b/app/Http/Controllers/Groups/GroupsCommentController.php @@ -35,7 +35,7 @@ class GroupsCommentController extends Controller 'limit' => 'nullable|integer|min:3|max:10', ]); - $pid = optional($request->user())->profile_id; + $pid = $request->user()?->profile_id; $gid = $request->input('gid'); $sid = $request->input('sid'); $cid = $request->has('cid') && $request->filled('cid') ? $request->input('cid') : false; diff --git a/app/Http/Controllers/Groups/GroupsFeedController.php b/app/Http/Controllers/Groups/GroupsFeedController.php index 2cc1ae044..05ac59f54 100644 --- a/app/Http/Controllers/Groups/GroupsFeedController.php +++ b/app/Http/Controllers/Groups/GroupsFeedController.php @@ -114,7 +114,7 @@ class GroupsFeedController extends Controller { $group = Group::findOrFail($id); $user = $request->user(); - $pid = optional($user)->profile_id ?? false; + $pid = $user?->profile_id ?? false; abort_if(! $group->isMember($pid), 404); $max = $request->input('max_id'); $limit = $request->limit ?? 3; diff --git a/app/Http/Controllers/PersonalAccessTokenController.php b/app/Http/Controllers/PersonalAccessTokenController.php index 99d4f3929..51f87925d 100644 --- a/app/Http/Controllers/PersonalAccessTokenController.php +++ b/app/Http/Controllers/PersonalAccessTokenController.php @@ -141,9 +141,9 @@ class PersonalAccessTokenController extends Controller 'name' => $token->name, 'scopes' => $token->scopes ?? [], 'revoked' => (bool) $token->revoked, - 'created_at' => optional($token->created_at)->toJSON(), - 'updated_at' => optional($token->updated_at)->toJSON(), - 'expires_at' => optional($token->expires_at)->toJSON(), + 'created_at' => $token->created_at?->toJSON(), + 'updated_at' => $token->updated_at?->toJSON(), + 'expires_at' => $token->expires_at?->toJSON(), ]; } diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index e70e604c7..bbb28c815 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -76,7 +76,7 @@ class ProfileController extends Controller $key = 'profile:settings:'.$user->id; $ttl = now()->addHours(6); $settings = Cache::remember($key, $ttl, function () use ($user) { - $s = optional($user->user)->settings; + $s = $user->user?->settings; return [ 'crawlable' => $s->crawlable ?? true, @@ -111,7 +111,7 @@ class ProfileController extends Controller $key = 'profile:settings:'.$user->id; $ttl = now()->addHours(6); $settings = Cache::remember($key, $ttl, function () use ($user) { - $s = optional($user->user)->settings; + $s = $user->user?->settings; return [ 'crawlable' => $s->crawlable ?? true, diff --git a/app/Http/Resources/AdminRemoteReport.php b/app/Http/Resources/AdminRemoteReport.php index 0bb2260a9..4f8be924e 100644 --- a/app/Http/Resources/AdminRemoteReport.php +++ b/app/Http/Resources/AdminRemoteReport.php @@ -51,8 +51,8 @@ class AdminRemoteReport extends JsonResource 'statuses' => $statuses, 'message' => $this->comment, 'report_meta' => $this->report_meta, - 'created_at' => optional($this->created_at)->format('c'), - 'action_taken_at' => optional($this->action_taken_at)->format('c'), + 'created_at' => $this->created_at?->format('c'), + 'action_taken_at' => $this->action_taken_at?->format('c'), ]; return $res; diff --git a/app/Jobs/MediaPipeline/MediaDeletePipeline.php b/app/Jobs/MediaPipeline/MediaDeletePipeline.php index cc2248ad8..46577cbed 100644 --- a/app/Jobs/MediaPipeline/MediaDeletePipeline.php +++ b/app/Jobs/MediaPipeline/MediaDeletePipeline.php @@ -85,8 +85,8 @@ class MediaDeletePipeline implements ShouldBeUniqueUntilProcessing, ShouldQueue 'thumbnail_path' => $media->thumbnail_path, 'hls_path' => $media->hls_path, 'remote_media' => (bool) $media->remote_media, - 'created_at' => optional($media->created_at)->toDateTimeString(), - 'updated_at' => optional($media->updated_at)->toDateTimeString(), + 'created_at' => $media->created_at?->toDateTimeString(), + 'updated_at' => $media->updated_at?->toDateTimeString(), ]); return 1; diff --git a/app/Models/CustomEmoji.php b/app/Models/CustomEmoji.php index b11c46d07..54df93792 100644 --- a/app/Models/CustomEmoji.php +++ b/app/Models/CustomEmoji.php @@ -45,7 +45,7 @@ class CustomEmoji extends Model 'id' => $emoji->id, 'shortcode' => $emoji->shortcode, 'media_path' => $emoji->media_path, - 'updated_at' => optional($emoji->updated_at)->toAtomString(), + 'updated_at' => $emoji->updated_at?->toAtomString(), 'disabled' => $emoji->disabled, ]; }); diff --git a/app/Services/Groups/GroupPostService.php b/app/Services/Groups/GroupPostService.php index 8df097ec7..0880de10b 100644 --- a/app/Services/Groups/GroupPostService.php +++ b/app/Services/Groups/GroupPostService.php @@ -49,7 +49,7 @@ class GroupPostService { $gid = $request->input('gid'); $sid = $request->input('sid'); - $pid = optional($request->user())->profile_id ?? false; + $pid = $request->user()?->profile_id ?? false; $group = Group::findOrFail($gid); diff --git a/app/Transformer/Api/AccountTransformer.php b/app/Transformer/Api/AccountTransformer.php index 592836e2c..57d6bdb4c 100644 --- a/app/Transformer/Api/AccountTransformer.php +++ b/app/Transformer/Api/AccountTransformer.php @@ -70,7 +70,7 @@ class AccountTransformer extends Fractal\TransformerAbstract 'is_admin' => (bool) $is_admin, 'created_at' => $profile->created_at->toJSON(), 'header_bg' => $profile->header_bg, - 'last_fetched_at' => optional($profile->last_fetched_at)->toJSON(), + 'last_fetched_at' => $profile->last_fetched_at?->toJSON(), 'pronouns' => PronounService::get($profile->id), 'location' => $profile->location, ]; diff --git a/app/Transformer/Api/Mastodon/v1/AccountTransformer.php b/app/Transformer/Api/Mastodon/v1/AccountTransformer.php index 26868a04e..6c6576987 100644 --- a/app/Transformer/Api/Mastodon/v1/AccountTransformer.php +++ b/app/Transformer/Api/Mastodon/v1/AccountTransformer.php @@ -30,7 +30,7 @@ class AccountTransformer extends Fractal\TransformerAbstract 'followers_count' => (int) $profile->followerCount(), 'following_count' => (int) $profile->followingCount(), 'statuses_count' => (int) $profile->statusCount(), - 'last_status_at' => optional($profile->last_status_at)->toJSON(), + 'last_status_at' => $profile->last_status_at?->toJSON(), 'emojis' => [], 'moved' => null, 'fields' => [], diff --git a/app/Util/ActivityPub/Helpers.php b/app/Util/ActivityPub/Helpers.php index 67159fb2c..c643b0b07 100644 --- a/app/Util/ActivityPub/Helpers.php +++ b/app/Util/ActivityPub/Helpers.php @@ -1034,7 +1034,7 @@ class Helpers if ($inReplyTo) { $reply_to = self::statusFirstOrFetch($inReplyTo); if ($reply_to) { - $reply_to = optional($reply_to)->id; + $reply_to = $reply_to?->id; } } else { $reply_to = null; diff --git a/resources/views/admin/stories/home.blade.php b/resources/views/admin/stories/home.blade.php index d8d00d907..417182570 100644 --- a/resources/views/admin/stories/home.blade.php +++ b/resources/views/admin/stories/home.blade.php @@ -113,7 +113,7 @@ {{$story->type}} {{$story->view_count ?? 0}} {{$story->created_at->diffForHumans(null, true, true, true)}} - {{optional($story->expires_at)->diffForHumans(null, true, true, true)}} + {{$story->expires_at?->diffForHumans(null, true, true, true)}}