diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 809563018..2e5f4bced 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -47,7 +47,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -60,7 +60,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v2 # â„šī¸ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -73,6 +73,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v2 with: category: '/language:${{matrix.language}}' diff --git a/build/debian/DEBIAN/preinst b/build/debian/DEBIAN/preinst index 241a47010..e30bc490c 100644 --- a/build/debian/DEBIAN/preinst +++ b/build/debian/DEBIAN/preinst @@ -22,7 +22,7 @@ add_user() { declare -r descr="${4:-No description}" declare -r shell="${5:-/bin/false}" - if ! getent passwd "$user" 2>&1 >/dev/null; then + if ! getent passwd | grep -q "^$user:"; then echo "Creating system user: $user in $group with $descr and shell $shell" useradd $uid_flags --gid $group --no-create-home --system --shell $shell -c "$descr" $user fi @@ -39,7 +39,7 @@ add_group() { declare -r gid_flags="--gid $gid" fi - if ! getent group "$group" 2>&1 >/dev/null; then + if ! getent group | grep -q "^$group:" ; then echo "Creating system group: $group" groupadd $gid_flags --system $group fi diff --git a/client/components/app/Appbar.vue b/client/components/app/Appbar.vue index 428ae6ebf..f74134041 100644 --- a/client/components/app/Appbar.vue +++ b/client/components/app/Appbar.vue @@ -196,7 +196,6 @@ export default { requestBatchQuickEmbed() { const payload = { message: this.$strings.MessageConfirmQuickEmbed, - allowHtml: true, callback: (confirmed) => { if (confirmed) { this.$axios diff --git a/client/components/app/BookShelfCategorized.vue b/client/components/app/BookShelfCategorized.vue index a8e8ae469..4bf8cfbbf 100644 --- a/client/components/app/BookShelfCategorized.vue +++ b/client/components/app/BookShelfCategorized.vue @@ -300,8 +300,6 @@ export default { }) }, userUpdated(user) { - if (user.id !== this.$store.state.user.user.id) return - if (user.seriesHideFromContinueListening && user.seriesHideFromContinueListening.length) { this.removeAllSeriesFromContinueSeries(user.seriesHideFromContinueListening) } diff --git a/client/components/app/BookShelfRow.vue b/client/components/app/BookShelfRow.vue index fac89a70b..082f9fe37 100644 --- a/client/components/app/BookShelfRow.vue +++ b/client/components/app/BookShelfRow.vue @@ -93,10 +93,10 @@ export default { editAuthor(author) { this.$store.commit('globals/showEditAuthorModal', author) }, - editItem(libraryItem, tab = 'details') { + editItem(libraryItem) { var itemIds = this.shelf.entities.map((e) => e.id) this.$store.commit('setBookshelfBookIds', itemIds) - this.$store.commit('showEditModalOnTab', { libraryItem, tab: tab || 'details' }) + this.$store.commit('showEditModal', libraryItem) }, editEpisode({ libraryItem, episode }) { this.$store.commit('setEpisodeTableEpisodeIds', [episode.id]) diff --git a/client/components/app/BookShelfToolbar.vue b/client/components/app/BookShelfToolbar.vue index b7ecff624..95e7c378c 100644 --- a/client/components/app/BookShelfToolbar.vue +++ b/client/components/app/BookShelfToolbar.vue @@ -3,18 +3,24 @@

{{ $strings.ButtonHome }}

- home + + +

{{ $strings.ButtonLibrary }}

- import_contacts + + +

{{ $strings.ButtonLatest }}

{{ $strings.ButtonSeries }}

- view_column + + +

{{ $strings.ButtonPlaylists }}

@@ -26,7 +32,12 @@

{{ $strings.ButtonAuthors }}

- groups + + +

{{ $strings.ButtonAdd }}

diff --git a/client/components/app/LazyBookshelf.vue b/client/components/app/LazyBookshelf.vue index 9ec492a8f..854b61b24 100644 --- a/client/components/app/LazyBookshelf.vue +++ b/client/components/app/LazyBookshelf.vue @@ -22,7 +22,7 @@
{{ emptyMessageHelp }} - + help_outline @@ -232,11 +232,11 @@ export default { clearFilter() { this.$store.dispatch('user/updateUserSettings', { filterBy: 'all' }) }, - editEntity(entity, tab = 'details') { + editEntity(entity) { if (this.entityName === 'items' || this.entityName === 'series-books') { const bookIds = this.entities.map((e) => e.id) this.$store.commit('setBookshelfBookIds', bookIds) - this.$store.commit('showEditModalOnTab', { libraryItem: entity, tab: tab || 'details' }) + this.$store.commit('showEditModal', entity) } else if (this.entityName === 'collections') { this.$store.commit('globals/setEditCollection', entity) } else if (this.entityName === 'playlists') { diff --git a/client/components/app/SideRail.vue b/client/components/app/SideRail.vue index 9fa7661a1..2b05ef360 100644 --- a/client/components/app/SideRail.vue +++ b/client/components/app/SideRail.vue @@ -5,7 +5,9 @@
-

v{{ $config.version }}

+

v{{ $config.version }}

Update

{{ Source }}

diff --git a/client/components/cards/ItemUploadCard.vue b/client/components/cards/ItemUploadCard.vue index adbf3adbe..40836b8e4 100644 --- a/client/components/cards/ItemUploadCard.vue +++ b/client/components/cards/ItemUploadCard.vue @@ -62,24 +62,7 @@
- -
- - {{ nonInteractionLabel }} - -
- -
-
- - {{ uploadProgressText }} - -
-
-
-
-
-
+
@@ -108,11 +91,7 @@ export default { isUploading: false, uploadFailed: false, uploadSuccess: false, - isFetchingMetadata: false, - uploadProgress: { - loaded: 0, - total: 0 - } + isFetchingMetadata: false } }, computed: { @@ -137,15 +116,6 @@ export default { } else if (this.isFetchingMetadata) { return this.$strings.LabelFetchingMetadata } - }, - uploadProgressPercent() { - if (this.uploadProgress.total === 0) return 0 - return Math.min(100, Math.round((this.uploadProgress.loaded / this.uploadProgress.total) * 100)) - }, - uploadProgressText() { - const loaded = this.$bytesPretty(this.uploadProgress.loaded) - const total = this.$bytesPretty(this.uploadProgress.total) - return `${this.uploadProgressPercent}% (${loaded} / ${total})` } }, methods: { @@ -153,21 +123,6 @@ export default { this.isUploading = status === 'uploading' this.uploadFailed = status === 'failed' this.uploadSuccess = status === 'success' - - if (status !== 'uploading') { - this.uploadProgress = { - loaded: 0, - total: 0 - } - } - }, - setUploadProgress(progress) { - if (this.isUploading && progress) { - this.uploadProgress = { - loaded: progress.loaded || 0, - total: progress.total || 0 - } - } }, titleUpdated() { this.error = '' diff --git a/client/components/cards/LazyBookCard.vue b/client/components/cards/LazyBookCard.vue index 51f657dbc..41b733107 100644 --- a/client/components/cards/LazyBookCard.vue +++ b/client/components/cards/LazyBookCard.vue @@ -78,7 +78,7 @@
- +
priority_high
@@ -101,8 +101,7 @@

- Episode - #{{ recentEpisodeNumber }} + Episode #{{ recentEpisodeNumber }}

@@ -121,12 +120,12 @@
- +

{{ displayTitle }}

- +

{{ displaySubtitle }}

{{ displayLineTwo || ' ' }}

@@ -201,9 +200,6 @@ export default { dateFormat() { return this.store.getters['getServerSetting']('dateFormat') }, - timeFormat() { - return this.store.getters['getServerSetting']('timeFormat') - }, _libraryItem() { return this.libraryItem || {} }, @@ -349,18 +345,6 @@ export default { if (this.mediaMetadata.publishedYear) return this.$getString('LabelPublishedDate', [this.mediaMetadata.publishedYear]) return '\u00A0' } - if (this.orderBy === 'progress') { - if (!this.userProgressLastUpdated) return '\u00A0' - return this.$getString('LabelLastProgressDate', [this.$formatDatetime(this.userProgressLastUpdated, this.dateFormat, this.timeFormat)]) - } - if (this.orderBy === 'progress.createdAt') { - if (!this.userProgressStartedDate) return '\u00A0' - return this.$getString('LabelStartedDate', [this.$formatDatetime(this.userProgressStartedDate, this.dateFormat, this.timeFormat)]) - } - if (this.orderBy === 'progress.finishedAt') { - if (!this.userProgressFinishedDate) return '\u00A0' - return this.$getString('LabelFinishedDate', [this.$formatDatetime(this.userProgressFinishedDate, this.dateFormat, this.timeFormat)]) - } return null }, episodeProgress() { @@ -393,18 +377,6 @@ export default { let progressPercent = this.itemIsFinished ? 1 : this.booksInSeries ? this.seriesProgressPercent : this.useEBookProgress ? this.userProgress?.ebookProgress || 0 : this.userProgress?.progress || 0 return Math.max(Math.min(1, progressPercent), 0) }, - userProgressLastUpdated() { - if (!this.userProgress) return null - return this.userProgress.lastUpdate - }, - userProgressStartedDate() { - if (!this.userProgress) return null - return this.userProgress.startedAt - }, - userProgressFinishedDate() { - if (!this.userProgress) return null - return this.userProgress.finishedAt - }, itemIsFinished() { if (this.booksInSeries) return this.seriesIsFinished return this.userProgress ? !!this.userProgress.isFinished : false @@ -788,11 +760,11 @@ export default { }, showEditModalFiles() { // More menu func - this.$emit('edit', this.libraryItem, 'files') + this.store.commit('showEditModalOnTab', { libraryItem: this.libraryItem, tab: 'files' }) }, showEditModalMatch() { // More menu func - this.$emit('edit', this.libraryItem, 'match') + this.store.commit('showEditModalOnTab', { libraryItem: this.libraryItem, tab: 'match' }) }, sendToDevice(deviceName) { // More menu func diff --git a/client/components/controls/LibraryFilterSelect.vue b/client/components/controls/LibraryFilterSelect.vue index 4834a1a25..62a9b8037 100644 --- a/client/components/controls/LibraryFilterSelect.vue +++ b/client/components/controls/LibraryFilterSelect.vue @@ -338,18 +338,6 @@ export default { const series = this.series.find((se) => se.id == decoded) if (series) filterValue = series.name } - } else if (parts[0] === 'progress') { - const item = this.progress.find((p) => p.id == decoded) - if (item) filterValue = item.name - } else if (parts[0] === 'tracks') { - const item = this.tracks.find((t) => t.id == decoded) - if (item) filterValue = item.name - } else if (parts[0] === 'ebooks') { - const item = this.ebooks.find((e) => e.id == decoded) - if (item) filterValue = item.name - } else if (parts[0] === 'missing') { - const item = this.missing.find((m) => m.id == decoded) - if (item) filterValue = item.name } else { filterValue = decoded } diff --git a/client/components/controls/LibrarySortSelect.vue b/client/components/controls/LibrarySortSelect.vue index a0734d6a4..7e83928fd 100644 --- a/client/components/controls/LibrarySortSelect.vue +++ b/client/components/controls/LibrarySortSelect.vue @@ -7,7 +7,7 @@ -