test
1 month ago
analyticsApi.js
1 month ago
classnames.js
1 month ago
dateUtils.js
1 month ago
formatters.js
1 month ago
helpers.js
1 month ago
icons.js
1 month ago
index.js
1 month ago
pluginUtils.js
1 month ago
transformers.js
1 month ago
viewportBoundary.js
1 month ago
transformers.js
42 lines
| 1 | import { decodeHTMLEntities } from "./formatters"; |
| 2 | |
| 3 | const { __ } = wp.i18n; |
| 4 | |
| 5 | /** |
| 6 | * Transforms raw API video data into the flat shape expected by TopMedia component. |
| 7 | * API returns: { video: { id, title, ... }, stats: [ { data: "X views" }, { data: "Xm Xs" } ] } |
| 8 | * Component expects: { id, title, totalViews, avgViewTime } |
| 9 | */ |
| 10 | export const transformMediaItem = (item) => { |
| 11 | const viewsData = item?.stats?.[0]?.data || ""; |
| 12 | const match = viewsData.match(/[\d,]+/); |
| 13 | return { |
| 14 | id: item?.video?.id, |
| 15 | postId: item?.video?.post_id || null, |
| 16 | title: |
| 17 | decodeHTMLEntities(item?.video?.title) || |
| 18 | __("Untitled", "presto-player"), |
| 19 | totalViews: match ? match[0].replace(/,/g, "") : "0", |
| 20 | avgViewTime: item?.stats?.[1]?.data || "0s", |
| 21 | poster_image: item?.poster_image || null, |
| 22 | }; |
| 23 | }; |
| 24 | |
| 25 | /** |
| 26 | * Transforms raw API user data into the flat shape expected by TopUsers component. |
| 27 | * API returns: { user: { id, name, ... }, stats: [ { data: "X views" }, { data: "Xm Xs" } ] } |
| 28 | * Component expects: { id, name, totalViews, avgViewTime } |
| 29 | */ |
| 30 | export const transformUserItem = (item) => { |
| 31 | const viewsData = item?.stats?.[0]?.data || ""; |
| 32 | const match = viewsData.match(/[\d,]+/); |
| 33 | return { |
| 34 | id: item?.user?.id, |
| 35 | name: |
| 36 | decodeHTMLEntities(item?.user?.name) || |
| 37 | __("Unknown User", "presto-player"), |
| 38 | totalViews: match ? match[0].replace(/,/g, "") : "0", |
| 39 | avgViewTime: item?.stats?.[1]?.data || "0s", |
| 40 | }; |
| 41 | }; |
| 42 |