itube-specs 0.0.258 → 0.0.260

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.
@@ -31,7 +31,7 @@ const chipsItems = computed(() => {
31
31
  const value = cat.split('_')[1] ?? cat;
32
32
  const groupCategory = cat.split('_')[0];
33
33
  const title = props.scheme.find(item => {
34
- return item.name === convertString().toCapitalize(groupCategory)
34
+ return item.name.toLowerCase() === groupCategory.toLowerCase();
35
35
  })?.items.find((item: ISelectItem) => item.value === value)?.title;
36
36
 
37
37
  items.push({
@@ -0,0 +1,38 @@
1
+ import { useRoute } from 'vue-router';
2
+ import { EAsyncData, ELanguage } from '../runtime';
3
+ import type { IVideoCard, PaginatedResponse } from '../types';
4
+
5
+ export const useFetchRelatedVideos = async (
6
+ apiMethod: (...args: any[]) => Promise<PaginatedResponse<IVideoCard>>
7
+ ) => {
8
+ const { locale } = useI18n();
9
+ const lang = locale.value as ELanguage;
10
+ const route = useRoute();
11
+ const PER_PAGE = 14;
12
+
13
+ // const routeName = route.name;
14
+ // const paths = ['playlists-id-slug', 'videos-slug'];
15
+
16
+ // if (!paths.some(item => String(routeName).includes(item))) {
17
+ // return null; // нужно явно проверять, в частности при переходе с видео на категорию слаг подхватывается и иногда выскакивает ошибка
18
+ // }
19
+
20
+ const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
21
+ EAsyncData.RelatedVideos,
22
+ () => useApiFetcher<PaginatedResponse<IVideoCard>>(
23
+ EAsyncData.RelatedVideos,
24
+ apiMethod,
25
+ {
26
+ page: Number(route.query[ 'page' ]) || 1,
27
+ 'per-page': PER_PAGE,
28
+ },
29
+ lang,
30
+ useSlug().value
31
+ )(),
32
+ {
33
+ watch: [() => route.query.page],
34
+ }
35
+ );
36
+
37
+ return { data, status, error };
38
+ };
@@ -0,0 +1,41 @@
1
+ import { useRoute } from 'vue-router';
2
+ import { EAsyncData, ELanguage } from '../runtime';
3
+
4
+ export const useFetchVideoRefererPhrases = (
5
+ apiMethod: (...args: any[]) => Promise<string[]>) => {
6
+ const { locale } = useI18n();
7
+ const lang = locale.value as ELanguage;
8
+ const route = useRoute();
9
+
10
+ const { data, status, error } = useAsyncData<string[]>(
11
+ EAsyncData.RefererPhrases,
12
+ () => useApiFetcher<string[]>(
13
+ EAsyncData.RefererPhrases,
14
+ apiMethod,
15
+ lang,
16
+ useSlug().value,
17
+ undefined
18
+ )(),
19
+ );
20
+
21
+ // async function fetchData() {
22
+ // try {
23
+ // const { $features } = useNuxtApp();
24
+ // const slug = convertString().fromSlug(String(route.params['slug'])) || '';
25
+ //
26
+ // if ($features.FetchByUrlEnabled) {
27
+ // return await VideosApiService.refererPhrasesByUrl(lang, slug, undefined);
28
+ // } else {
29
+ // return await VideosApiService.refererPhrasesById(lang, slug, undefined);
30
+ // }
31
+ // } catch (err) {
32
+ // throw createError({
33
+ // statusCode: 500,
34
+ // statusMessage: 'Error fetching video data',
35
+ // message: err instanceof Error ? err.message : 'An unknown error occurred',
36
+ // });
37
+ // }
38
+ // }
39
+
40
+ return { data, status, error };
41
+ };
@@ -0,0 +1,33 @@
1
+ import { useRoute } from 'vue-router';
2
+ import { EAsyncData, ELanguage } from '../runtime';
3
+ import type { IVideoData } from '../types';
4
+
5
+ export const useFetchVideo = async (
6
+ apiMethod: (...args: any[]) => Promise<IVideoData>
7
+ ) => {
8
+ const { locale } = useI18n();
9
+ const lang = locale.value as ELanguage;
10
+ const route = useRoute();
11
+ let headers = {} as HeadersInit & { 'User-Agent': string };
12
+
13
+ /* Проверка - если сср, то прокидываем беку заголовки пользователя, чтобы не сработал антихотлинк */
14
+ if (process.server) {
15
+ const event = useRequestEvent();
16
+ if (event && event.node.req.headers['user-agent']) {
17
+ headers['User-Agent'] = event.node.req.headers['user-agent'];
18
+ }
19
+ }
20
+
21
+ const { data, status, error } = await useAsyncData<IVideoData>(
22
+ EAsyncData.Video,
23
+ () => useApiFetcher<IVideoData>(
24
+ EAsyncData.Video,
25
+ apiMethod,
26
+ lang,
27
+ useSlug().value,
28
+ undefined,
29
+ )(),
30
+ );
31
+
32
+ return { data, status, error };
33
+ };
@@ -8,6 +8,8 @@ export const useFetchVideosByCategories = async (
8
8
  ) => {
9
9
  const route = useRoute();
10
10
  const lang = useI18n().locale.value as ELanguage;
11
+ const slug = useSlug().value;
12
+ const filters = useGetVideosFilterRequest(route, selectDurationItems, selectAddedItems);
11
13
 
12
14
  const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
13
15
  EAsyncData.VideosByCategory,
@@ -19,8 +21,8 @@ export const useFetchVideosByCategories = async (
19
21
  page: Number(route.query[ 'page' ]) || 1,
20
22
  'per-page': 48,
21
23
  },
22
- useGetVideosFilterRequest(route, selectDurationItems, selectAddedItems),
23
- useSlug().value,
24
+ filters,
25
+ slug,
24
26
  getSelectedQuery(route, sortItemsDefault) || '-popularity'
25
27
  )(),
26
28
  {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "itube-specs",
3
3
  "type": "module",
4
- "version": "0.0.258",
4
+ "version": "0.0.260",
5
5
  "main": "./nuxt.config.ts",
6
6
  "types": "./types/index.d.ts",
7
7
  "scripts": {