refactor: carve out code to parse query sort

This commit is contained in:
Gauthier Roebroeck 2020-01-23 17:12:17 +08:00
parent 53711c8800
commit 71b6d37711
3 changed files with 16 additions and 24 deletions

View file

@ -0,0 +1,12 @@
const sortDirs = ['asc', 'desc']
export function parseQuerySort (querySort: any, sortOptions: SortOption[]): SortActive | null {
let customSort = null
if (querySort) {
const split = querySort.split(',')
if (split.length === 2 && sortOptions.map(x => x.key).includes(split[0]) && sortDirs.includes(split[1])) {
customSort = { key: split[0], order: split[1] }
}
}
return customSort
}

View file

@ -89,6 +89,7 @@ import EmptyState from '@/components/EmptyState.vue'
import LibraryActionsMenu from '@/components/LibraryActionsMenu.vue'
import SortMenuButton from '@/components/SortMenuButton.vue'
import ToolbarSticky from '@/components/ToolbarSticky.vue'
import { parseQuerySort } from '@/functions/query-params'
import { LoadState, SeriesStatus } from '@/types/common'
import Vue from 'vue'
@ -172,18 +173,7 @@ export default Vue.extend({
}
},
parseQuerySortOrDefault (querySort: any): SortActive {
let customSort = null
if (querySort) {
const split = querySort.split(',')
if (split.length === 2 && this.$_.map(this.sortOptions, 'key').includes(split[0]) && ['asc', 'desc'].includes(split[1])) {
customSort = { key: split[0], order: split[1] }
}
}
if (customSort !== null) {
return customSort
} else {
return this.$_.clone(this.sortDefault)
}
return parseQuerySort(querySort, this.sortOptions) || this.$_.clone(this.sortDefault)
},
parseQueryFilterStatus (queryStatus: any): string[] {
return queryStatus ? queryStatus.toString().split(',').filter((x: string) => Object.keys(SeriesStatus).includes(x)) : []

View file

@ -94,6 +94,7 @@
import CardBook from '@/components/CardBook.vue'
import SortMenuButton from '@/components/SortMenuButton.vue'
import ToolbarSticky from '@/components/ToolbarSticky.vue'
import { parseQuerySort } from '@/functions/query-params'
import { seriesThumbnailUrl } from '@/functions/urls'
import { LoadState } from '@/types/common'
import Vue from 'vue'
@ -179,18 +180,7 @@ export default Vue.extend({
}
},
parseQuerySortOrDefault (querySort: any): SortActive {
let customSort = null
if (querySort) {
const split = querySort.split(',')
if (split.length === 2 && this.$_.map(this.sortOptions, 'key').includes(split[0]) && ['asc', 'desc'].includes(split[1])) {
customSort = { key: split[0], order: split[1] }
}
}
if (customSort !== null) {
return customSort
} else {
return this.$_.clone(this.sortDefault)
}
return parseQuerySort(querySort, this.sortOptions) || this.$_.clone(this.sortDefault)
},
async onCardIntersect (entries: any, observer: any, isIntersecting: boolean) {
const elementIndex = Number(entries[0].target.dataset['index'])