MCPcopy Create free account
hub / github.com/dailydotdev/apps / normalizeFeedPage

Function normalizeFeedPage

packages/shared/src/graphql/feed.ts:203–250  ·  view source on GitHub ↗
(
  data: FeedData | FeedItemData | FeedV2Data,
)

Source from the content-addressed store, hash-verified

201};
202
203export const normalizeFeedPage = (
204 data: FeedData | FeedItemData | FeedV2Data,
205): FeedItemData => {
206 const firstNode = data.page.edges[0]?.node;
207
208 if (!firstNode) {
209 return {
210 page: {
211 ...data.page,
212 edges: [],
213 },
214 };
215 }
216
217 if (isFeedApiItem(firstNode)) {
218 return data as FeedItemData;
219 }
220
221 if (isFeedV2Item(firstNode)) {
222 return {
223 page: {
224 ...data.page,
225 edges: (data as FeedV2Data).page.edges.reduce<
226 Connection<FeedApiItem>['edges']
227 >((normalizedEdges, edge) => {
228 const normalizedEdge = normalizeFeedV2Edge(edge);
229
230 if (normalizedEdge) {
231 normalizedEdges.push(normalizedEdge);
232 }
233
234 return normalizedEdges;
235 }, []),
236 },
237 };
238 }
239
240 if (isLegacyFeedPost(firstNode)) {
241 return {
242 page: {
243 ...data.page,
244 edges: (data as FeedData).page.edges.map(normalizeLegacyFeedEdge),
245 },
246 };
247 }
248
249 throw new Error('Unsupported feed page shape');
250};
251
252export enum FeedOrigin {
253 TagChip = 'TAG_CHIP',

Callers 3

useDailyFeedFunction · 0.90
feed.spec.tsFile · 0.90
useFeedFunction · 0.90

Calls 5

isFeedApiItemFunction · 0.85
isFeedV2ItemFunction · 0.85
normalizeFeedV2EdgeFunction · 0.85
isLegacyFeedPostFunction · 0.85
pushMethod · 0.80

Tested by

no test coverage detected