diff --git a/components/DocumentList.vue b/components/DocumentList.vue new file mode 100644 index 00000000..21602903 --- /dev/null +++ b/components/DocumentList.vue @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + {{ group.header.title }} + + {{ group.header.title }} + + + + + {{ t("home.list.see-all") }} + + + + + + + + + + + + + + + + + + "{{ item.type }}" is not yet implemented ... + + + + + + + {{ item.title }} + + + + + + + + + "{{ item.type }}" is not yet implemented ... + + + + + + + + + This list is empty 😔 + + + + diff --git a/composables/browse.ts b/composables/browse.ts index a463869d..318b5759 100644 --- a/composables/browse.ts +++ b/composables/browse.ts @@ -5,3 +5,31 @@ export function useBrowse() { useLazyAsyncData("browse", () => new BrowseApi().browseGet()), ); } + +export function useBrowseEvents() { + return reactiveApi( + useLazyAsyncData("browse-events", () => new BrowseApi().browseEventsGet()), + ); +} + +export function useBrowseAudiobooks() { + return reactiveApi( + useLazyAsyncData("browse-audiobooks", () => + new BrowseApi().browseAudiobooksGet(), + ), + ); +} + +export function useBrowseMusic() { + return reactiveApi( + useLazyAsyncData("browse-music", () => new BrowseApi().browseMusicGet()), + ); +} + +export function useBrowsePodcast() { + return reactiveApi( + useLazyAsyncData("browse-podcast", () => + new BrowseApi().browsePodcastsGet(), + ), + ); +} diff --git a/composables/discover.ts b/composables/discover.ts index 267b3725..9395cb43 100644 --- a/composables/discover.ts +++ b/composables/discover.ts @@ -1,34 +1,10 @@ import { DiscoverApi } from "@bcc-code/bmm-sdk-fetch"; -import type { - DiscoverGetRequest, - SectionHeaderModel, - IAllDocumentModels, -} from "@bcc-code/bmm-sdk-fetch"; - -export type IDiscoverableGroup = { - header: SectionHeaderModel | null; - items: Exclude[]; -}; +import type { DiscoverGetRequest } from "@bcc-code/bmm-sdk-fetch"; export function useDiscover(requestParameters: DiscoverGetRequest) { return reactiveApi( useLazyAsyncData("discover", () => - new DiscoverApi().discoverGet(requestParameters).then((d) => { - let currentSection: IDiscoverableGroup["items"] = []; - const result: IDiscoverableGroup[] = []; - d.forEach((el) => { - if (el.type === "section_header") { - currentSection = []; - result.push({ - header: el, - items: currentSection, - }); - } else { - currentSection.push(el); - } - }); - return result; - }), + new DiscoverApi().discoverGet(requestParameters), ), ); } diff --git a/composables/playlist.ts b/composables/playlist.ts index fbd42fcc..d40c15e5 100644 --- a/composables/playlist.ts +++ b/composables/playlist.ts @@ -35,3 +35,11 @@ export function useCuratedPlaylists() { useLazyAsyncData("playlists", () => new PlaylistApi().playlistGet()), ); } + +export function useFeaturedPlaylists() { + return reactiveApi( + useLazyAsyncData("playlists-featured", () => + new PlaylistApi().playlistDocumentsGet(), + ), + ); +} diff --git a/package.json b/package.json index 439443f3..6d97b6c7 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ }, "dependencies": { "@auth0/auth0-vue": "^2.3.3", - "@bcc-code/bmm-sdk-fetch": "^7.1.0", + "@bcc-code/bmm-sdk-fetch": "^7.3.0", "@headlessui/vue": "^1.7.17", "@microsoft/applicationinsights-web": "^3.0.7", "@pinia/nuxt": "^0.5.1", diff --git a/pages/browse/audiobooks.vue b/pages/browse/audiobooks.vue new file mode 100644 index 00000000..7a8041ff --- /dev/null +++ b/pages/browse/audiobooks.vue @@ -0,0 +1,8 @@ + + + + + diff --git a/pages/browse/events.vue b/pages/browse/events.vue new file mode 100644 index 00000000..2993ffab --- /dev/null +++ b/pages/browse/events.vue @@ -0,0 +1,8 @@ + + + + + diff --git a/pages/browse/index.vue b/pages/browse/index.vue index d00b370e..19bffa36 100644 --- a/pages/browse/index.vue +++ b/pages/browse/index.vue @@ -2,51 +2,9 @@ const { t } = useI18n(); toolbarTitleStore().setReactiveToolbarTitle(() => t("nav.browse")); -const { data: browseSections, pending } = useBrowse(); +const { data: models, pending } = useBrowse(); - - {{ $t("nav.browse") }} - - - - - - - - - - - - {{ section.title }} - - {{ section.title }} - - - - - {{ t("home.list.see-all") }} - - - - - - - - - This is not implemented yet - - - + diff --git a/pages/browse/music.vue b/pages/browse/music.vue index b7caabe1..22a5c288 100644 --- a/pages/browse/music.vue +++ b/pages/browse/music.vue @@ -1,3 +1,8 @@ + + - The route {{ useRoute().name }} has not been implemented yet. + diff --git a/pages/browse/podcasts.vue b/pages/browse/podcasts.vue index b7caabe1..1d49e820 100644 --- a/pages/browse/podcasts.vue +++ b/pages/browse/podcasts.vue @@ -1,3 +1,8 @@ + + - The route {{ useRoute().name }} has not been implemented yet. + diff --git a/pages/featured.vue b/pages/featured.vue index b7caabe1..32117454 100644 --- a/pages/featured.vue +++ b/pages/featured.vue @@ -1,3 +1,8 @@ + + - The route {{ useRoute().name }} has not been implemented yet. + diff --git a/pages/index.vue b/pages/index.vue index c32b41d3..2aed92f6 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1,156 +1,15 @@ - - - - - - - - - - - - - {{ group.header.title }} - - {{ group.header.title }} - - - - {{ - t("home.list.see-all") - }} - - - - - - - - - - - - - - - - "{{ item.type }}" is not yet implemented ... - - - - - - - - - - "{{ item.type }}" is not yet implemented ... - - - - - - - + diff --git a/pages/search.vue b/pages/search.vue index ff0d1f2e..5a97f954 100644 --- a/pages/search.vue +++ b/pages/search.vue @@ -1,10 +1,5 @@ @@ -106,7 +94,7 @@ const playItem = (item: TrackModel, group: IDiscoverableGroup) => { :track="item" :is-track-type-known="true" show-thumbnail - @play-track="playItem(item, { header: null, items: [item] })" + @play-track="setQueue([item])" > { ",", ), ); + const uiLanguage = useNuxtApp().$i18n.locale.value; + headers.set("UiLanguage", uiLanguage); ctx.init.headers = headers; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a93c7802..7fdbd45a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,8 +5,8 @@ dependencies: specifier: ^2.3.3 version: 2.3.3(typescript@5.3.3)(vue-router@4.2.5) '@bcc-code/bmm-sdk-fetch': - specifier: ^7.1.0 - version: 7.1.0 + specifier: ^7.3.0 + version: 7.3.0 '@headlessui/vue': specifier: ^1.7.17 version: 1.7.17(vue@3.4.14) @@ -521,8 +521,8 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - /@bcc-code/bmm-sdk-fetch@7.1.0: - resolution: {integrity: sha512-vIKu9KD7ZyYoBHJjnYNs3WKQO4W4vPHsNET4510AQSTVcja82sM2wMNNnDmv9b99KbHqvmaT06y/MVEy7Dt6Yg==} + /@bcc-code/bmm-sdk-fetch@7.3.0: + resolution: {integrity: sha512-t993xdMmUhpvPtcSOsnTr1NVewqZzx6J5nQ8tm+XnlwPUNj56gVMO/3AYlaTOLJrVP/SseXFG2OvB3B88a8L9w==} dev: false /@bcoe/v8-coverage@0.2.3: diff --git a/stores/toolbarTitle.ts b/stores/toolbarTitle.ts index a399720a..9a8bee08 100644 --- a/stores/toolbarTitle.ts +++ b/stores/toolbarTitle.ts @@ -11,5 +11,9 @@ export const toolbarTitleStore = defineStore("toolbarTitle", () => { ); } - return { setReactiveToolbarTitle, toolbarTitle }; + function setToolbarTitle(title: string) { + toolbarTitle.value = title; + } + + return { setReactiveToolbarTitle, toolbarTitle, setToolbarTitle }; }); diff --git a/utils/reactiveApi.ts b/utils/reactiveApi.ts index 3a26fc86..bcd4b875 100644 --- a/utils/reactiveApi.ts +++ b/utils/reactiveApi.ts @@ -1,8 +1,8 @@ -import type { AsyncData } from "#app"; +import type { AsyncData } from "nuxt/app"; export default function reactiveApi(data: AsyncData) { const stopHandler = watch( - () => contentLanguageStore().contentLanguages, + [useNuxtApp().$i18n.locale, () => contentLanguageStore().contentLanguages], () => { data.refresh(); }, diff --git a/utils/setTitleOfDocumentList.ts b/utils/setTitleOfDocumentList.ts new file mode 100644 index 00000000..cb97ab46 --- /dev/null +++ b/utils/setTitleOfDocumentList.ts @@ -0,0 +1,13 @@ +import type { DocumentListIAllDocumentModels } from "@bcc-code/bmm-sdk-fetch"; + +export default function setTitleOfDocumentList( + data: Ref, +) { + watch( + data, + () => { + toolbarTitleStore().setToolbarTitle(data.value?.title ?? " "); + }, + { immediate: true }, + ); +}
This is not implemented yet