load('media'); $heroImage = MediaPresenter::first($configuration, 'hero_image'); $aboutImage = MediaPresenter::first($configuration, 'about_image'); $galleryImages = MediaPresenter::collection($configuration, 'gallery'); return [ 'hero_image_url' => $heroImage['url'] ?? null, 'about_image_url' => $aboutImage['url'] ?? null, 'gallery_images' => $galleryImages, ]; } public function updateHomepage(array $validated): void { $configuration = HomepageConfiguration::instance(); if (isset($validated['hero_image_s3_key'])) { $this->mediaService->replaceSingleS3Key($configuration, $validated['hero_image_s3_key'], 'hero_image', 'hero-image'); } elseif (isset($validated['hero_image']) && $validated['hero_image'] instanceof UploadedFile) { $this->mediaService->replaceSingleFile($configuration, $validated['hero_image'], 'hero_image', 'hero-image'); } if (isset($validated['about_image_s3_key'])) { $this->mediaService->replaceSingleS3Key($configuration, $validated['about_image_s3_key'], 'about_image', 'about-image'); } elseif (isset($validated['about_image']) && $validated['about_image'] instanceof UploadedFile) { $this->mediaService->replaceSingleFile($configuration, $validated['about_image'], 'about_image', 'about-image'); } if (isset($validated['gallery_s3_keys']) || isset($validated['gallery_images_remove'])) { $this->mediaService->syncCollection( $configuration, 'gallery', null, $validated['gallery_images_remove'] ?? null, 10, 'gallery', s3Keys: $validated['gallery_s3_keys'] ?? null, ); } } }