diff --git a/front/src/App.vue b/front/src/App.vue index 4bc357c44..0db4ba1b4 100644 --- a/front/src/App.vue +++ b/front/src/App.vue @@ -1,22 +1,23 @@ diff --git a/front/src/components/library/Albums.vue b/front/src/components/library/Albums.vue index afec15546..6fb0d84b5 100644 --- a/front/src/components/library/Albums.vue +++ b/front/src/components/library/Albums.vue @@ -2,19 +2,23 @@ import type { RouteWithPreferences, OrderingField } from '~/store/ui' import type { OrderingProps } from '~/composables/useOrdering' -import qs from 'qs' -import axios from 'axios' -import $ from 'jquery' import { onBeforeRouteUpdate, useRouter } from 'vue-router' import { computed, onMounted, reactive, ref, watch } from 'vue' import { useGettext } from 'vue3-gettext' +import { useStore } from '~/store' + +import axios from 'axios' +import $ from 'jquery' +import qs from 'qs' + +import TagsSelector from '~/components/library/TagsSelector.vue' import AlbumCard from '~/components/audio/album/Card.vue' import Pagination from '~/components/vui/Pagination.vue' -import TagsSelector from '~/components/library/TagsSelector.vue' -import useLogger from '~/composables/useLogger' + import useSharedLabels from '~/composables/locale/useSharedLabels' +import useErrorHandler from '~/composables/useErrorHandler' import useOrdering from '~/composables/useOrdering' -import { useStore } from '~/store' +import useLogger from '~/composables/useLogger' interface Props extends OrderingProps { defaultPage?: number @@ -91,7 +95,7 @@ const fetchData = async () => { result.value = response.data } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) result.value = null } finally { logger.timeEnd('Fetching albums') diff --git a/front/src/components/library/ArtistDetail.vue b/front/src/components/library/ArtistDetail.vue index 209c415e2..9d2594c92 100644 --- a/front/src/components/library/ArtistDetail.vue +++ b/front/src/components/library/ArtistDetail.vue @@ -7,9 +7,11 @@ import { useStore } from '~/store' import axios from 'axios' -import AlbumCard from '~/components/audio/album/Card.vue' -import TrackTable from '~/components/audio/track/Table.vue' import LibraryWidget from '~/components/federation/LibraryWidget.vue' +import TrackTable from '~/components/audio/track/Table.vue' +import AlbumCard from '~/components/audio/album/Card.vue' + +import useErrorHandler from '~/composables/useErrorHandler' interface Props { object: Artist @@ -42,7 +44,7 @@ const loadMoreAlbums = async () => { additionalAlbums.push(...additionalAlbums.concat(response.data.results)) loadMoreAlbumsUrl.value = response.data.next } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) } isLoadingMoreAlbums.value = false diff --git a/front/src/components/library/Artists.vue b/front/src/components/library/Artists.vue index a8ea2a136..b3f24d95e 100644 --- a/front/src/components/library/Artists.vue +++ b/front/src/components/library/Artists.vue @@ -2,20 +2,23 @@ import type { RouteWithPreferences, OrderingField } from '~/store/ui' import type { OrderingProps } from '~/composables/useOrdering' -import qs from 'qs' -import axios from 'axios' -import $ from 'jquery' - -import ArtistCard from '~/components/audio/artist/Card.vue' -import Pagination from '~/components/vui/Pagination.vue' -import TagsSelector from '~/components/library/TagsSelector.vue' -import useLogger from '~/composables/useLogger' -import useSharedLabels from '~/composables/locale/useSharedLabels' import { computed, reactive, ref, watch, onMounted } from 'vue' +import { onBeforeRouteUpdate, useRouter } from 'vue-router' import { useGettext } from 'vue3-gettext' import { useStore } from '~/store' + +import axios from 'axios' +import $ from 'jquery' +import qs from 'qs' + +import TagsSelector from '~/components/library/TagsSelector.vue' +import ArtistCard from '~/components/audio/artist/Card.vue' +import Pagination from '~/components/vui/Pagination.vue' + +import useSharedLabels from '~/composables/locale/useSharedLabels' +import useErrorHandler from '~/composables/useErrorHandler' import useOrdering from '~/composables/useOrdering' -import { onBeforeRouteUpdate, useRouter } from 'vue-router' +import useLogger from '~/composables/useLogger' interface Props extends OrderingProps { defaultPage?: number @@ -95,7 +98,7 @@ const fetchData = async () => { result.value = response.data } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) result.value = null } finally { logger.timeEnd('Fetching artists') diff --git a/front/src/components/library/EditCard.vue b/front/src/components/library/EditCard.vue index 8cc85a89f..79cbb166d 100644 --- a/front/src/components/library/EditCard.vue +++ b/front/src/components/library/EditCard.vue @@ -11,6 +11,7 @@ import { useStore } from '~/store' import axios from 'axios' import useEditConfigs from '~/composables/moderation/useEditConfigs' +import useErrorHandler from '~/composables/useErrorHandler' interface Emits { (e: 'approved', isApproved: boolean): void @@ -126,7 +127,7 @@ const remove = async () => { await axios.delete(`mutations/${props.obj.uuid}/`) emit('deleted') } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) } isLoading.value = false @@ -144,7 +145,7 @@ const approve = async (approved: boolean) => { emit('approved', approved) store.commit('ui/incrementNotifications', { count: -1, type: 'pendingReviewEdits' }) } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) } isLoading.value = false diff --git a/front/src/components/library/EditDetail.vue b/front/src/components/library/EditDetail.vue index fee742306..016ff13b0 100644 --- a/front/src/components/library/EditDetail.vue +++ b/front/src/components/library/EditDetail.vue @@ -2,11 +2,15 @@ import type { EditObject, EditObjectType } from '~/composables/moderation/useEditConfigs' import type { ReviewState } from '~/types' -import axios from 'axios' -import useEditConfigs from '~/composables/moderation/useEditConfigs' -import EditCard from '~/components/library/EditCard.vue' import { computed, ref } from 'vue' +import axios from 'axios' + +import EditCard from '~/components/library/EditCard.vue' + +import useEditConfigs from '~/composables/moderation/useEditConfigs' +import useErrorHandler from '~/composables/useErrorHandler' + interface Props { object: EditObject objectType: EditObjectType @@ -32,7 +36,7 @@ const fetchData = async () => { const response = await axios.get(`mutations/${props.editId}/`) obj.value = response.data } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) } finally { isLoading.value = false } diff --git a/front/src/components/library/FileUpload.vue b/front/src/components/library/FileUpload.vue index 059e73948..0c14b2d21 100644 --- a/front/src/components/library/FileUpload.vue +++ b/front/src/components/library/FileUpload.vue @@ -12,12 +12,14 @@ import { useStore } from '~/store' import axios from 'axios' import LibraryFilesTable from '~/views/content/libraries/FilesTable.vue' -import useWebSocketHandler from '~/composables/useWebSocketHandler' -import updateQueryString from '~/composables/updateQueryString' import FileUploadWidget from './FileUploadWidget.vue' import FsBrowser from './FsBrowser.vue' import FsLogs from './FsLogs.vue' +import useWebSocketHandler from '~/composables/useWebSocketHandler' +import updateQueryString from '~/composables/updateQueryString' +import useErrorHandler from '~/composables/useErrorHandler' + interface Emits { (e: 'uploads-finished', delta: number):void } @@ -111,7 +113,7 @@ const fetchStatus = async () => { uploads[status as keyof typeof uploads] = response.data.count } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) } } } @@ -184,7 +186,7 @@ const fetchQuota = async () => { const response = await axios.get('users/me/') quotaStatus.value = response.data.quota_status } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) } isLoadingQuota.value = false @@ -216,7 +218,7 @@ const fetchFilesystem = async (updateLoading: boolean) => { const response = await axios.get('libraries/fs-import', { params: { path: fsPath.join('/') } }) fsStatus.value = response.data } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) } if (updateLoading) isLoadingFs.value = false @@ -252,7 +254,7 @@ const cancelFsScan = async () => { await axios.delete('libraries/fs-import') fetchFilesystem(false) } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) } } diff --git a/front/src/components/library/Home.vue b/front/src/components/library/Home.vue index ceeb1e43a..bbed52395 100644 --- a/front/src/components/library/Home.vue +++ b/front/src/components/library/Home.vue @@ -1,12 +1,16 @@ diff --git a/front/src/views/admin/Settings.vue b/front/src/views/admin/Settings.vue index ee8c0c1b3..6cdc74db1 100644 --- a/front/src/views/admin/Settings.vue +++ b/front/src/views/admin/Settings.vue @@ -4,12 +4,14 @@ import type { SettingsGroup as SettingsGroupType } from '~/types' import axios from 'axios' import $ from 'jquery' +import { ref, nextTick, onMounted, computed, watch } from 'vue' +import { useCurrentElement } from '@vueuse/core' +import { useGettext } from 'vue3-gettext' +import { useRoute } from 'vue-router' + import SettingsGroup from '~/components/admin/SettingsGroup.vue' -import { useCurrentElement } from '@vueuse/core' -import { ref, nextTick, onMounted, computed, watch } from 'vue' -import { useRoute } from 'vue-router' -import { useGettext } from 'vue3-gettext' +import useErrorHandler from '~/composables/useErrorHandler' const current = ref() const settingsData = ref() @@ -150,7 +152,7 @@ const fetchSettings = async () => { const response = await axios.get('instance/admin/settings/') settingsData.value = response.data } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) } isLoading.value = false diff --git a/front/src/views/admin/library/TrackDetail.vue b/front/src/views/admin/library/TrackDetail.vue index 853b5d936..6123e8427 100644 --- a/front/src/views/admin/library/TrackDetail.vue +++ b/front/src/views/admin/library/TrackDetail.vue @@ -1,13 +1,16 @@ diff --git a/front/src/views/playlists/List.vue b/front/src/views/playlists/List.vue index 1317d82c8..98994f25b 100644 --- a/front/src/views/playlists/List.vue +++ b/front/src/views/playlists/List.vue @@ -4,15 +4,18 @@ import type { OrderingProps } from '~/composables/useOrdering' import axios from 'axios' import $ from 'jquery' -import { computed, ref, watch, onMounted } from 'vue' + import { useRouter, onBeforeRouteUpdate } from 'vue-router' +import { computed, ref, watch, onMounted } from 'vue' import { useGettext } from 'vue3-gettext' import PlaylistCardList from '~/components/playlists/CardList.vue' import Pagination from '~/components/vui/Pagination.vue' + import useSharedLabels from '~/composables/locale/useSharedLabels' -import useLogger from '~/composables/useLogger' +import useErrorHandler from '~/composables/useErrorHandler' import useOrdering from '~/composables/useOrdering' +import useLogger from '~/composables/useLogger' interface Props extends OrderingProps { defaultPage?: number @@ -79,7 +82,7 @@ const fetchData = async () => { result.value = response.data } catch (error) { - // TODO (wvffle): Handle error + useErrorHandler(error as Error) result.value = null } finally { logger.timeEnd('Fetching albums') diff --git a/front/src/views/radios/Detail.vue b/front/src/views/radios/Detail.vue index 192923988..7657098c5 100644 --- a/front/src/views/radios/Detail.vue +++ b/front/src/views/radios/Detail.vue @@ -1,14 +1,18 @@