+
+
- {{ humanSize(library.size) }}
+ {{
+ // @ts-expect-error Property 'size' does not exist on type 'Library'
+ humanSize(library.size)
+ }}
{{ t('views.content.libraries.Card.meta.tracks', library.uploads_count) }}
diff --git a/front/src/views/content/libraries/FilesTable.vue b/front/src/views/content/libraries/FilesTable.vue
index bed2ba242..6d21b083f 100644
--- a/front/src/views/content/libraries/FilesTable.vue
+++ b/front/src/views/content/libraries/FilesTable.vue
@@ -56,8 +56,6 @@ const props = withDefaults(defineProps
(), {
orderingConfigName: undefined
})
-const search = ref()
-
const page = usePage()
const result = ref>()
@@ -347,7 +345,7 @@ const getImportStatusChoice = (importStatus: ImportStatus) => {
diff --git a/front/src/views/content/libraries/Form.vue b/front/src/views/content/libraries/Form.vue
index e63067c61..4267e94bd 100644
--- a/front/src/views/content/libraries/Form.vue
+++ b/front/src/views/content/libraries/Form.vue
@@ -37,6 +37,9 @@ const labels = computed(() => ({
}))
const currentVisibilityLevel = ref(props.library?.privacy_level ?? 'me')
+
+// TODO: Add 'description' to the Library type
+// @ts-expect-error Property 'description' does not exist on type 'Library'
const currentDescription = ref(props.library?.description ?? '')
const currentName = ref(props.library?.name ?? '')
diff --git a/front/src/views/content/remote/Card.vue b/front/src/views/content/remote/Card.vue
index 40a561522..ce58836fe 100644
--- a/front/src/views/content/remote/Card.vue
+++ b/front/src/views/content/remote/Card.vue
@@ -48,7 +48,9 @@ const isLoadingFollow = ref(false)
const showScan = ref(false)
const latestScan = ref(props.initialLibrary.latest_scan)
-const scanProgress = computed(() => Math.min(latestScan.value.processed_files * 100 / latestScan.value.total_files, 100))
+const scanProgress = computed(() => latestScan.value && latestScan.value.processed_files && latestScan.value.total_files
+ ? Math.min(latestScan.value.processed_files * 100 / latestScan.value.total_files, 100)
+ : 0)
const scanStatus = computed(() => latestScan.value?.status ?? 'unknown')
const canLaunchScan = computed(() => scanStatus.value !== 'pending' && scanStatus.value !== 'scanning')
const radioPlayable = computed(() => (
@@ -191,8 +193,13 @@ const isOpen = ref(false)
+
+
- {{ library.description }}
+ {{
+ // @ts-ignore
+ library.description
+ }}
{{ t('views.content.remote.Card.label.scanSuccess') }}
-
+
{{ t('views.content.remote.Card.label.scanPartialSuccess') }}
diff --git a/front/src/views/content/remote/Home.vue b/front/src/views/content/remote/Home.vue
index 94081a447..3c6d6e2a2 100644
--- a/front/src/views/content/remote/Home.vue
+++ b/front/src/views/content/remote/Home.vue
@@ -37,8 +37,9 @@ fetchData()
const getLibraryFromFollow = (follow: LibraryFollow) => {
const { target } = follow
- target.follow = follow
- return target as Library
+ // TODO: Actually load the target from the database or the cache. Use `client` with cache.
+ // @ts-expect-error target is a string, not a library!
+ return ({ ...target, follow: follow } as Library)
}
const scanResult = ref()
diff --git a/front/src/views/library/DetailAlbums.vue b/front/src/views/library/DetailAlbums.vue
index a83455dd6..7e138557d 100644
--- a/front/src/views/library/DetailAlbums.vue
+++ b/front/src/views/library/DetailAlbums.vue
@@ -18,6 +18,7 @@ defineProps()
()
diff --git a/front/src/views/library/DetailTracks.vue b/front/src/views/library/DetailTracks.vue
index 160df5db1..fffaed96d 100644
--- a/front/src/views/library/DetailTracks.vue
+++ b/front/src/views/library/DetailTracks.vue
@@ -2,6 +2,9 @@
import type { Library } from '~/types'
import TrackTable from '~/components/audio/track/Table.vue'
+import { useI18n } from 'vue-i18n'
+
+const { t } = useI18n()
interface Props {
object: Library
diff --git a/front/src/views/library/Edit.vue b/front/src/views/library/Edit.vue
index 4e5ddacfe..582605ae6 100644
--- a/front/src/views/library/Edit.vue
+++ b/front/src/views/library/Edit.vue
@@ -51,6 +51,10 @@ fetchData()
const updateApproved = async (follow: LibraryFollow, approved: boolean) => {
try {
await axios.post(`federation/follows/library/${follow.uuid}/${approved ? 'accept' : 'reject'}/`)
+
+ // TODO: This is not how Axios works. You have to send a request with
+ // the correct type as a parameter.
+ // @ts-expect-error Post this with the axios payload: { ...follow, approved }
follow.approved = approved
} catch (error) {
useErrorHandler(error as Error)
diff --git a/front/src/views/library/LibraryBase.vue b/front/src/views/library/LibraryBase.vue
index e12d5f8bd..ffca06bb5 100644
--- a/front/src/views/library/LibraryBase.vue
+++ b/front/src/views/library/LibraryBase.vue
@@ -194,9 +194,9 @@ const tabs = ref([{
{{ t('views.library.LibraryBase.meta.tracks', object.uploads_count) }}
-
+
- {{ humanSize(object.size) }}
+ {{ humanSize(object.size as number) }}
@@ -213,15 +213,18 @@ const tabs = ref([{
v-if="!isOwner"
>
+
+
diff --git a/front/src/views/playlists/List.vue b/front/src/views/playlists/List.vue
index 26ffa62a1..f45626b6e 100644
--- a/front/src/views/playlists/List.vue
+++ b/front/src/views/playlists/List.vue
@@ -117,16 +117,20 @@ const paginateOptions = computed(() => sortedUniq([12, 30, 50, paginateBy.value]
stack
main
>
+
+
sortedUniq([12, 30, 50, paginateBy.value]
sortedUniq([12, 30, 50, paginateBy.value]
/>