diff --git a/src/entities/service/media.ts b/src/entities/service/media.ts new file mode 100644 index 0000000..a7b5cbc --- /dev/null +++ b/src/entities/service/media.ts @@ -0,0 +1,11 @@ +import type { LauncherServiceView, MediaKind } from "./types"; + +export const DEFAULT_AMBIENT_MEDIA = "/storage/default.gif"; +export const DEFAULT_AMBIENT_MEDIA_KIND: MediaKind = "gif"; + +export function resolveAmbientMedia(service?: LauncherServiceView): { src: string; kind: MediaKind } { + return { + src: service?.media.ambientVideo ?? DEFAULT_AMBIENT_MEDIA, + kind: service?.media.ambientKind ?? DEFAULT_AMBIENT_MEDIA_KIND, + }; +} diff --git a/src/widgets/service-rail/ServiceRail.tsx b/src/widgets/service-rail/ServiceRail.tsx index d56259d..109c699 100644 --- a/src/widgets/service-rail/ServiceRail.tsx +++ b/src/widgets/service-rail/ServiceRail.tsx @@ -1,9 +1,8 @@ import { ChevronRight } from "lucide-react"; +import { DEFAULT_AMBIENT_MEDIA, resolveAmbientMedia } from "../../entities/service/media"; import type { LauncherServiceView } from "../../entities/service/types"; import { cn } from "../../shared/lib/cn"; -const DEFAULT_RAIL_MEDIA = "/storage/default.gif"; - export function ServiceRail({ services, selectedServiceId, @@ -13,13 +12,12 @@ export function ServiceRail({ selectedServiceId?: string; onSelect: (serviceId: string) => void; }) { - const selectedService = services.find((service) => service.id === selectedServiceId) ?? services[0]; - const railMediaSrc = selectedService?.media.ambientVideo ?? selectedService?.media.coverImage ?? DEFAULT_RAIL_MEDIA; - const railMediaKind = selectedService?.media.ambientKind ?? selectedService?.media.coverKind; + const selectedService = services.find((service) => service.id === selectedServiceId); + const railMedia = resolveAmbientMedia(selectedService); return (