From f974cd60175e3a5787f07bfc5763c2c03f071769 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);