Skip to content

Commit b172331

Browse files
committed
fix(release): await region loading when loading releases
1 parent 5d94e1e commit b172331

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

src/components/views/releases/ReleasesNavbar.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { TmdbMovieReleaseType } from '@dvcol/tmdb-http-client/models';
33
import { NDatePicker, NFlex, NIcon, NSelect, type SelectOption } from 'naive-ui';
44
5-
import { computed, defineProps, onBeforeMount, ref } from 'vue';
5+
import { computed, defineProps, onActivated, ref } from 'vue';
66
77
import IconCalendar from '~/components/icons/IconCalendar.vue';
88
import IconChevron from '~/components/icons/IconChevronDownSmall.vue';
@@ -47,7 +47,7 @@ const regionOptions = computed<SelectOption[]>(() =>
4747
4848
const open = ref(false);
4949
50-
onBeforeMount(() => fetchRegions());
50+
onActivated(() => fetchRegions());
5151
</script>
5252

5353
<template>

src/stores/data/releases.store.ts

+10-2
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ export const useReleasesStore = defineStore(ReleasesStoreConstants.Store, () =>
7676
const endCalendar = ref<Date>(DateUtils.weeks.next(weeks.value, center.value));
7777

7878
const regionLoading = ref(true);
79+
const regionLoadingPromise = ref<Promise<TmdbConfigurationCounty[]>>();
7980
const regions = ref<TmdbConfigurationCounty[]>([]);
8081
const region = ref<TmdbConfigurationCounty | undefined>();
8182
const releaseType = ref<TmdbMovieReleaseTypes>(TmdbMovieReleaseType.Theatrical);
@@ -119,13 +120,15 @@ export const useReleasesStore = defineStore(ReleasesStoreConstants.Store, () =>
119120
const fetchRegions = async () => {
120121
regionLoading.value = true;
121122
try {
122-
regions.value = await TraktService.providers.regions();
123+
regionLoadingPromise.value = TraktService.providers.regions();
124+
regions.value = await regionLoadingPromise.value;
123125
if (!region.value) region.value = getLocaleRegion();
124126
} catch (e) {
125127
Logger.error('Failed to fetch regions');
126128
NotificationService.error('Failed to fetch regions', e);
127129
} finally {
128130
regionLoading.value = false;
131+
regionLoadingPromise.value = undefined;
129132
}
130133
};
131134

@@ -135,8 +138,13 @@ export const useReleasesStore = defineStore(ReleasesStoreConstants.Store, () =>
135138
return;
136139
}
137140

141+
if (regionLoading.value && regionLoadingPromise.value) {
142+
Logger.warn('Waiting for region to load...');
143+
await regionLoadingPromise.value;
144+
}
145+
138146
if (!region.value) {
139-
Logger.warn('Region not selected');
147+
Logger.warn('Region not selected', { region: region.value, regions: [...regions.value], regionLoading: regionLoading.value });
140148
return;
141149
}
142150

0 commit comments

Comments
 (0)