itube-specs 0.0.786 → 0.0.787

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.
Files changed (23) hide show
  1. package/composables/fetch/use-fetch-categories-by-letter.ts +11 -2
  2. package/composables/fetch/use-fetch-categories-by-name.ts +11 -2
  3. package/composables/fetch/use-fetch-categories-by-phrase.ts +11 -2
  4. package/composables/fetch/use-fetch-categories-related.ts +14 -5
  5. package/composables/fetch/use-fetch-channels-by-model.ts +10 -1
  6. package/composables/fetch/use-fetch-channels-by-name.ts +11 -2
  7. package/composables/fetch/use-fetch-channels-by-network-name.ts +9 -9
  8. package/composables/fetch/use-fetch-model-by-name.ts +11 -2
  9. package/composables/fetch/use-fetch-models-by-phrases.ts +9 -11
  10. package/composables/fetch/use-fetch-playlists-by-id.ts +8 -0
  11. package/composables/fetch/use-fetch-playlists-get-videos-by-id.ts +9 -1
  12. package/composables/fetch/use-fetch-popular-tags-by-channel-name.ts +14 -5
  13. package/composables/fetch/use-fetch-popular-tags-by-model-name.ts +14 -5
  14. package/composables/fetch/use-fetch-related-videos.ts +9 -4
  15. package/composables/fetch/use-fetch-video-referer-phrases.ts +10 -1
  16. package/composables/fetch/use-fetch-videos-by-categories.ts +9 -4
  17. package/composables/fetch/use-fetch-videos-by-channel.ts +9 -11
  18. package/composables/fetch/use-fetch-videos-by-model-and-channel.ts +9 -11
  19. package/composables/fetch/use-fetch-videos-by-model-and-tag.ts +9 -11
  20. package/composables/fetch/use-fetch-videos-by-model.ts +9 -11
  21. package/composables/fetch/use-fetch-videos-by-tag.ts +9 -11
  22. package/composables/fetch/use-fetch-videos-search-by-niche.ts +9 -11
  23. package/package.json +1 -1
@@ -5,20 +5,29 @@ import type { ICategoryCard } from '../../types';
5
5
  export const useFetchCategoriesByLetter = async (
6
6
  apiMethod: (...args: any[]) => Promise<Array<ICategoryCard>>
7
7
  ) => {
8
+ const route = useRoute();
8
9
  const key = AsyncData.CategoriesByLetter;
9
10
  const lang = useLang() as Language;
10
11
  const slug = useSlug();
11
12
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
12
13
 
13
- const { data, status, error } = await useAsyncData<Array<ICategoryCard>>(
14
+ const { data, status, error, refresh } = await useAsyncData<Array<ICategoryCard>>(
14
15
  stateKey.value,
15
16
  () => useApiFetcher<Array<ICategoryCard>>(
16
17
  stateKey.value,
17
18
  apiMethod,
18
19
  lang,
19
20
  slug.value,
20
- )()
21
+ )(),
21
22
  );
22
23
 
24
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
25
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
26
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
27
+ const routeName = route.name;
28
+ watch(stateKey, () => {
29
+ if (route.name === routeName) refresh();
30
+ });
31
+
23
32
  return { data, status, error };
24
33
  };
@@ -5,20 +5,29 @@ import type { ICardInfo } from '../../types';
5
5
  export const useFetchCategoriesByName = async (
6
6
  apiMethod: (...args: any[]) => Promise<ICardInfo>
7
7
  ) => {
8
+ const route = useRoute();
8
9
  const key = AsyncData.CategoriesByName;
9
10
  const lang = useLang() as Language;
10
11
  const slug = useSlug();
11
12
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
12
13
 
13
- const { data, status, error } = await useAsyncData<ICardInfo>(
14
+ const { data, status, error, refresh } = await useAsyncData<ICardInfo>(
14
15
  stateKey.value,
15
16
  () => useApiFetcher<ICardInfo>(
16
17
  stateKey.value,
17
18
  apiMethod,
18
19
  lang,
19
20
  slug.value,
20
- )()
21
+ )(),
21
22
  );
22
23
 
24
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
25
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
26
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
27
+ const routeName = route.name;
28
+ watch(stateKey, () => {
29
+ if (route.name === routeName) refresh();
30
+ });
31
+
23
32
  return { data, status, error };
24
33
  };
@@ -5,12 +5,13 @@ import type { IChipsItem } from '../../types';
5
5
  export const useFetchCategoriesByPhrase = async (
6
6
  apiMethod: (...args: any[]) => Promise<Array<IChipsItem>>
7
7
  ) => {
8
+ const route = useRoute();
8
9
  const key = AsyncData.CategoriesByPhrase;
9
10
  const lang = useLang() as Language;
10
11
  const slug = useSlug();
11
12
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
12
13
 
13
- const { data, status, error } = await useAsyncData<Array<IChipsItem>>(
14
+ const { data, status, error, refresh } = await useAsyncData<Array<IChipsItem>>(
14
15
  stateKey.value,
15
16
  () => useApiFetcher<Array<IChipsItem>>(
16
17
  stateKey.value,
@@ -20,8 +21,16 @@ export const useFetchCategoriesByPhrase = async (
20
21
  1,
21
22
  1,
22
23
  100
23
- )()
24
+ )(),
24
25
  );
25
26
 
27
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
28
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
29
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
30
+ const routeName = route.name;
31
+ watch(stateKey, () => {
32
+ if (route.name === routeName) refresh();
33
+ });
34
+
26
35
  return { data, status, error };
27
36
  };
@@ -5,20 +5,29 @@ import type { IRelatedPhrases } from '../../types';
5
5
  export const useFetchCategoriesRelated = async (
6
6
  apiMethod: (...args: any[]) => Promise<IRelatedPhrases>
7
7
  ) => {
8
+ const route = useRoute();
8
9
  const lang = useLang() as Language;
9
10
  const slug = useSlug();
10
11
  const key = AsyncData.CategoriesRelated;
11
12
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
12
13
 
13
- const { data, status, error } = await useAsyncData<IRelatedPhrases>(
14
- stateKey.value,
15
- () => useApiFetcher<IRelatedPhrases>(
14
+ const { data, status, error, refresh } = await useAsyncData<IRelatedPhrases>(
15
+ stateKey.value,
16
+ () => useApiFetcher<IRelatedPhrases>(
16
17
  stateKey.value,
17
18
  apiMethod,
18
19
  lang,
19
20
  slug.value,
20
- )()
21
- );
21
+ )(),
22
+ );
23
+
24
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
25
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
26
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
27
+ const routeName = route.name;
28
+ watch(stateKey, () => {
29
+ if (route.name === routeName) refresh();
30
+ });
22
31
 
23
32
  return { data, status, error };
24
33
  };
@@ -5,12 +5,13 @@ import type { IChannelCard, PaginatedResponse } from '../../types';
5
5
  export const useFetchChannelsByModel = async (
6
6
  apiMethod: (...args: any[]) => Promise<PaginatedResponse<IChannelCard>>
7
7
  ) => {
8
+ const route = useRoute();
8
9
  const lang = useLang() as Language;
9
10
  const slug = useSlug();
10
11
  const key = AsyncData.ChannelsByModel;
11
12
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
12
13
 
13
- const { data, status, error } = await useAsyncData<PaginatedResponse<IChannelCard>>(
14
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IChannelCard>>(
14
15
  stateKey.value,
15
16
  () => useApiFetcher<PaginatedResponse<IChannelCard>>(
16
17
  stateKey.value,
@@ -23,5 +24,13 @@ export const useFetchChannelsByModel = async (
23
24
  )(),
24
25
  );
25
26
 
27
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
28
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
29
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
30
+ const routeName = route.name;
31
+ watch(stateKey, () => {
32
+ if (route.name === routeName) refresh();
33
+ });
34
+
26
35
  return { data, status, error };
27
36
  };
@@ -5,20 +5,29 @@ import type { ICardInfo } from '../../types';
5
5
  export const useFetchChannelsByName = async (
6
6
  apiMethod: (...args: any[]) => Promise<ICardInfo>
7
7
  ) => {
8
+ const route = useRoute();
8
9
  const lang = useLang() as Language;
9
10
  const slug = useSlug('channel');
10
11
  const key = AsyncData.ChannelByName;
11
12
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
12
13
 
13
- const { data, status, error } = await useAsyncData<ICardInfo>(
14
+ const { data, status, error, refresh } = await useAsyncData<ICardInfo>(
14
15
  stateKey.value,
15
16
  () => useApiFetcher<ICardInfo>(
16
17
  stateKey.value,
17
18
  apiMethod,
18
19
  lang,
19
20
  slug.value,
20
- )()
21
+ )(),
21
22
  );
22
23
 
24
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
25
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
26
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
27
+ const routeName = route.name;
28
+ watch(stateKey, () => {
29
+ if (route.name === routeName) refresh();
30
+ });
31
+
23
32
  return { data, status, error };
24
33
  };
@@ -14,7 +14,7 @@ export const useFetchChannelsByNetworkName = async (
14
14
  const key = AsyncData.ChannelsByNetworkName;
15
15
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
16
16
 
17
- const { data, status, error } = await useAsyncData<PaginatedResponse<IChannelCard>>(
17
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IChannelCard>>(
18
18
  stateKey.value,
19
19
  () => useApiFetcher<PaginatedResponse<IChannelCard>>(
20
20
  stateKey.value,
@@ -26,15 +26,15 @@ export const useFetchChannelsByNetworkName = async (
26
26
  },
27
27
  slug.value,
28
28
  )(),
29
- {
30
- watch: [
31
- () => {
32
- const currentQuery = route.query;
33
- return JSON.stringify(currentQuery);
34
- },
35
- ],
36
- }
37
29
  );
38
30
 
31
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
32
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
33
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
34
+ const routeName = route.name;
35
+ watch(stateKey, () => {
36
+ if (route.name === routeName) refresh();
37
+ });
38
+
39
39
  return { data, status, error };
40
40
  };
@@ -5,20 +5,29 @@ import type { ICardInfo } from '../../types';
5
5
  export const useFetchModelByName = async (
6
6
  apiMethod: (...args: any[]) => Promise<ICardInfo>
7
7
  ) => {
8
+ const route = useRoute();
8
9
  const lang = useLang() as Language;
9
10
  const slug = useSlug();
10
11
  const key = AsyncData.ModelsByName;
11
12
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
12
13
 
13
- const { data, status, error } = await useAsyncData<ICardInfo>(
14
+ const { data, status, error, refresh } = await useAsyncData<ICardInfo>(
14
15
  stateKey.value,
15
16
  () => useApiFetcher<ICardInfo>(
16
17
  stateKey.value,
17
18
  apiMethod,
18
19
  lang,
19
20
  slug.value,
20
- )()
21
+ )(),
21
22
  );
22
23
 
24
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
25
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
26
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
27
+ const routeName = route.name;
28
+ watch(stateKey, () => {
29
+ if (route.name === routeName) refresh();
30
+ });
31
+
23
32
  return { data, status, error };
24
33
  };
@@ -14,7 +14,7 @@ export const useFetchModelsByPhrases = async (
14
14
  const key = AsyncData.ModelsByPhrases;
15
15
  const stateKey = computed(() => `data-${key}-${slug.value}-${JSON.stringify(route.query)}-${lang}`);
16
16
 
17
- const { data, status, error } = await useAsyncData<PaginatedResponse<IModelCard>>(
17
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IModelCard>>(
18
18
  stateKey.value,
19
19
  () => useApiFetcher<PaginatedResponse<IModelCard>>(
20
20
  stateKey.value,
@@ -26,17 +26,15 @@ export const useFetchModelsByPhrases = async (
26
26
  lang,
27
27
  slug.value,
28
28
  )(),
29
- {
30
- watch: [
31
- () => {
32
- if (route.query) {
33
- const currentQuery = route.query;
34
- return JSON.stringify(currentQuery);
35
- }
36
- },
37
- ],
38
- }
39
29
  );
40
30
 
31
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
32
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
33
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
34
+ const routeName = route.name;
35
+ watch(stateKey, () => {
36
+ if (route.name === routeName) refresh();
37
+ });
38
+
41
39
  return { data, status, error };
42
40
  };
@@ -19,5 +19,13 @@ export const useFetchPlaylistsById = async (apiMethod: (...args: any[]) => Promi
19
19
  )(),
20
20
  );
21
21
 
22
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
23
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
24
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
25
+ const routeName = route.name;
26
+ watch(stateKey, () => {
27
+ if (route.name === routeName) refresh();
28
+ });
29
+
22
30
  return { data, status, error, refresh };
23
31
  };
@@ -14,7 +14,7 @@ export const useFetchPlaylistsGetVideosById = async (
14
14
  const stateKey = computed(() => `data-${key}-${id.value}`);
15
15
  const lang = useLang() as Language;
16
16
 
17
- const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
17
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IVideoCard>>(
18
18
  stateKey.value,
19
19
  () => useApiFetcherNoCache<PaginatedResponse<IVideoCard>>(
20
20
  stateKey.value,
@@ -30,6 +30,14 @@ export const useFetchPlaylistsGetVideosById = async (
30
30
  )(),
31
31
  );
32
32
 
33
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
34
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
35
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
36
+ const routeName = route.name;
37
+ watch(stateKey, () => {
38
+ if (route.name === routeName) refresh();
39
+ });
40
+
33
41
  return {
34
42
  error,
35
43
  status,
@@ -5,20 +5,29 @@ import type { IPopularTags } from '../../types';
5
5
  export const useFetchPopularTagsByChannelName = async (
6
6
  apiMethod: (...args: any[]) => Promise<IPopularTags[]>
7
7
  ) => {
8
+ const route = useRoute();
8
9
  const lang = useLang() as Language;
9
10
  const slug = useSlug('channel');
10
11
  const key = AsyncData.PopularTagsByChannel;
11
12
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
12
13
 
13
- const { data, status, error } = await useAsyncData<IPopularTags[]>(
14
- stateKey.value,
15
- () => useApiFetcher<IPopularTags[]>(
14
+ const { data, status, error, refresh } = await useAsyncData<IPopularTags[]>(
15
+ stateKey.value,
16
+ () => useApiFetcher<IPopularTags[]>(
16
17
  stateKey.value,
17
18
  apiMethod,
18
19
  lang,
19
20
  slug.value,
20
- )()
21
- );
21
+ )(),
22
+ );
23
+
24
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
25
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
26
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
27
+ const routeName = route.name;
28
+ watch(stateKey, () => {
29
+ if (route.name === routeName) refresh();
30
+ });
22
31
 
23
32
  return { data, status, error };
24
33
  };
@@ -5,20 +5,29 @@ import type { IPopularTags } from '../../types';
5
5
  export const useFetchPopularTagsByModelName = async (
6
6
  apiMethod: (...args: any[]) => Promise<IPopularTags[]>
7
7
  ) => {
8
+ const route = useRoute();
8
9
  const lang = useLang() as Language;
9
10
  const slug = useSlug();
10
11
  const key = AsyncData.PopularTagsByModel;
11
12
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
12
13
 
13
- const { data, status, error } = await useAsyncData<IPopularTags[]>(
14
- stateKey.value,
15
- () => useApiFetcher<IPopularTags[]>(
14
+ const { data, status, error, refresh } = await useAsyncData<IPopularTags[]>(
15
+ stateKey.value,
16
+ () => useApiFetcher<IPopularTags[]>(
16
17
  stateKey.value,
17
18
  apiMethod,
18
19
  lang,
19
20
  slug.value,
20
- )()
21
- );
21
+ )(),
22
+ );
23
+
24
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
25
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
26
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
27
+ const routeName = route.name;
28
+ watch(stateKey, () => {
29
+ if (route.name === routeName) refresh();
30
+ });
22
31
 
23
32
  return { data, status, error };
24
33
  };
@@ -14,7 +14,7 @@ export const useFetchRelatedVideos = async (
14
14
  const key = AsyncData.RelatedVideos;
15
15
  const stateKey = computed(() => `data-${key}-${slug.value}-${JSON.stringify(route.query)}-${lang}`);
16
16
 
17
- const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
17
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IVideoCard>>(
18
18
  stateKey.value,
19
19
  () => {
20
20
  if (!slug.value) return Promise.resolve(null as unknown as PaginatedResponse<IVideoCard>);
@@ -30,10 +30,15 @@ export const useFetchRelatedVideos = async (
30
30
  slug.value
31
31
  )();
32
32
  },
33
- {
34
- watch: [() => route.query.page],
35
- }
36
33
  );
37
34
 
35
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
36
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
37
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
38
+ const routeName = route.name;
39
+ watch(stateKey, () => {
40
+ if (route.name === routeName) refresh();
41
+ });
42
+
38
43
  return { data, status, error };
39
44
  };
@@ -3,12 +3,13 @@ import { AsyncData } from '../../runtime';
3
3
 
4
4
  export const useFetchVideoRefererPhrases = async (
5
5
  apiMethod: (...args: any[]) => Promise<string[]>) => {
6
+ const route = useRoute();
6
7
  const lang = useLang() as Language;
7
8
  const slug = useSlug();
8
9
  const key = AsyncData.RefererPhrases;
9
10
  const stateKey = computed(() => `data-${key}-${slug.value}-${lang}`);
10
11
 
11
- const { data, status, error } = await useAsyncData<string[]>(
12
+ const { data, status, error, refresh } = await useAsyncData<string[]>(
12
13
  stateKey.value,
13
14
  () => useApiFetcher<string[]>(
14
15
  stateKey.value,
@@ -38,5 +39,13 @@ export const useFetchVideoRefererPhrases = async (
38
39
  // }
39
40
  // }
40
41
 
42
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
43
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
44
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
45
+ const routeName = route.name;
46
+ watch(stateKey, () => {
47
+ if (route.name === routeName) refresh();
48
+ });
49
+
41
50
  return { data, status, error };
42
51
  };
@@ -22,7 +22,7 @@ export const useFetchVideosByCategories = async (
22
22
  // подсасываются»). watch — только на query (page/sort/фильтры): следить за slug НЕЛЬЗЯ,
23
23
  // т.к. route.params.slug общий для всех [slug]-роутов и при уходе на /videos/<id> и т.п.
24
24
  // watch дёрнул бы этот эндпоинт с чужим слагом.
25
- const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
25
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IVideoCard>>(
26
26
  stateKey.value,
27
27
  () => useApiFetcher<PaginatedResponse<IVideoCard>>(
28
28
  stateKey.value,
@@ -36,10 +36,15 @@ export const useFetchVideosByCategories = async (
36
36
  slug.value,
37
37
  getSelectedQuery(route, sortItemsDefault) || '-popularity'
38
38
  )(),
39
- {
40
- watch: [() => JSON.stringify(route.query)],
41
- }
42
39
  );
43
40
 
41
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
42
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
43
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
44
+ const routeName = route.name;
45
+ watch(stateKey, () => {
46
+ if (route.name === routeName) refresh();
47
+ });
48
+
44
49
  return { data, status, error };
45
50
  };
@@ -14,7 +14,7 @@ export const useFetchVideosByChannel = async (apiMethod: (...args: any[]) => Pro
14
14
  const key = AsyncData.VideosByChannel;
15
15
  const stateKey = computed(() => `data-${key}-${slug.value}-${JSON.stringify(route.query)}-${lang}`);
16
16
 
17
- const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
17
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IVideoCard>>(
18
18
  stateKey.value,
19
19
  () => useApiFetcher<PaginatedResponse<IVideoCard>>(
20
20
  stateKey.value,
@@ -28,17 +28,15 @@ export const useFetchVideosByChannel = async (apiMethod: (...args: any[]) => Pro
28
28
  lang,
29
29
  getSelectedQuery(route, sortItemsDefault) || '-popularity'
30
30
  )(),
31
- {
32
- watch: [
33
- () => {
34
- if (route.query) {
35
- const currentQuery = route.query;
36
- return JSON.stringify(currentQuery);
37
- }
38
- },
39
- ],
40
- }
41
31
  );
42
32
 
33
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
34
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
35
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
36
+ const routeName = route.name;
37
+ watch(stateKey, () => {
38
+ if (route.name === routeName) refresh();
39
+ });
40
+
43
41
  return { data, status, error };
44
42
  };
@@ -19,7 +19,7 @@ export const useFetchVideosByModelAndChannel = async (apiMethod: (...args: any[]
19
19
  const key = AsyncData.VideosByModelAndChannel;
20
20
  const stateKey = computed(() => `data-${key}-${slug.value}-${channel.value}-${JSON.stringify(route.query)}-${lang}`);
21
21
 
22
- const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
22
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IVideoCard>>(
23
23
  stateKey.value,
24
24
  () => useApiFetcher<PaginatedResponse<IVideoCard>>(
25
25
  stateKey.value,
@@ -34,17 +34,15 @@ export const useFetchVideosByModelAndChannel = async (apiMethod: (...args: any[]
34
34
  lang,
35
35
  getSelectedQuery(route, sortItemsDefault) || '-popularity'
36
36
  )(),
37
- {
38
- watch: [
39
- () => {
40
- if (route.query) {
41
- const currentQuery = route.query;
42
- return JSON.stringify(currentQuery);
43
- }
44
- },
45
- ],
46
- }
47
37
  );
48
38
 
39
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
40
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
41
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
42
+ const routeName = route.name;
43
+ watch(stateKey, () => {
44
+ if (route.name === routeName) refresh();
45
+ });
46
+
49
47
  return { data, status, error };
50
48
  };
@@ -19,7 +19,7 @@ export const useFetchVideosByModelAndTag = async (apiMethod: (...args: any[]) =>
19
19
  const key = AsyncData.VideosByModelAndTag;
20
20
  const stateKey = computed(() => `data-${key}-${slug.value}-${tag.value}-${JSON.stringify(route.query)}-${lang}`);
21
21
 
22
- const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
22
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IVideoCard>>(
23
23
  stateKey.value,
24
24
  () => useApiFetcher<PaginatedResponse<IVideoCard>>(
25
25
  stateKey.value,
@@ -34,17 +34,15 @@ export const useFetchVideosByModelAndTag = async (apiMethod: (...args: any[]) =>
34
34
  lang,
35
35
  getSelectedQuery(route, sortItemsDefault) || '-popularity'
36
36
  )(),
37
- {
38
- watch: [
39
- () => {
40
- if (route.query) {
41
- const currentQuery = route.query;
42
- return JSON.stringify(currentQuery);
43
- }
44
- },
45
- ],
46
- }
47
37
  );
48
38
 
39
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
40
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
41
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
42
+ const routeName = route.name;
43
+ watch(stateKey, () => {
44
+ if (route.name === routeName) refresh();
45
+ });
46
+
49
47
  return { data, status, error };
50
48
  };
@@ -14,7 +14,7 @@ export const useFetchVideosByModel = async (apiMethod: (...args: any[]) => Promi
14
14
  const key = AsyncData.ModelsVideos;
15
15
  const stateKey = computed(() => `data-${key}-${slug.value}-${JSON.stringify(route.query)}-${lang}`);
16
16
 
17
- const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
17
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IVideoCard>>(
18
18
  stateKey.value,
19
19
  () => useApiFetcher<PaginatedResponse<IVideoCard>>(
20
20
  stateKey.value,
@@ -28,17 +28,15 @@ export const useFetchVideosByModel = async (apiMethod: (...args: any[]) => Promi
28
28
  lang,
29
29
  getSelectedQuery(route, sortItemsDefault) || '-popularity'
30
30
  )(),
31
- {
32
- watch: [
33
- () => {
34
- if (route.query) {
35
- const currentQuery = route.query;
36
- return JSON.stringify(currentQuery);
37
- }
38
- },
39
- ],
40
- }
41
31
  );
42
32
 
33
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
34
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
35
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
36
+ const routeName = route.name;
37
+ watch(stateKey, () => {
38
+ if (route.name === routeName) refresh();
39
+ });
40
+
43
41
  return { data, status, error };
44
42
  };
@@ -14,7 +14,7 @@ export const useFetchVideosByTag = async (apiMethod: (...args: any[]) => Promise
14
14
  const key = AsyncData.VideosByTag;
15
15
  const stateKey = computed(() => `data-${key}-${slug.value}-${JSON.stringify(route.query)}-${lang}`);
16
16
 
17
- const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
17
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IVideoCard>>(
18
18
  stateKey.value,
19
19
  () => useApiFetcher<PaginatedResponse<IVideoCard>>(
20
20
  stateKey.value,
@@ -28,17 +28,15 @@ export const useFetchVideosByTag = async (apiMethod: (...args: any[]) => Promise
28
28
  lang,
29
29
  getSelectedQuery(route, sortItemsDefault) || '-popularity'
30
30
  )(),
31
- {
32
- watch: [
33
- () => {
34
- if (route.query) {
35
- const currentQuery = route.query;
36
- return JSON.stringify(currentQuery);
37
- }
38
- },
39
- ],
40
- }
41
31
  );
42
32
 
33
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
34
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
35
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
36
+ const routeName = route.name;
37
+ watch(stateKey, () => {
38
+ if (route.name === routeName) refresh();
39
+ });
40
+
43
41
  return { data, status, error };
44
42
  };
@@ -12,7 +12,7 @@ export const useFetchVideosSearchByNiche = async (apiMethod: (...args: any[]) =>
12
12
  const key = AsyncData.VideosBySearch;
13
13
  const stateKey = computed(() => `data-${key}-${slug.value}-${JSON.stringify(route.query)}-${lang}`);
14
14
 
15
- const { data, status, error } = await useAsyncData<PaginatedResponse<IVideoCard>>(
15
+ const { data, status, error, refresh } = await useAsyncData<PaginatedResponse<IVideoCard>>(
16
16
  stateKey.value,
17
17
  () => useApiFetcher<PaginatedResponse<IVideoCard>>(
18
18
  stateKey.value,
@@ -24,17 +24,15 @@ export const useFetchVideosSearchByNiche = async (apiMethod: (...args: any[]) =>
24
24
  lang,
25
25
  slug.value,
26
26
  )(),
27
- {
28
- watch: [
29
- () => {
30
- if (route.query) {
31
- const currentQuery = route.query;
32
- return JSON.stringify(currentQuery);
33
- }
34
- },
35
- ],
36
- }
37
27
  );
38
28
 
29
+ // Рефетч при смене route-параметра в рамках ЭТОГО же роута (напр. категория→категория по
30
+ // ссылке): setup не перезапускается, поэтому нужен watch. Сверяемся с route.name — иначе при
31
+ // уходе на другой [slug]-роут (slug общий) watch дёрнул бы этот эндпоинт с чужим слагом.
32
+ const routeName = route.name;
33
+ watch(stateKey, () => {
34
+ if (route.name === routeName) refresh();
35
+ });
36
+
39
37
  return { data, status, error };
40
38
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "itube-specs",
3
3
  "type": "module",
4
- "version": "0.0.786",
4
+ "version": "0.0.787",
5
5
  "main": "./nuxt.config.ts",
6
6
  "types": "./types/index.d.ts",
7
7
  "scripts": {