cuentoneta icon indicating copy to clipboard operation
cuentoneta copied to clipboard

Crear endpoints para obtener listas navegables

Open rolivencia opened this issue 1 year ago • 2 comments

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 fetchByAuthorSlug de api/story.service.ts y fetchBySlug de api/storylist.service.ts y utilizar una función de mappeo que elimine el atributo paragraphs y luego proceder a la implementación de las queries.
  • [ ] Deben crearse dos nuevos endpoints, con tipos de retorno StoryNavigationTeaser y PublicationNavigationTeaser disponibles en story.model.ts y publication.model.ts respectivamente.
  • [ ] Deben implementarse dos métodos nuevos en author.service.ts y storylist.service.ts para obtener las listas correspondientes.
  • [ ] Deben reemplazarse los tipos StoryTeaser y Publication de los componentes de navegación NavigableStoryTeaserComponent y NavigablePublicationTeaserComponent

Recursos

  • Realizar búsqueda de TODOs en el proyecto con el número de este issue.

rolivencia avatar Sep 18 '24 11:09 rolivencia

@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 avatar Sep 30 '24 14:09 rolivencia

@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 avatar Sep 30 '24 21:09 Addin

@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 avatar Nov 06 '24 03:11 rolivencia

@rolivencia Sí, estoy disponible para abordar estos issues.

Addin avatar Nov 06 '24 09:11 Addin