From bbdb3dcb9d4c73c802250ecae84c38c7c516a3f3 Mon Sep 17 00:00:00 2001 From: wvffle Date: Thu, 21 Jul 2022 01:21:36 +0000 Subject: [PATCH] Fix auto-fixable linter issues --- front/package.json | 1 + front/src/components/About.vue | 6 ++-- front/src/components/AboutPod.vue | 6 ++-- front/src/components/Home.vue | 6 ++-- front/src/components/PageNotFound.vue | 2 +- front/src/components/Queue.vue | 10 +++--- front/src/components/RemoteSearchForm.vue | 7 ++--- front/src/components/SanitizedHtml.vue | 4 +-- front/src/components/Sidebar.vue | 20 ++++++------ front/src/components/admin/SettingsGroup.vue | 4 +-- .../src/components/audio/ChannelEntryCard.vue | 1 - front/src/components/audio/ChannelSeries.vue | 2 +- front/src/components/audio/ChannelsWidget.vue | 2 +- front/src/components/audio/EmbedWizard.vue | 2 +- front/src/components/audio/PlayButton.vue | 24 +++++++------- front/src/components/audio/Player.vue | 2 +- front/src/components/audio/Search.vue | 2 +- front/src/components/audio/VolumeControl.vue | 2 +- front/src/components/audio/album/Widget.vue | 2 +- front/src/components/audio/artist/Widget.vue | 2 +- front/src/components/audio/podcast/Modal.vue | 8 ++--- front/src/components/audio/podcast/Row.vue | 3 +- front/src/components/audio/podcast/Table.vue | 1 - front/src/components/audio/track/Modal.vue | 8 ++--- front/src/components/audio/track/Row.vue | 8 ++--- front/src/components/audio/track/Table.vue | 4 +-- front/src/components/audio/track/Widget.vue | 7 +++-- front/src/components/auth/ApplicationNew.vue | 2 +- front/src/components/auth/Authorize.vue | 2 +- front/src/components/auth/Plugin.vue | 5 ++- front/src/components/channels/UploadForm.vue | 2 +- front/src/components/common/EmptyState.vue | 2 +- front/src/components/common/Username.vue | 2 +- front/src/components/favorites/List.vue | 5 ++- .../components/federation/LibraryWidget.vue | 2 +- front/src/components/library/AlbumBase.vue | 17 +++++----- .../src/components/library/AlbumDropdown.vue | 2 +- front/src/components/library/ArtistBase.vue | 1 - front/src/components/library/EditList.vue | 2 +- front/src/components/library/Home.vue | 2 +- front/src/components/library/TrackBase.vue | 7 ++--- .../src/components/library/radios/Filter.vue | 6 ++-- .../manage/library/LibrariesTable.vue | 3 +- .../components/manage/library/TagsTable.vue | 3 +- .../manage/library/UploadsTable.vue | 6 ++-- .../manage/moderation/InstancePolicyModal.vue | 2 +- .../src/components/moderation/FilterModal.vue | 1 - .../notifications/NotificationRow.vue | 2 +- front/src/components/playlists/Card.vue | 2 +- front/src/components/playlists/Editor.vue | 2 +- front/src/components/playlists/Form.vue | 3 +- .../components/playlists/PlaylistModal.vue | 15 +++++---- front/src/components/playlists/Widget.vue | 2 +- front/src/components/radios/Button.vue | 12 +++---- front/src/composables/audio/usePlayOptions.ts | 16 +++++----- front/src/composables/audio/useQueue.ts | 16 +++++----- front/src/composables/audio/useSound.ts | 8 ++--- front/src/composables/audio/useSoundCache.ts | 11 +++---- .../src/composables/audio/useTrackSources.ts | 26 ++++++++-------- front/src/composables/moderation/useReport.ts | 2 +- front/src/init/axios.ts | 2 +- front/src/router/guards.ts | 2 +- front/src/router/routes/auth.ts | 4 +-- front/src/router/routes/content.ts | 4 +-- front/src/router/routes/index.ts | 2 +- front/src/router/routes/manage.ts | 2 +- front/src/router/routes/settings.ts | 4 +-- front/src/router/routes/user.ts | 4 +-- front/src/store/favorites.ts | 2 +- front/src/store/index.ts | 4 +-- front/src/store/libraries.ts | 2 +- front/src/store/moderation.ts | 2 +- front/src/store/player.ts | 2 +- front/src/store/queue.ts | 2 +- front/src/store/radios.ts | 2 +- front/src/types.ts | 6 ++-- front/src/utils/fomantic.ts | 3 +- front/src/utils/index.ts | 2 +- front/src/views/Notifications.vue | 2 +- front/src/views/admin/ChannelDetail.vue | 4 +-- front/src/views/admin/CommonList.vue | 4 +-- front/src/views/admin/Settings.vue | 1 - front/src/views/admin/library/AlbumDetail.vue | 4 +-- .../src/views/admin/library/ArtistDetail.vue | 4 +-- front/src/views/admin/library/TrackDetail.vue | 4 +-- front/src/views/channels/DetailBase.vue | 1 - .../views/content/libraries/FilesTable.vue | 3 +- front/src/views/content/remote/Card.vue | 8 ++--- front/src/views/library/DetailBase.vue | 8 ++--- front/src/views/library/Edit.vue | 5 ++- front/src/views/playlists/Detail.vue | 2 +- front/src/views/radios/Detail.vue | 4 +-- front/yarn.lock | 31 ++++++++++++++++++- 93 files changed, 249 insertions(+), 224 deletions(-) diff --git a/front/package.json b/front/package.json index 9801d2245..e81081611 100644 --- a/front/package.json +++ b/front/package.json @@ -73,6 +73,7 @@ "eslint-config-standard": "17.0.0", "eslint-plugin-html": "6.2.0", "eslint-plugin-import": "2.26.0", + "eslint-plugin-n": "^15.2.4", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.0.0", "eslint-plugin-vue": "9.2.0", diff --git a/front/src/components/About.vue b/front/src/components/About.vue index 05fe12b49..36c66ae56 100644 --- a/front/src/components/About.vue +++ b/front/src/components/About.vue @@ -23,7 +23,7 @@ const shortDescription = computed(() => get(nodeinfo.value, 'metadata.shortDescr const stats = computed(() => { const users = get(nodeinfo.value, 'usage.users.activeMonth', null) const hours = get(nodeinfo.value, 'metadata.library.music.hours', 0) - + if (users === null) { return null } @@ -39,8 +39,8 @@ const headerStyle = computed(() => { return '' } - return { - backgroundImage: `url(${store.getters['instance/absoluteUrl'](banner.value)})` + return { + backgroundImage: `url(${store.getters['instance/absoluteUrl'](banner.value)})` } }) diff --git a/front/src/components/AboutPod.vue b/front/src/components/AboutPod.vue index cb5847f93..21e29f5aa 100644 --- a/front/src/components/AboutPod.vue +++ b/front/src/components/AboutPod.vue @@ -53,8 +53,8 @@ const headerStyle = computed(() => { return '' } - return { - backgroundImage: `url(${store.getters['instance/absoluteUrl'](banner.value)})` + return { + backgroundImage: `url(${store.getters['instance/absoluteUrl'](banner.value)})` } }) @@ -138,7 +138,7 @@ const headerStyle = computed(() => { About this pod - diff --git a/front/src/components/Home.vue b/front/src/components/Home.vue index 027f5d4bb..3a09cbc7f 100644 --- a/front/src/components/Home.vue +++ b/front/src/components/Home.vue @@ -35,7 +35,7 @@ const defaultUploadQuota = computed(() => get(nodeinfo.value, 'metadata.defaultU const stats = computed(() => { const users = get(nodeinfo.value, 'usage.users.activeMonth', null) const hours = get(nodeinfo.value, 'metadata.library.music.hours', 0) - + if (users === null) { return null } @@ -48,8 +48,8 @@ const headerStyle = computed(() => { return '' } - return { - backgroundImage: `url(${store.getters['instance/absoluteUrl'](banner.value)})` + return { + backgroundImage: `url(${store.getters['instance/absoluteUrl'](banner.value)})` } }) diff --git a/front/src/components/PageNotFound.vue b/front/src/components/PageNotFound.vue index c0fa64e4b..60c7121e3 100644 --- a/front/src/components/PageNotFound.vue +++ b/front/src/components/PageNotFound.vue @@ -5,7 +5,7 @@ import { useGettext } from 'vue3-gettext' const path = window.location.href const { $pgettext } = useGettext() -const labels = computed(() => ({ +const labels = computed(() => ({ title: $pgettext('Head/*/Title', 'Page Not Found') })) diff --git a/front/src/components/Queue.vue b/front/src/components/Queue.vue index 55739de92..8a6f748b7 100644 --- a/front/src/components/Queue.vue +++ b/front/src/components/Queue.vue @@ -8,7 +8,7 @@ import TrackFavoriteIcon from '~/components/favorites/TrackFavoriteIcon.vue' import TrackPlaylistIcon from '~/components/playlists/TrackPlaylistIcon.vue' import Draggable from 'vuedraggable' import { whenever, useTimeoutFn, useWindowScroll, useWindowSize } from '@vueuse/core' -import { useGettext } from "vue3-gettext" +import { useGettext } from 'vue3-gettext' import useQueue from '~/composables/audio/useQueue' import usePlayer from '~/composables/audio/usePlayer' @@ -42,8 +42,8 @@ onMounted(async () => { const { $pgettext } = useGettext() -const { - playing, +const { + playing, loading: isLoadingAudio, errored, focused: playerFocused, @@ -54,10 +54,10 @@ const { bufferProgress, currentTime, pause, - resume, + resume } = usePlayer() -const { +const { focused: queueFocused, currentTrack, hasNext, diff --git a/front/src/components/RemoteSearchForm.vue b/front/src/components/RemoteSearchForm.vue index 7847ca934..d20e0a653 100644 --- a/front/src/components/RemoteSearchForm.vue +++ b/front/src/components/RemoteSearchForm.vue @@ -29,16 +29,15 @@ const type = ref(props.initialType) const id = ref(props.initialId) const errors = ref([] as string[]) - const { $pgettext } = useGettext() const labels = computed(() => ({ - title: type.value === 'rss' + title: type.value === 'rss' ? $pgettext('Head/Fetch/Title', 'Subscribe to a podcast RSS feed') : $pgettext('Head/Fetch/Title', 'Subscribe to a podcast hosted on the Fediverse'), - fieldLabel: type.value === 'rss' + fieldLabel: type.value === 'rss' ? $pgettext('*/*/*', 'RSS feed location') : $pgettext('*/*/*', 'Fediverse object'), - fieldPlaceholder: type.value === 'rss' + fieldPlaceholder: type.value === 'rss' ? $pgettext('Head/Fetch/Field.Placeholder', 'https://website.example.com/rss.xml') : $pgettext('Head/Fetch/Field.Placeholder', '@username@example.com') })) diff --git a/front/src/components/SanitizedHtml.vue b/front/src/components/SanitizedHtml.vue index 65ca4358e..374bd4b33 100644 --- a/front/src/components/SanitizedHtml.vue +++ b/front/src/components/SanitizedHtml.vue @@ -8,7 +8,7 @@ interface Props { } const props = withDefaults(defineProps(), { - tag: 'div' + tag: 'div' }) const html = computed(() => DOMPurify.sanitize(props.html)) @@ -17,4 +17,4 @@ const root = () => h(props.tag, { innerHTML: html.value }) \ No newline at end of file + diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index f8aecc373..a6696ad41 100644 --- a/front/src/components/Sidebar.vue +++ b/front/src/components/Sidebar.vue @@ -39,7 +39,7 @@ const labels = computed(() => ({ selectTrack: $pgettext('Sidebar/Player/Hidden text', 'Play this track'), pendingFollows: $pgettext('Sidebar/Notifications/Hidden text', 'Pending follow requests'), pendingReviewEdits: $pgettext('Sidebar/Moderation/Hidden text', 'Pending review edits'), - pendingReviewReports: $pgettext('Sidebar/Moderation/Hidden text', 'Pending review reports'), + pendingReviewReports: $pgettext('Sidebar/Moderation/Hidden text', 'Pending review reports'), language: $pgettext('Sidebar/Settings/Dropdown.Label/Short, Verb', 'Language'), theme: $pgettext('Sidebar/Settings/Dropdown.Label/Short, Verb', 'Theme'), addContent: $pgettext('*/Library/*/Verb', 'Add content'), @@ -51,11 +51,11 @@ const expanded = ref('explore') const ROUTE_MAPPINGS: Record = { explore: [ - 'search', - 'library.index', - 'library.podcasts.browse', - 'library.albums.browse', - 'library.albums.detail', + 'search', + 'library.index', + 'library.podcasts.browse', + 'library.albums.browse', + 'library.albums.detail', 'library.artists.browse', 'library.artists.detail', 'library.tracks.detail', @@ -88,10 +88,10 @@ watchEffect(() => { expanded.value = store.state.auth.authenticated ? 'myLibrary' : 'explore' }) -const moderationNotifications = computed(() => - store.state.ui.notifications.pendingReviewEdits - + store.state.ui.notifications.pendingReviewReports - + store.state.ui.notifications.pendingReviewRequests +const moderationNotifications = computed(() => + store.state.ui.notifications.pendingReviewEdits + + store.state.ui.notifications.pendingReviewReports + + store.state.ui.notifications.pendingReviewRequests ) Promise.resolve().then(async () => { diff --git a/front/src/components/admin/SettingsGroup.vue b/front/src/components/admin/SettingsGroup.vue index 33f9bfce1..fc7df1802 100644 --- a/front/src/components/admin/SettingsGroup.vue +++ b/front/src/components/admin/SettingsGroup.vue @@ -53,7 +53,7 @@ const save = async () => { let contentType = 'application/json' if (fileSettings.value.length > 0) { - const fileSettingsIDs = fileSettings.value.map((setting) => setting.identifier) + const fileSettingsIDs = fileSettings.value.map((setting) => setting.identifier) const data = settings.value.reduce((data, setting) => { if (fileSettingsIDs.includes(setting.identifier)) { const input = fileRefs[setting.identifier] @@ -69,7 +69,7 @@ const save = async () => { } return data - }, {} as Record) + }, {} as Record) contentType = 'multipart/form-data' postData = useFormData(data) diff --git a/front/src/components/audio/ChannelEntryCard.vue b/front/src/components/audio/ChannelEntryCard.vue index 0d5959bdb..cbe9abeae 100644 --- a/front/src/components/audio/ChannelEntryCard.vue +++ b/front/src/components/audio/ChannelEntryCard.vue @@ -7,7 +7,6 @@ import useQueue from '~/composables/audio/useQueue' import usePlayer from '~/composables/audio/usePlayer' import { computed } from 'vue' - interface Props { // TODO (wvffle): Is it correct type? entry: Track diff --git a/front/src/components/audio/ChannelSeries.vue b/front/src/components/audio/ChannelSeries.vue index d41f9cc39..587de6f99 100644 --- a/front/src/components/audio/ChannelSeries.vue +++ b/front/src/components/audio/ChannelSeries.vue @@ -90,7 +90,7 @@ export default { const params = clone(this.filters) params.page_size = this.limit params.include_channels = true - axios.get(url, { params: params }).then((response) => { + axios.get(url, { params }).then((response) => { self.nextPage = response.data.next self.isLoading = false self.objects = self.objects.concat(response.data.results) diff --git a/front/src/components/audio/ChannelsWidget.vue b/front/src/components/audio/ChannelsWidget.vue index 70b85a62d..146461e39 100644 --- a/front/src/components/audio/ChannelsWidget.vue +++ b/front/src/components/audio/ChannelsWidget.vue @@ -71,7 +71,7 @@ export default { const params = clone(this.filters) params.page_size = this.limit params.include_channels = true - axios.get(url, { params: params }).then((response) => { + axios.get(url, { params }).then((response) => { self.nextPage = response.data.next self.isLoading = false self.objects = self.objects.concat(response.data.results) diff --git a/front/src/components/audio/EmbedWizard.vue b/front/src/components/audio/EmbedWizard.vue index 3e217d7f7..76ae11120 100644 --- a/front/src/components/audio/EmbedWizard.vue +++ b/front/src/components/audio/EmbedWizard.vue @@ -32,7 +32,7 @@ const iframeSrc = computed(() => { const bParam = !window.location.href.startsWith(instanceUrl) ? `&b=${instanceUrl}` : '' - + return `${base}embed.html?&type=${props.type}&id=${props.id}${bParam}` }) diff --git a/front/src/components/audio/PlayButton.vue b/front/src/components/audio/PlayButton.vue index f046a0a68..035967139 100644 --- a/front/src/components/audio/PlayButton.vue +++ b/front/src/components/audio/PlayButton.vue @@ -51,10 +51,10 @@ const props = withDefaults(defineProps(), { paused: () => false }) -const { - playable, - filterableArtist, - filterArtist, +const { + playable, + filterableArtist, + filterArtist, enqueue, enqueueNext, replacePlay, @@ -75,14 +75,14 @@ const labels = computed(() => ({ addToPlaylist: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Add to playlist…'), hideArtist: $pgettext('*/Queue/Dropdown/Button/Label/Short', 'Hide content from this artist'), replacePlay: props.track - ? $pgettext('*/Queue/Dropdown/Button/Title', 'Play track') - : props.album - ? $pgettext('*/Queue/Dropdown/Button/Title', 'Play album') - : props.artist - ? $pgettext('*/Queue/Dropdown/Button/Title', 'Play artist') - : props.playlist - ? $pgettext('*/Queue/Dropdown/Button/Title', 'Play playlist') - : $pgettext('*/Queue/Dropdown/Button/Title', 'Play tracks') + ? $pgettext('*/Queue/Dropdown/Button/Title', 'Play track') + : props.album + ? $pgettext('*/Queue/Dropdown/Button/Title', 'Play album') + : props.artist + ? $pgettext('*/Queue/Dropdown/Button/Title', 'Play artist') + : props.playlist + ? $pgettext('*/Queue/Dropdown/Button/Title', 'Play playlist') + : $pgettext('*/Queue/Dropdown/Button/Title', 'Play tracks') })) const title = computed(() => { diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue index 486ab46b4..7fca3d0fe 100644 --- a/front/src/components/audio/Player.vue +++ b/front/src/components/audio/Player.vue @@ -284,7 +284,7 @@ const switchTab = () => { > {{ currentTimeFormatted }} - | + | {{ durationFormatted }} diff --git a/front/src/components/audio/Search.vue b/front/src/components/audio/Search.vue index 0e6eee80c..bcc414586 100644 --- a/front/src/components/audio/Search.vue +++ b/front/src/components/audio/Search.vue @@ -125,7 +125,7 @@ export default { query: this.query } axios.get('search', { - params: params + params }).then((response) => { self.results = self.castResults(response.data) self.isLoading = false diff --git a/front/src/components/audio/VolumeControl.vue b/front/src/components/audio/VolumeControl.vue index e1354a46d..1bb7ae64f 100644 --- a/front/src/components/audio/VolumeControl.vue +++ b/front/src/components/audio/VolumeControl.vue @@ -17,7 +17,7 @@ const sliderVolume = computed({ }) const { $pgettext } = useGettext() -const labels = computed(() => ({ +const labels = computed(() => ({ unmute: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Unmute'), mute: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Mute'), slider: $pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Adjust volume') diff --git a/front/src/components/audio/album/Widget.vue b/front/src/components/audio/album/Widget.vue index 15246c83f..5e61c2631 100644 --- a/front/src/components/audio/album/Widget.vue +++ b/front/src/components/audio/album/Widget.vue @@ -107,7 +107,7 @@ export default { const params = { q: this.query, ...this.filters } params.page_size = this.limit params.offset = this.offset - axios.get(url, { params: params }).then((response) => { + axios.get(url, { params }).then((response) => { self.previousPage = response.data.previous self.nextPage = response.data.next self.isLoading = false diff --git a/front/src/components/audio/artist/Widget.vue b/front/src/components/audio/artist/Widget.vue index eade31314..13128e9d9 100644 --- a/front/src/components/audio/artist/Widget.vue +++ b/front/src/components/audio/artist/Widget.vue @@ -103,7 +103,7 @@ export default { const params = { q: this.query, ...this.filters } params.page_size = this.limit params.offset = this.offset - axios.get(url, { params: params }).then((response) => { + axios.get(url, { params }).then((response) => { self.previousPage = response.data.previous self.nextPage = response.data.next self.isLoading = false diff --git a/front/src/components/audio/podcast/Modal.vue b/front/src/components/audio/podcast/Modal.vue index 7533257e0..f846f2137 100644 --- a/front/src/components/audio/podcast/Modal.vue +++ b/front/src/components/audio/podcast/Modal.vue @@ -47,22 +47,22 @@ const store = useStore() const isFavorite = computed(() => store.getters['favorites/isFavorite'](props.track.id)) const { $pgettext } = useGettext() -const favoriteButton = computed(() => isFavorite.value +const favoriteButton = computed(() => isFavorite.value ? $pgettext('Content/Track/Icon.Tooltip/Verb', 'Remove from favorites') : $pgettext('Content/Track/*/Verb', 'Add to favorites') ) -const trackDetailsButton = computed(() => props.track.artist?.content_category === 'podcast' +const trackDetailsButton = computed(() => props.track.artist?.content_category === 'podcast' ? $pgettext('*/Queue/Dropdown/Button/Label/Short', 'Episode details') : $pgettext('*/Queue/Dropdown/Button/Label/Short', 'Track details') ) -const albumDetailsButton = computed(() => props.track.artist?.content_category === 'podcast' +const albumDetailsButton = computed(() => props.track.artist?.content_category === 'podcast' ? $pgettext('*/Queue/Dropdown/Button/Label/Short', 'View series') : $pgettext('*/Queue/Dropdown/Button/Label/Short', 'View album') ) -const artistDetailsButton = computed(() => props.track.artist?.content_category === 'podcast' +const artistDetailsButton = computed(() => props.track.artist?.content_category === 'podcast' ? $pgettext('*/Queue/Dropdown/Button/Label/Short', 'View channel') : $pgettext('*/Queue/Dropdown/Button/Label/Short', 'View artist') ) diff --git a/front/src/components/audio/podcast/Row.vue b/front/src/components/audio/podcast/Row.vue index 15c7a1604..9c46e2320 100644 --- a/front/src/components/audio/podcast/Row.vue +++ b/front/src/components/audio/podcast/Row.vue @@ -1,7 +1,6 @@ -
diff --git a/front/src/components/playlists/Widget.vue b/front/src/components/playlists/Widget.vue index 813ba94b2..df1b845a9 100644 --- a/front/src/components/playlists/Widget.vue +++ b/front/src/components/playlists/Widget.vue @@ -107,7 +107,7 @@ export default { const params = clone(this.filters) params.page_size = this.limit params.offset = this.offset - axios.get(url, { params: params }).then((response) => { + axios.get(url, { params }).then((response) => { self.previousPage = response.data.previous self.nextPage = response.data.next self.isLoading = false diff --git a/front/src/components/radios/Button.vue b/front/src/components/radios/Button.vue index 5bcfe8a8f..b3d70c6f7 100644 --- a/front/src/components/radios/Button.vue +++ b/front/src/components/radios/Button.vue @@ -27,12 +27,12 @@ const running = computed(() => { return false } - return store.state.radios.current?.type === props.type - && store.state.radios.current?.customRadioId === props.customRadioId - && ( - typeof props.objectId === 'string' - || store.state.radios.current?.objectId.fullUsername === props.objectId?.fullUsername - ) + return store.state.radios.current?.type === props.type && + store.state.radios.current?.customRadioId === props.customRadioId && + ( + typeof props.objectId === 'string' || + store.state.radios.current?.objectId.fullUsername === props.objectId?.fullUsername + ) }) const { $pgettext } = useGettext() diff --git a/front/src/composables/audio/usePlayOptions.ts b/front/src/composables/audio/usePlayOptions.ts index d2315cf7c..b41083612 100644 --- a/front/src/composables/audio/usePlayOptions.ts +++ b/front/src/composables/audio/usePlayOptions.ts @@ -3,7 +3,7 @@ import type { ContentFilter } from '~/store/moderation' import { useStore } from '~/store' import { useGettext } from 'vue3-gettext' -import { computed, ref } from "vue" +import { computed, ref } from 'vue' import axios from 'axios' import usePlayer from '~/composables/audio/usePlayer' import useQueue from '~/composables/audio/useQueue' @@ -36,8 +36,8 @@ export default (props: PlayOptionsProps) => { if (props.track) { return props.track.uploads?.length > 0 } else if (props.artist) { - return props.artist.tracks_count > 0 - || props.artist.albums.some((album) => album.is_playable === true) + return props.artist.tracks_count > 0 || + props.artist.albums.some((album) => album.is_playable === true) } else if (props.tracks) { return props.tracks.some((track) => (track.uploads?.length ?? 0) > 0) } @@ -55,7 +55,7 @@ export default (props: PlayOptionsProps) => { } store.commit('ui/addMessage', { - content: $npgettext('*/Queue/Message', '%{ count } track was added to your queue', '%{ count } tracks were added to your queue', tracks.length, { + content: $npgettext('*/Queue/Message', '%{ count } track was added to your queue', '%{ count } tracks were added to your queue', tracks.length, { count: tracks.length.toString() }), date: new Date() @@ -70,8 +70,8 @@ export default (props: PlayOptionsProps) => { // when fetching artists/or album tracks, sometimes, we may have to fetch // multiple pages - const response = await axios.get('tracks/', { - params: { + const response = await axios.get('tracks/', { + params: { ...params, page_size: 100, page, @@ -136,7 +136,7 @@ export default (props: PlayOptionsProps) => { jQuery(el.value).find('.ui.dropdown').dropdown('hide') const tracks = await getPlayableTracks() - store.dispatch('queue/appendMany', { tracks: tracks }).then(() => addMessage(tracks)) + store.dispatch('queue/appendMany', { tracks }).then(() => addMessage(tracks)) } const enqueueNext = async (next = false) => { @@ -188,7 +188,7 @@ export default (props: PlayOptionsProps) => { replacePlay() } - return { + return { playable, filterableArtist, filterArtist, diff --git a/front/src/composables/audio/useQueue.ts b/front/src/composables/audio/useQueue.ts index 71a5161fc..e0d7347c2 100644 --- a/front/src/composables/audio/useQueue.ts +++ b/front/src/composables/audio/useQueue.ts @@ -1,11 +1,11 @@ -import type { Track } from "~/types" +import type { Track } from '~/types' import { useTimeoutFn, useThrottleFn, useTimeAgo, useNow, whenever } from '@vueuse/core' import { Howler } from 'howler' import { gettext } from '~/init/locale' -import { ref, computed } from "vue" +import { ref, computed } from 'vue' import { sum } from 'lodash-es' -import store from "~/store" +import store from '~/store' const { $pgettext } = gettext @@ -25,7 +25,7 @@ const previous = () => store.dispatch('queue/previous') const focused = computed(() => store.state.ui.queueFocused === 'queue') -// +// // Track list // const tracksChangeBuffer = ref(null) @@ -44,7 +44,7 @@ const reorder = (oldIndex: number, newIndex: number) => { tracksChangeBuffer.value = null } -// +// // Shuffle // const isShuffling = ref(false) @@ -88,12 +88,12 @@ const endsIn = useTimeAgo(computed(() => { })) export default () => { - return { + return { currentTrack, currentIndex, hasNext, hasPrevious, - isEmpty, + isEmpty, isShuffling, removeTrack, @@ -110,4 +110,4 @@ export default () => { endsIn, focused } -} \ No newline at end of file +} diff --git a/front/src/composables/audio/useSound.ts b/front/src/composables/audio/useSound.ts index 029d2f74e..6d530a8f6 100644 --- a/front/src/composables/audio/useSound.ts +++ b/front/src/composables/audio/useSound.ts @@ -1,12 +1,12 @@ import type { Track } from '~/types' -import { ref, computed } from "vue" +import { ref, computed } from 'vue' import { Howl } from 'howler' import useTrackSources from '~/composables/audio/useTrackSources' import useSoundCache from '~/composables/audio/useSoundCache' import usePlayer from '~/composables/audio/usePlayer' -import store from "~/store" -import { createEventHook } from "@vueuse/core" +import store from '~/store' +import { createEventHook } from '@vueuse/core' interface Sound { id?: number @@ -152,4 +152,4 @@ export default () => { currentSound, onSoundProgress: soundProgress.on } -} \ No newline at end of file +} diff --git a/front/src/composables/audio/useSoundCache.ts b/front/src/composables/audio/useSoundCache.ts index 8d88a0b4c..5f0a0c242 100644 --- a/front/src/composables/audio/useSoundCache.ts +++ b/front/src/composables/audio/useSoundCache.ts @@ -1,7 +1,7 @@ -import type { Howl } from "howler" +import type { Howl } from 'howler' -import { sortBy } from "lodash-es" -import { reactive, watchEffect, ref } from "vue" +import { sortBy } from 'lodash-es' +import { reactive, watchEffect, ref } from 'vue' const MAX_PRELOADED = 3 @@ -15,7 +15,7 @@ const soundCache = reactive(new Map()) const cleaningCache = ref(false) watchEffect(() => { - let toRemove = soundCache.size - MAX_PRELOADED + const toRemove = soundCache.size - MAX_PRELOADED if (toRemove > 0 && !cleaningCache.value) { cleaningCache.value = true @@ -33,7 +33,6 @@ watchEffect(() => { } }) - export default () => { return soundCache -} \ No newline at end of file +} diff --git a/front/src/composables/audio/useTrackSources.ts b/front/src/composables/audio/useTrackSources.ts index 44e113b9a..500cc8606 100644 --- a/front/src/composables/audio/useTrackSources.ts +++ b/front/src/composables/audio/useTrackSources.ts @@ -1,10 +1,10 @@ -import type { Track } from "~/types" +import type { Track } from '~/types' import store from '~/store' import updateQueryString from '~/composables/updateQueryString' export interface TrackSource { - url: string + url: string type: string } @@ -29,23 +29,23 @@ export default (trackData: Track): TrackSource[] => { sources.push({ type: 'mp3', url: updateQueryString( - store.getters['instance/absoluteUrl'](trackData.listen_url), - 'to', + store.getters['instance/absoluteUrl'](trackData.listen_url), + 'to', 'mp3' ) }) const token = store.state.auth.scopedTokens.listen if (store.state.auth.authenticated && token !== null) { - // we need to send the token directly in url - // so authentication can be checked by the backend - // because for audio files we cannot use the regular Authentication - // header - return sources.map(source => ({ - ...source, - url: updateQueryString(source.url, 'token', token) - })) + // we need to send the token directly in url + // so authentication can be checked by the backend + // because for audio files we cannot use the regular Authentication + // header + return sources.map(source => ({ + ...source, + url: updateQueryString(source.url, 'token', token) + })) } return sources -} \ No newline at end of file +} diff --git a/front/src/composables/moderation/useReport.ts b/front/src/composables/moderation/useReport.ts index 7d4142007..2b3786c27 100644 --- a/front/src/composables/moderation/useReport.ts +++ b/front/src/composables/moderation/useReport.ts @@ -134,7 +134,7 @@ const report = (obj: ReportableObject) => { store.dispatch('moderation/report', obj.target) } -export default () => ({ +export default () => ({ getReportableObjects, report }) diff --git a/front/src/init/axios.ts b/front/src/init/axios.ts index 0d8d2e6ec..a0a7741ae 100644 --- a/front/src/init/axios.ts +++ b/front/src/init/axios.ts @@ -83,7 +83,7 @@ export const install: InitModule = ({ store, router }) => { case 500: error.backendErrors.push('A server error occurred') break - + default: if (error.response?.data as object) { const data = error.response?.data as Record diff --git a/front/src/router/guards.ts b/front/src/router/guards.ts index f0804e492..3f16721c6 100644 --- a/front/src/router/guards.ts +++ b/front/src/router/guards.ts @@ -11,4 +11,4 @@ export const hasPermissions = (permission: Permission) => (to: RouteLocationNorm console.log('Not authenticated. Redirecting to library.') next({ name: 'library.index' }) -} \ No newline at end of file +} diff --git a/front/src/router/routes/auth.ts b/front/src/router/routes/auth.ts index 0ade5cb5d..a537ec8a1 100644 --- a/front/src/router/routes/auth.ts +++ b/front/src/router/routes/auth.ts @@ -61,5 +61,5 @@ export default [ path: '/logout', name: 'logout', component: () => import('~/components/auth/Logout.vue') - }, -] as RouteRecordRaw[] \ No newline at end of file + } +] as RouteRecordRaw[] diff --git a/front/src/router/routes/content.ts b/front/src/router/routes/content.ts index f95a8dece..57320e3d2 100644 --- a/front/src/router/routes/content.ts +++ b/front/src/router/routes/content.ts @@ -37,5 +37,5 @@ export default [ name: 'content.remote.index', component: () => import('~/views/content/remote/Home.vue') }] - }, -] as RouteRecordRaw[] \ No newline at end of file + } +] as RouteRecordRaw[] diff --git a/front/src/router/routes/index.ts b/front/src/router/routes/index.ts index 730b23f3b..d275225f6 100644 --- a/front/src/router/routes/index.ts +++ b/front/src/router/routes/index.ts @@ -104,4 +104,4 @@ export default [ name: '404', component: () => import('~/components/PageNotFound.vue') } -] as RouteRecordRaw[] \ No newline at end of file +] as RouteRecordRaw[] diff --git a/front/src/router/routes/manage.ts b/front/src/router/routes/manage.ts index ed5c5e1d7..65342de21 100644 --- a/front/src/router/routes/manage.ts +++ b/front/src/router/routes/manage.ts @@ -178,5 +178,5 @@ export default [ props: true } ] - }, + } ] as RouteRecordRaw[] diff --git a/front/src/router/routes/settings.ts b/front/src/router/routes/settings.ts index e5010f51b..6446443b6 100644 --- a/front/src/router/routes/settings.ts +++ b/front/src/router/routes/settings.ts @@ -26,5 +26,5 @@ export default [ name: 'settings.applications.edit', component: () => import('~/components/auth/ApplicationEdit.vue'), props: true - }, -] as RouteRecordRaw[] \ No newline at end of file + } +] as RouteRecordRaw[] diff --git a/front/src/router/routes/user.ts b/front/src/router/routes/user.ts index 61c0721f0..c968029a6 100644 --- a/front/src/router/routes/user.ts +++ b/front/src/router/routes/user.ts @@ -3,7 +3,7 @@ import type { RouteRecordRaw } from 'vue-router' import store from '~/store' export default [ - { suffix: '.full', path: '/@:username@:domain' }, + { suffix: '.full', path: '/@:username@:domain' }, { suffix: '', path: '/@:username' } ].map((route) => { return { @@ -31,4 +31,4 @@ export default [ } ] } -}) as RouteRecordRaw[] \ No newline at end of file +}) as RouteRecordRaw[] diff --git a/front/src/store/favorites.ts b/front/src/store/favorites.ts index 36df21b96..cfadda0bf 100644 --- a/front/src/store/favorites.ts +++ b/front/src/store/favorites.ts @@ -71,7 +71,7 @@ const store: Module = { page_size: 50, ordering: '-creation_date' } - const promise = axios.get('favorites/tracks/all/', { params: params }) + const promise = axios.get('favorites/tracks/all/', { params }) return promise.then((response) => { logger.info('Fetched a batch of ' + response.data.results.length + ' favorites') response.data.results.forEach((result: { track: string }) => { diff --git a/front/src/store/index.ts b/front/src/store/index.ts index f2f824959..eb9bdd38e 100644 --- a/front/src/store/index.ts +++ b/front/src/store/index.ts @@ -110,7 +110,7 @@ export default createStore({ mbid: track.mbid, uploads: track.uploads, listen_url: track.listen_url, - artist: artist, + artist, album: {} } if (track.album) { @@ -119,7 +119,7 @@ export default createStore({ title: track.album.title, mbid: track.album.mbid, cover: track.album.cover, - artist: artist + artist } } return data diff --git a/front/src/store/libraries.ts b/front/src/store/libraries.ts index 679045ae4..b890ccde3 100644 --- a/front/src/store/libraries.ts +++ b/front/src/store/libraries.ts @@ -60,7 +60,7 @@ const store: Module = { commit('follows', { library: uuid, follow: null }) }, () => { logger.info('Error while unsubscribing from library') - commit('follows', { library: uuid, follow: follow }) + commit('follows', { library: uuid, follow }) }) } }, diff --git a/front/src/store/moderation.ts b/front/src/store/moderation.ts index a335b5ec5..bbbf86b5f 100644 --- a/front/src/store/moderation.ts +++ b/front/src/store/moderation.ts @@ -139,7 +139,7 @@ const store: Module = { page_size: 100, ordering: '-creation_date' } - promise = axios.get('moderation/content-filters/', { params: params }) + promise = axios.get('moderation/content-filters/', { params }) } return promise.then((response) => { logger.info('Fetched a batch of ' + response.data.results.length + ' filters') diff --git a/front/src/store/player.ts b/front/src/store/player.ts index 2cf8bec60..66104906f 100644 --- a/front/src/store/player.ts +++ b/front/src/store/player.ts @@ -34,7 +34,7 @@ const store: Module = { currentTime: 0, errored: false, bufferProgress: 0, - looping: 0 + looping: 0 }, mutations: { reset (state) { diff --git a/front/src/store/queue.ts b/front/src/store/queue.ts index 8e9c1f6ef..a7427719f 100644 --- a/front/src/store/queue.ts +++ b/front/src/store/queue.ts @@ -96,7 +96,7 @@ const store: Module = { const total = tracks.length tracks.forEach((track: Track, i: number) => { - const promise = dispatch('append', { track: track, index: index }) + const promise = dispatch('append', { track, index }) index += 1 if (callback && i + 1 === total) { diff --git a/front/src/store/radios.ts b/front/src/store/radios.ts index 7e4e45266..63c1ae617 100644 --- a/front/src/store/radios.ts +++ b/front/src/store/radios.ts @@ -86,7 +86,7 @@ const store: Module = { radio_type: type, related_object_id: objectId, custom_radio: customRadioId, - config: config + config } if (clientOnly) { diff --git a/front/src/types.ts b/front/src/types.ts index 27b711453..53d3094c7 100644 --- a/front/src/types.ts +++ b/front/src/types.ts @@ -3,6 +3,8 @@ import type { Store } from 'vuex' import type { Router } from 'vue-router' import type { AxiosError } from 'axios' import type { RootState } from '~/store' + +// eslint-disable-next-line import type { ComponentPublicInstance } from '@vue/runtime-core' export type FunctionRef = Element | ComponentPublicInstance | null @@ -100,7 +102,6 @@ export interface Track { is_local: boolean } - export interface Channel { id: string uuid: string @@ -195,6 +196,7 @@ export interface Listening { } // API stuff +// eslint-disable-next-line export interface APIErrorResponse extends Record {} export interface BackendError extends AxiosError { @@ -360,4 +362,4 @@ export interface Note { author: Actor // TODO (wvffle): Check if is valid summary: string creation_date: string -} \ No newline at end of file +} diff --git a/front/src/utils/fomantic.ts b/front/src/utils/fomantic.ts index 37d72a4ac..c305b45f5 100644 --- a/front/src/utils/fomantic.ts +++ b/front/src/utils/fomantic.ts @@ -3,7 +3,6 @@ import $ from 'jquery' import { tryOnMounted, useCurrentElement } from '@vueuse/core' - export const getDropdown = (selector = '.ui.dropdown'): JQuery => { const el = useCurrentElement() return $(el.value).find(selector) @@ -11,7 +10,7 @@ export const getDropdown = (selector = '.ui.dropdown'): JQuery => { export const setupDropdown = (selector: string | HTMLElement = '.ui.dropdown') => tryOnMounted(() => { const el = useCurrentElement() - const $dropdown = typeof selector === 'string' + const $dropdown = typeof selector === 'string' ? $(el.value).find(selector) : $(selector) diff --git a/front/src/utils/index.ts b/front/src/utils/index.ts index 49835de88..a9be156af 100644 --- a/front/src/utils/index.ts +++ b/front/src/utils/index.ts @@ -30,7 +30,7 @@ export function parseAPIErrors (responseData: APIErrorResponse, parentField?: st })) continue - } + } // Handle nested errors errors.push(...parseAPIErrors(value, fieldName)) diff --git a/front/src/views/Notifications.vue b/front/src/views/Notifications.vue index 5ae03987b..c6d0edbb1 100644 --- a/front/src/views/Notifications.vue +++ b/front/src/views/Notifications.vue @@ -286,7 +286,7 @@ export default { }, fetch (params) { this.isLoading = true - axios.get('federation/inbox/', { params: params }).then(response => { + axios.get('federation/inbox/', { params }).then(response => { this.isLoading = false this.notifications = response.data }) diff --git a/front/src/views/admin/ChannelDetail.vue b/front/src/views/admin/ChannelDetail.vue index 50f325322..901254ff0 100644 --- a/front/src/views/admin/ChannelDetail.vue +++ b/front/src/views/admin/ChannelDetail.vue @@ -201,9 +201,9 @@ Description - diff --git a/front/src/views/admin/CommonList.vue b/front/src/views/admin/CommonList.vue index b755c0c71..b342a49db 100644 --- a/front/src/views/admin/CommonList.vue +++ b/front/src/views/admin/CommonList.vue @@ -74,7 +74,7 @@ const title = computed(() => labels.value[props.type]) :default-query="defaultQuery" :ordering-config-name="null" /> - @@ -102,7 +102,7 @@ const title = computed(() => labels.value[props.type]) :default-query="defaultQuery" :ordering-config-name="null" /> - diff --git a/front/src/views/admin/Settings.vue b/front/src/views/admin/Settings.vue index faade6432..ee8c0c1b3 100644 --- a/front/src/views/admin/Settings.vue +++ b/front/src/views/admin/Settings.vue @@ -4,7 +4,6 @@ import type { SettingsGroup as SettingsGroupType } from '~/types' import axios from 'axios' import $ from 'jquery' - import SettingsGroup from '~/components/admin/SettingsGroup.vue' import { useCurrentElement } from '@vueuse/core' diff --git a/front/src/views/admin/library/AlbumDetail.vue b/front/src/views/admin/library/AlbumDetail.vue index 7f535b5a2..55a2613ee 100644 --- a/front/src/views/admin/library/AlbumDetail.vue +++ b/front/src/views/admin/library/AlbumDetail.vue @@ -212,9 +212,9 @@ Description - diff --git a/front/src/views/admin/library/ArtistDetail.vue b/front/src/views/admin/library/ArtistDetail.vue index 296723469..e613d057e 100644 --- a/front/src/views/admin/library/ArtistDetail.vue +++ b/front/src/views/admin/library/ArtistDetail.vue @@ -211,9 +211,9 @@ Description - diff --git a/front/src/views/admin/library/TrackDetail.vue b/front/src/views/admin/library/TrackDetail.vue index 26f9fdda8..853b5d936 100644 --- a/front/src/views/admin/library/TrackDetail.vue +++ b/front/src/views/admin/library/TrackDetail.vue @@ -348,9 +348,9 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` Description - diff --git a/front/src/views/channels/DetailBase.vue b/front/src/views/channels/DetailBase.vue index e188b1d2f..2bf068c45 100644 --- a/front/src/views/channels/DetailBase.vue +++ b/front/src/views/channels/DetailBase.vue @@ -73,7 +73,6 @@ const fetchData = async () => { } else { await router.replace({ name: 'channels.detail', params: { id: actor.full_username } }) } - } } catch (error) { // TODO (wvffle): Handle error diff --git a/front/src/views/content/libraries/FilesTable.vue b/front/src/views/content/libraries/FilesTable.vue index eacbeeec8..e82ee4ba1 100644 --- a/front/src/views/content/libraries/FilesTable.vue +++ b/front/src/views/content/libraries/FilesTable.vue @@ -1,7 +1,6 @@