itube-specs 0.0.960 → 0.0.962
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -103,15 +103,11 @@ function onImageError() {
|
|
|
103
103
|
imageError.value = true;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
/** В
|
|
107
|
-
const visibleParameters = computed(() =>
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
props.card.parameters.find(item => !isAge(item)),
|
|
112
|
-
props.card.parameters.find(isAge),
|
|
113
|
-
].filter(item => item !== undefined);
|
|
114
|
-
});
|
|
106
|
+
/** В строке только телосложение и возраст: остальные параметры (этничность и прочее) в карточку не идут. */
|
|
107
|
+
const visibleParameters = computed(() => [
|
|
108
|
+
props.card.parameters.find(item => item.title === 'guy_type'),
|
|
109
|
+
props.card.parameters.find(item => item.title === 'age'),
|
|
110
|
+
].filter(item => item !== undefined));
|
|
115
111
|
|
|
116
112
|
function getValue(item: { title?: string; value?: string }) {
|
|
117
113
|
if (item.title === 'age') {
|
|
@@ -200,6 +196,7 @@ function getValue(item: { title?: string; value?: string }) {
|
|
|
200
196
|
|
|
201
197
|
.card-model__info-country {
|
|
202
198
|
border-radius: 2px;
|
|
199
|
+
object-fit: cover;
|
|
203
200
|
}
|
|
204
201
|
|
|
205
202
|
.card-model__parameters {
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@ const makeRaw = (overrides = {}) => ({
|
|
|
8
8
|
primary_image_url: 'https://img.com/primary.jpg',
|
|
9
9
|
guid: 'model-1',
|
|
10
10
|
parameters: [
|
|
11
|
-
{ name: '
|
|
11
|
+
{ name: 'nationality_iso_codes', values: [{ title: 'United States of America', name: 'US' }] },
|
|
12
12
|
{ name: 'guy_type', values: [{ title: 'Twink' }] },
|
|
13
13
|
{ name: 'ethnicity', values: [{ title: 'Asian' }] },
|
|
14
14
|
{ name: 'age', values: [{ title: '25' }] },
|
|
@@ -23,7 +23,7 @@ describe('cleanModelCard', () => {
|
|
|
23
23
|
expect(result.videosCount).toBe(10);
|
|
24
24
|
expect(result.thumbUrl).toBe('https://img.com/s.webp');
|
|
25
25
|
expect(result.guid).toBe('model-1');
|
|
26
|
-
expect(result.country).toEqual({ title: '
|
|
26
|
+
expect(result.country).toEqual({ title: 'United States of America', name: 'us' });
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
it('параметры: guy_type, ethnicity, age', () => {
|
|
@@ -38,7 +38,7 @@ describe('cleanModelCard', () => {
|
|
|
38
38
|
it('без age → параметры без age', () => {
|
|
39
39
|
const raw = makeRaw({
|
|
40
40
|
parameters: [
|
|
41
|
-
{ name: '
|
|
41
|
+
{ name: 'nationality_iso_codes', values: [{ title: 'United States of America', name: 'US' }] },
|
|
42
42
|
{ name: 'guy_type', values: [{ title: 'Twink' }] },
|
|
43
43
|
{ name: 'ethnicity', values: [{ title: 'Asian' }] },
|
|
44
44
|
],
|
|
@@ -2,7 +2,8 @@ import type { IRawModelCard, IModelCard, IModelParameter } from '../../../types'
|
|
|
2
2
|
import { ThumbSize } from '../../constants/thumb-size';
|
|
3
3
|
|
|
4
4
|
const parameterNames = ['guy_type', 'ethnicity'];
|
|
5
|
-
const
|
|
5
|
+
const firstValue = (card: IRawModelCard, name: string) => card.parameters?.find(item => item.name === name)?.values?.[0];
|
|
6
|
+
const age = (card: IRawModelCard) => firstValue(card, 'age')?.title;
|
|
6
7
|
|
|
7
8
|
/** Нормализует сырую карточку модели к типу IModelCard, включая параметры (возраст, рост, вес) и страну. */
|
|
8
9
|
export const cleanModelCard = (card: IRawModelCard): IModelCard => ({
|
|
@@ -11,9 +12,12 @@ export const cleanModelCard = (card: IRawModelCard): IModelCard => ({
|
|
|
11
12
|
thumbUrl: card.video_thumb_urls?.webp?.[ThumbSize.Small] || '',
|
|
12
13
|
primaryImageUrl: card.primary_image_url || '',
|
|
13
14
|
guid: card.guid || '',
|
|
15
|
+
// Страна лежит в parameters под именем nationality_iso_codes: `name` — код ISO-2 (`us`),
|
|
16
|
+
// он же имя файла флага, `title` — читаемое название. Одноимённое поле верхнего уровня
|
|
17
|
+
// в ответе списка всегда null, параметра `birthplace_country` там нет вовсе.
|
|
14
18
|
country: {
|
|
15
|
-
title: card
|
|
16
|
-
name: card
|
|
19
|
+
title: firstValue(card, 'nationality_iso_codes')?.title || '',
|
|
20
|
+
name: firstValue(card, 'nationality_iso_codes')?.name?.toLowerCase() || '',
|
|
17
21
|
},
|
|
18
22
|
parameters: [
|
|
19
23
|
...(card.parameters?.filter(item => parameterNames.includes(item.name) && item.values?.length).map((item: IModelParameter) => ({
|