From 45815f77c9b064148d89b0f6b1c3f66f6dda40bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Fern=C3=A1ndez?= Date: Wed, 4 Sep 2024 20:14:58 +0200 Subject: [PATCH] refactor: remove withDefaults, use destructure everywhere MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use reactive props destructure (https://blog.vuejs.org/posts/vue-3-5#reactive-props-destructure) to simplify the prop declaration. Also, finding unused props is far easier with destructure (a lot of unused props were removed in fact), so all the defineProps statements have been migrated as well. Signed-off-by: Fernando Fernández --- .../src/components/Buttons/FilterButton.vue | 14 +-- .../src/components/Buttons/LikeButton.vue | 11 +-- .../components/Buttons/MarkPlayedButton.vue | 6 +- .../Buttons/Playback/NextTrackButton.vue | 6 +- .../Buttons/Playback/PlayButton.vue | 80 ++++++++------- .../Buttons/Playback/PlayPauseButton.vue | 6 +- .../Buttons/Playback/PreviousTrackButton.vue | 6 +- .../Buttons/Playback/RepeatButton.vue | 6 +- .../Buttons/Playback/ShuffleButton.vue | 6 +- .../src/components/Buttons/QueueButton.vue | 15 ++- .../src/components/Buttons/SortButton.vue | 12 +-- .../src/components/Buttons/TypeButton.vue | 4 +- .../src/components/Dialogs/GenericDialog.vue | 14 +-- frontend/src/components/Forms/LoginForm.vue | 6 +- .../components/Item/Card/GenericItemCard.vue | 8 +- .../src/components/Item/Card/ItemCard.vue | 61 ++++++------ .../src/components/Item/Card/ServerCard.vue | 10 +- .../src/components/Item/CollectionTabs.vue | 8 +- .../Item/Identify/IdentifyDialog.vue | 32 +++--- .../Item/Identify/IdentifyResults.vue | 4 +- frontend/src/components/Item/ItemGrid.vue | 15 +-- frontend/src/components/Item/ItemMenu.vue | 95 ++++++++---------- .../Item/MediaDetail/MediaDetailAttr.vue | 8 +- .../Item/MediaDetail/MediaDetailContent.vue | 80 +++++++-------- .../Item/MediaDetail/MediaDetailDialog.vue | 12 +-- frontend/src/components/Item/MediaInfo.vue | 21 ++-- .../components/Item/MediaSourceSelector.vue | 12 +-- .../components/Item/MediaStreamSelector.vue | 31 +++--- .../components/Item/Metadata/DateInput.vue | 6 +- .../components/Item/Metadata/ImageEditor.vue | 14 +-- .../components/Item/Metadata/ImageSearch.vue | 16 +-- .../Item/Metadata/MetadataEditor.vue | 9 +- .../Item/Metadata/MetadataEditorDialog.vue | 2 +- .../components/Item/Metadata/PersonEditor.vue | 6 +- .../Item/Metadata/RefreshMetadataDialog.vue | 10 +- frontend/src/components/Item/PeopleList.vue | 13 +-- frontend/src/components/Item/RelatedItems.vue | 13 +-- frontend/src/components/Item/SeasonTabs.vue | 12 +-- .../Layout/AppBar/AppBarButtonLayout.vue | 16 +-- .../AppBar/Buttons/TaskManagerButton.vue | 2 - .../components/Layout/Artist/ArtistTab.vue | 5 +- .../components/Layout/Carousel/Carousel.vue | 27 ++---- .../Layout/Carousel/CarouselProgressBar.vue | 36 ++++--- .../Layout/Carousel/Item/ItemsCarousel.vue | 13 +-- .../Carousel/Item/ItemsCarouselTitle.vue | 34 +++---- .../Layout/Images/Blurhash/BlurhashCanvas.vue | 27 +++--- .../Layout/Images/Blurhash/BlurhashImage.vue | 31 +++--- .../Images/Blurhash/BlurhashImageIcon.vue | 2 +- .../components/Layout/Images/UserImage.vue | 18 ++-- .../Layout/Navigation/NavigationDrawer.vue | 2 +- .../src/components/Layout/SwiperSection.vue | 16 +-- .../src/components/Playback/TrackList.vue | 16 ++- .../src/components/Skeletons/SkeletonCard.vue | 17 +--- .../components/Skeletons/SkeletonItemGrid.vue | 10 +- frontend/src/components/System/AddApiKey.vue | 2 +- .../src/components/System/LocaleSwitcher.vue | 3 +- frontend/src/components/Users/UserCard.vue | 2 +- frontend/src/components/lib/JImg.vue | 12 +-- frontend/src/components/lib/JSafeHtml.vue | 6 +- frontend/src/components/lib/JTransition.vue | 6 +- frontend/src/components/lib/JView.vue | 2 +- .../src/components/lib/JVirtual/JVirtual.vue | 97 +++++++++---------- 62 files changed, 482 insertions(+), 610 deletions(-) diff --git a/frontend/src/components/Buttons/FilterButton.vue b/frontend/src/components/Buttons/FilterButton.vue index 7e7f5a741fa..4ec1fbbad6b 100644 --- a/frontend/src/components/Buttons/FilterButton.vue +++ b/frontend/src/components/Buttons/FilterButton.vue @@ -193,7 +193,7 @@ export interface Filters { years: number[]; } -const props = defineProps<{ +const { item, disabled } = defineProps<{ item: BaseItemDto; disabled?: boolean; }>(); @@ -216,8 +216,8 @@ const yearFilters = ref([]); const isMovieOrTvShow = computed( () => - props.item.CollectionType === 'movies' - || props.item.CollectionType === 'tvshows' + item.CollectionType === 'movies' + || item.CollectionType === 'tvshows' ); const statusFilters = computed<{ label: string; name: ItemFilter }[]>(() => [ @@ -279,7 +279,7 @@ const typeFilters: { label: string; name: TypeFilters }[] = [ * applying filters and sorting */ async function refreshItems(): Promise { - if (!props.item.Id || !props.item.Type) { + if (!item.Id || !item.Type) { return; } @@ -287,8 +287,8 @@ async function refreshItems(): Promise { const response = ( await remote.sdk.newUserApi(getFilterApi).getQueryFiltersLegacy({ userId: remote.auth.currentUserId, - parentId: props.item.Id, - includeItemTypes: [props.item.Type] + parentId: item.Id, + includeItemTypes: [item.Type] }) ).data; @@ -320,7 +320,7 @@ function emitFilterChange(): void { years: selectedYearFilters.value }); } -watch(() => props.item, refreshItems); +watch(() => item, refreshItems);