Crear endpoints para obtener listas navegables
Descripción
Para obtener las listas de navegación en la vista de lectura de una story, actualmente, hacemos uso de los mismos endpoints utilizados para mostrar listas de stories en la vista de perfil de autor y en la vista de storylist: los métodos StoryService.getByAuthorSlug() y StorylistService.get().
El hacer uso de estos mismos endpoints conlleva como problema el tener un payload excesivamente grande para los requerimientos del feature, dado que se obtienen párrafos de cada texto, a manera de vista previa, que no son utilizados en el render de los componentes NavigableStoryTeaserComponent y NavigablePublicationTeaserComponent.
Se requiere la implementación de dos nuevos endpoints que permitan obtener la información esencial de las stories en este contexto, haciendo uso de los tipos de retorno PublicationTeaser y StoryNavigationTeaser para las listas de stories retornadas.
Modelos de dominio
StoryNavigationTeaser
interface StoryNavigationTeaser {
title: string;
slug: string;
approximateReadingTime: number;
badLanguage?: boolean;
language: string;
resources: Resource[];
paragraphs: TextBlockContent[];
media: Media[];
paragraphs: Array<never>;
resources: Array<never>;
originalPublication: string;
}
PublicationNavigationTeaser
interface PublicationNavigationTeaser {
publishingOrder: number;
published: boolean;
publishingDate?: string;
story: StoryNavigationTeaser;
}
Tareas
- [ ] Deben crearse dos nuevas queries en GROQ para obtener los datos correspondientes. Inicialmente puede hacerse uso de las consultas
fetchByAuthorSlugdeapi/story.service.tsyfetchBySlugdeapi/storylist.service.tsy utilizar una función de mappeo que elimine el atributoparagraphsy luego proceder a la implementación de las queries. - [ ] Deben crearse dos nuevos endpoints, con tipos de retorno
StoryNavigationTeaseryPublicationNavigationTeaserdisponibles enstory.model.tsypublication.model.tsrespectivamente. - [ ] Deben implementarse dos métodos nuevos en
author.service.tsystorylist.service.tspara obtener las listas correspondientes. - [ ] Deben reemplazarse los tipos
StoryTeaseryPublicationde los componentes de navegaciónNavigableStoryTeaserComponentyNavigablePublicationTeaserComponent
Recursos
- Realizar búsqueda de TODOs en el proyecto con el número de este issue.
@Addin: ¿pudiste analizar un poco lo que se requeriría para llevar adelante este issue? Puedo armar una rama de prototipo con algunas implementaciones preliminares que pueden servirte de guía y subirla como draft PR.
@rolivencia Te lo agradezco, no he podido avanzar con esto porque he tenido unos días complicados y le he dado prioridad a otros asuntos.
@Addin me voy a sentar mañana a darle un nivel más de granularidad a las tareas. ¿Estás disponible para empezar a trabajar en algunas?
@rolivencia Sí, estoy disponible para abordar estos issues.