diff --git a/src/app/api-utlities/@types/index.ts b/src/app/api-utlities/@types/index.ts index d3d29da..dbf066b 100644 --- a/src/app/api-utlities/@types/index.ts +++ b/src/app/api-utlities/@types/index.ts @@ -67,6 +67,15 @@ export type TextResponse = Root<{ _znachenie: string | null; }>; +export type MediaResponse = Root<{ + _name: string; + _foto: { + id: string; + url: string; + }; + _klyuchNeIzmenya: string; +}>; + export type Team = Root<{ _foto: Image[]; _zvanie: string; diff --git a/src/app/api-utlities/presenters/index.ts b/src/app/api-utlities/presenters/index.ts index a76aabe..88d829a 100644 --- a/src/app/api-utlities/presenters/index.ts +++ b/src/app/api-utlities/presenters/index.ts @@ -1,5 +1,7 @@ import { isEmpty } from 'lodash'; +import { MediaItem } from '@/shared/types/media.type'; + import { Certificate, Charity, @@ -7,6 +9,7 @@ import { History, Image, Job, + MediaResponse, Partner, Review, Select, @@ -88,6 +91,17 @@ export const presentTexts = (texts: TextResponse) => value: item._znachenie, })); +export const presentMedia = (media: MediaResponse) => { + return media.records.map((record) => ({ + key: record._klyuchNeIzmenya, + name: record._name, + photo: { + id: record._foto.id, + url: record._foto.url, + }, + })); +}; + export const presentReviews = (reviews: Review) => reviews.records.map((review) => ({ id: review.id, diff --git a/src/app/api-utlities/requests/common.ts b/src/app/api-utlities/requests/common.ts index 136dd39..5b24ada 100644 --- a/src/app/api-utlities/requests/common.ts +++ b/src/app/api-utlities/requests/common.ts @@ -122,6 +122,19 @@ export const textsRequest = { }, }; +export const mediaRequest = { + _mediaKontent: { + records: { + _name: true, + _foto: { + id: true, + url: true, + }, + _klyuchNeIzmenya: true, + }, + }, +}; + export const teamRequest = { _komanda: { records: { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 78cfcfc..7134cb9 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,8 +2,10 @@ import type { Metadata } from 'next'; import { Inter } from 'next/font/google'; import { textControlApi } from '@/shared/language/api/text-control.api'; +import { mediaControlApi } from '@/shared/media/api/media-control.api'; import { Providers } from '@/shared/providers/providers'; import { makeStore } from '@/shared/store'; +import { MediaItem } from '@/shared/types/media.type'; import { TextItem } from '@/shared/types/text.types'; import { Footer } from '@/widgets/footer'; @@ -29,10 +31,15 @@ export default async function RootLayout({ }>) { const store = makeStore(); - const response = await store.dispatch( + // Запрос текстов + const textResponse = await store.dispatch( textControlApi.endpoints.fetchText.initiate(), ); + // Запрос медиа + const mediaResponse = await store.dispatch( + mediaControlApi.endpoints.fetchMedia.initiate(), + ); return ( - +
{children}