Update tanstack query to v5

This commit is contained in:
grafixeyehero 2024-06-02 21:02:22 +03:00
parent be891c3a98
commit ac42b3a203
10 changed files with 60 additions and 232 deletions

183
package-lock.json generated
View File

@ -24,8 +24,8 @@
"@mui/material": "5.15.17", "@mui/material": "5.15.17",
"@mui/x-data-grid": "6.19.11", "@mui/x-data-grid": "6.19.11",
"@react-hook/resize-observer": "1.2.6", "@react-hook/resize-observer": "1.2.6",
"@tanstack/react-query": "4.36.1", "@tanstack/react-query": "5.40.0",
"@tanstack/react-query-devtools": "4.36.1", "@tanstack/react-query-devtools": "5.40.0",
"@types/react-lazy-load-image-component": "1.6.4", "@types/react-lazy-load-image-component": "1.6.4",
"abortcontroller-polyfill": "1.7.5", "abortcontroller-polyfill": "1.7.5",
"blurhash": "2.0.5", "blurhash": "2.0.5",
@ -4619,73 +4619,53 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/@tanstack/match-sorter-utils": { "node_modules/@tanstack/query-core": {
"version": "8.8.4", "version": "5.40.0",
"resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.8.4.tgz", "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.40.0.tgz",
"integrity": "sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==", "integrity": "sha512-eD8K8jsOIq0Z5u/QbvOmfvKKE/XC39jA7yv4hgpl/1SRiU+J8QCIwgM/mEHuunQsL87dcvnHqSVLmf9pD4CiaA==",
"dependencies": {
"remove-accents": "0.4.2"
},
"engines": {
"node": ">=12"
},
"funding": { "funding": {
"type": "github", "type": "github",
"url": "https://github.com/sponsors/kentcdodds" "url": "https://github.com/sponsors/tannerlinsley"
} }
}, },
"node_modules/@tanstack/query-core": { "node_modules/@tanstack/query-devtools": {
"version": "4.36.1", "version": "5.37.1",
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz", "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.37.1.tgz",
"integrity": "sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==", "integrity": "sha512-XcG4IIHIv0YQKrexTqo2zogQWR1Sz672tX2KsfE9kzB+9zhx44vRKH5si4WDILE1PIWQpStFs/NnrDQrBAUQpg==",
"funding": { "funding": {
"type": "github", "type": "github",
"url": "https://github.com/sponsors/tannerlinsley" "url": "https://github.com/sponsors/tannerlinsley"
} }
}, },
"node_modules/@tanstack/react-query": { "node_modules/@tanstack/react-query": {
"version": "4.36.1", "version": "5.40.0",
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.36.1.tgz", "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.40.0.tgz",
"integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==", "integrity": "sha512-iv/W0Axc4aXhFzkrByToE1JQqayxTPNotCoSCnarR/A1vDIHaoKpg7FTIfP3Ev2mbKn1yrxq0ZKYUdLEJxs6Tg==",
"dependencies": { "dependencies": {
"@tanstack/query-core": "4.36.1", "@tanstack/query-core": "5.40.0"
"use-sync-external-store": "^1.2.0"
}, },
"funding": { "funding": {
"type": "github", "type": "github",
"url": "https://github.com/sponsors/tannerlinsley" "url": "https://github.com/sponsors/tannerlinsley"
}, },
"peerDependencies": { "peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react": "^18.0.0"
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-native": "*"
},
"peerDependenciesMeta": {
"react-dom": {
"optional": true
},
"react-native": {
"optional": true
}
} }
}, },
"node_modules/@tanstack/react-query-devtools": { "node_modules/@tanstack/react-query-devtools": {
"version": "4.36.1", "version": "5.40.0",
"resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-4.36.1.tgz", "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.40.0.tgz",
"integrity": "sha512-WYku83CKP3OevnYSG8Y/QO9g0rT75v1om5IvcWUwiUZJ4LanYGLVCZ8TdFG5jfsq4Ej/lu2wwDAULEUnRIMBSw==", "integrity": "sha512-JoQOQj/LKaHoHVMAh73R0pc4lIAHiZMV8L4DGHsTSvHcKi22LZmSC9aYBY9oMkqGpFtKmbspwrUIn55+czNSbA==",
"dependencies": { "dependencies": {
"@tanstack/match-sorter-utils": "^8.7.0", "@tanstack/query-devtools": "5.37.1"
"superjson": "^1.10.0",
"use-sync-external-store": "^1.2.0"
}, },
"funding": { "funding": {
"type": "github", "type": "github",
"url": "https://github.com/sponsors/tannerlinsley" "url": "https://github.com/sponsors/tannerlinsley"
}, },
"peerDependencies": { "peerDependencies": {
"@tanstack/react-query": "^4.36.1", "@tanstack/react-query": "^5.40.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react": "^18 || ^19"
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
} }
}, },
"node_modules/@trysound/sax": { "node_modules/@trysound/sax": {
@ -7423,20 +7403,6 @@
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
"dev": true "dev": true
}, },
"node_modules/copy-anything": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
"integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
"dependencies": {
"is-what": "^4.1.8"
},
"engines": {
"node": ">=12.13"
},
"funding": {
"url": "https://github.com/sponsors/mesqueeb"
}
},
"node_modules/copy-descriptor": { "node_modules/copy-descriptor": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
@ -12775,17 +12741,6 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/is-what": {
"version": "4.1.13",
"resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.13.tgz",
"integrity": "sha512-Aoe8pT24sWzyoO0S2PTDyutGp9l7qYHyFtzYlC8hMLshyqV/minljBANT4f2hiS5OxnWvcKMiA5io+VaLMJ1oA==",
"engines": {
"node": ">=12.13"
},
"funding": {
"url": "https://github.com/sponsors/mesqueeb"
}
},
"node_modules/is-whitespace-character": { "node_modules/is-whitespace-character": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz",
@ -17701,11 +17656,6 @@
"url": "https://opencollective.com/unified" "url": "https://opencollective.com/unified"
} }
}, },
"node_modules/remove-accents": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz",
"integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA=="
},
"node_modules/renderkid": { "node_modules/renderkid": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
@ -21452,17 +21402,6 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/superjson": {
"version": "1.12.3",
"resolved": "https://registry.npmjs.org/superjson/-/superjson-1.12.3.tgz",
"integrity": "sha512-0j+U70KUtP8+roVPbwfqkyQI7lBt7ETnuA7KXbTDX3mCKiD/4fXs2ldKSMdt0MCfpTwiMxo20yFU3vu6ewETpQ==",
"dependencies": {
"copy-anything": "^3.0.2"
},
"engines": {
"node": ">=10"
}
},
"node_modules/supports-color": { "node_modules/supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@ -22738,14 +22677,6 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/use-sync-external-store": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
"integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/usehooks-ts": { "node_modules/usehooks-ts": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.0.tgz", "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.0.tgz",
@ -26898,36 +26829,30 @@
"integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==",
"dev": true "dev": true
}, },
"@tanstack/match-sorter-utils": {
"version": "8.8.4",
"resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.8.4.tgz",
"integrity": "sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==",
"requires": {
"remove-accents": "0.4.2"
}
},
"@tanstack/query-core": { "@tanstack/query-core": {
"version": "4.36.1", "version": "5.40.0",
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz", "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.40.0.tgz",
"integrity": "sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==" "integrity": "sha512-eD8K8jsOIq0Z5u/QbvOmfvKKE/XC39jA7yv4hgpl/1SRiU+J8QCIwgM/mEHuunQsL87dcvnHqSVLmf9pD4CiaA=="
},
"@tanstack/query-devtools": {
"version": "5.37.1",
"resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.37.1.tgz",
"integrity": "sha512-XcG4IIHIv0YQKrexTqo2zogQWR1Sz672tX2KsfE9kzB+9zhx44vRKH5si4WDILE1PIWQpStFs/NnrDQrBAUQpg=="
}, },
"@tanstack/react-query": { "@tanstack/react-query": {
"version": "4.36.1", "version": "5.40.0",
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.36.1.tgz", "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.40.0.tgz",
"integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==", "integrity": "sha512-iv/W0Axc4aXhFzkrByToE1JQqayxTPNotCoSCnarR/A1vDIHaoKpg7FTIfP3Ev2mbKn1yrxq0ZKYUdLEJxs6Tg==",
"requires": { "requires": {
"@tanstack/query-core": "4.36.1", "@tanstack/query-core": "5.40.0"
"use-sync-external-store": "^1.2.0"
} }
}, },
"@tanstack/react-query-devtools": { "@tanstack/react-query-devtools": {
"version": "4.36.1", "version": "5.40.0",
"resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-4.36.1.tgz", "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.40.0.tgz",
"integrity": "sha512-WYku83CKP3OevnYSG8Y/QO9g0rT75v1om5IvcWUwiUZJ4LanYGLVCZ8TdFG5jfsq4Ej/lu2wwDAULEUnRIMBSw==", "integrity": "sha512-JoQOQj/LKaHoHVMAh73R0pc4lIAHiZMV8L4DGHsTSvHcKi22LZmSC9aYBY9oMkqGpFtKmbspwrUIn55+czNSbA==",
"requires": { "requires": {
"@tanstack/match-sorter-utils": "^8.7.0", "@tanstack/query-devtools": "5.37.1"
"superjson": "^1.10.0",
"use-sync-external-store": "^1.2.0"
} }
}, },
"@trysound/sax": { "@trysound/sax": {
@ -29032,14 +28957,6 @@
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
"dev": true "dev": true
}, },
"copy-anything": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
"integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
"requires": {
"is-what": "^4.1.8"
}
},
"copy-descriptor": { "copy-descriptor": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
@ -32872,11 +32789,6 @@
"get-intrinsic": "^1.1.1" "get-intrinsic": "^1.1.1"
} }
}, },
"is-what": {
"version": "4.1.13",
"resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.13.tgz",
"integrity": "sha512-Aoe8pT24sWzyoO0S2PTDyutGp9l7qYHyFtzYlC8hMLshyqV/minljBANT4f2hiS5OxnWvcKMiA5io+VaLMJ1oA=="
},
"is-whitespace-character": { "is-whitespace-character": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz",
@ -36291,11 +36203,6 @@
"mdast-util-to-markdown": "^0.6.0" "mdast-util-to-markdown": "^0.6.0"
} }
}, },
"remove-accents": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz",
"integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA=="
},
"renderkid": { "renderkid": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
@ -39162,14 +39069,6 @@
} }
} }
}, },
"superjson": {
"version": "1.12.3",
"resolved": "https://registry.npmjs.org/superjson/-/superjson-1.12.3.tgz",
"integrity": "sha512-0j+U70KUtP8+roVPbwfqkyQI7lBt7ETnuA7KXbTDX3mCKiD/4fXs2ldKSMdt0MCfpTwiMxo20yFU3vu6ewETpQ==",
"requires": {
"copy-anything": "^3.0.2"
}
},
"supports-color": { "supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@ -40085,12 +39984,6 @@
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true "dev": true
}, },
"use-sync-external-store": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
"integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
"requires": {}
},
"usehooks-ts": { "usehooks-ts": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.0.tgz", "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.0.tgz",

View File

@ -85,8 +85,8 @@
"@mui/material": "5.15.17", "@mui/material": "5.15.17",
"@mui/x-data-grid": "6.19.11", "@mui/x-data-grid": "6.19.11",
"@react-hook/resize-observer": "1.2.6", "@react-hook/resize-observer": "1.2.6",
"@tanstack/react-query": "4.36.1", "@tanstack/react-query": "5.40.0",
"@tanstack/react-query-devtools": "4.36.1", "@tanstack/react-query-devtools": "5.40.0",
"@types/react-lazy-load-image-component": "1.6.4", "@types/react-lazy-load-image-component": "1.6.4",
"abortcontroller-polyfill": "1.7.5", "abortcontroller-polyfill": "1.7.5",
"blurhash": "2.0.5", "blurhash": "2.0.5",

View File

@ -72,7 +72,7 @@ const ItemsView: FC<ItemsViewProps> = ({
const { const {
isLoading, isLoading,
data: itemsResult, data: itemsResult,
isPreviousData, isPlaceholderData,
refetch refetch
} = useGetItemsViewByType( } = useGetItemsViewByType(
viewType, viewType,
@ -228,7 +228,7 @@ const ItemsView: FC<ItemsViewProps> = ({
<Pagination <Pagination
totalRecordCount={totalRecordCount} totalRecordCount={totalRecordCount}
libraryViewSettings={libraryViewSettings} libraryViewSettings={libraryViewSettings}
isPreviousData={isPreviousData} isPlaceholderData={isPlaceholderData}
setLibraryViewSettings={setLibraryViewSettings} setLibraryViewSettings={setLibraryViewSettings}
/> />
)} )}
@ -312,7 +312,7 @@ const ItemsView: FC<ItemsViewProps> = ({
<Pagination <Pagination
totalRecordCount={totalRecordCount} totalRecordCount={totalRecordCount}
libraryViewSettings={libraryViewSettings} libraryViewSettings={libraryViewSettings}
isPreviousData={isPreviousData} isPlaceholderData={isPlaceholderData}
setLibraryViewSettings={setLibraryViewSettings} setLibraryViewSettings={setLibraryViewSettings}
/> />
</Box> </Box>

View File

@ -13,14 +13,14 @@ interface PaginationProps {
libraryViewSettings: LibraryViewSettings; libraryViewSettings: LibraryViewSettings;
setLibraryViewSettings: React.Dispatch<React.SetStateAction<LibraryViewSettings>>; setLibraryViewSettings: React.Dispatch<React.SetStateAction<LibraryViewSettings>>;
totalRecordCount: number; totalRecordCount: number;
isPreviousData: boolean isPlaceholderData: boolean
} }
const Pagination: FC<PaginationProps> = ({ const Pagination: FC<PaginationProps> = ({
libraryViewSettings, libraryViewSettings,
setLibraryViewSettings, setLibraryViewSettings,
totalRecordCount, totalRecordCount,
isPreviousData isPlaceholderData
}) => { }) => {
const limit = userSettings.libraryPageSize(undefined); const limit = userSettings.libraryPageSize(undefined);
const startIndex = libraryViewSettings.StartIndex ?? 0; const startIndex = libraryViewSettings.StartIndex ?? 0;
@ -65,7 +65,7 @@ const Pagination: FC<PaginationProps> = ({
<IconButton <IconButton
title={globalize.translate('Previous')} title={globalize.translate('Previous')}
className='paper-icon-button-light btnPreviousPage autoSize' className='paper-icon-button-light btnPreviousPage autoSize'
disabled={startIndex == 0 || isPreviousData} disabled={startIndex == 0 || isPlaceholderData}
onClick={onPreviousPageClick} onClick={onPreviousPageClick}
> >
<ArrowBackIcon /> <ArrowBackIcon />
@ -74,7 +74,7 @@ const Pagination: FC<PaginationProps> = ({
<IconButton <IconButton
title={globalize.translate('Next')} title={globalize.translate('Next')}
className='paper-icon-button-light btnNextPage autoSize' className='paper-icon-button-light btnNextPage autoSize'
disabled={startIndex + limit >= totalRecordCount || isPreviousData } disabled={startIndex + limit >= totalRecordCount || isPlaceholderData }
onClick={onNextPageClick} onClick={onNextPageClick}
> >
<ArrowForwardIcon /> <ArrowForwardIcon />

View File

@ -1,5 +1,7 @@
import { AxiosRequestConfig } from 'axios'; import type { AxiosRequestConfig } from 'axios';
import type { BaseItemDto, ItemsApiGetItemsRequest, PlaylistsApiMoveItemRequest, TimerInfoDto } from '@jellyfin/sdk/lib/generated-client'; import type { ItemsApiGetItemsRequest, PlaylistsApiMoveItemRequest } from '@jellyfin/sdk/lib/generated-client';
import type { BaseItemDto } from '@jellyfin/sdk/lib/generated-client/models/base-item-dto';
import type { TimerInfoDto } from '@jellyfin/sdk/lib/generated-client/models/timer-info-dto';
import type { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind'; import type { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind';
import { ImageType } from '@jellyfin/sdk/lib/generated-client/models/image-type'; import { ImageType } from '@jellyfin/sdk/lib/generated-client/models/image-type';
import { ItemFields } from '@jellyfin/sdk/lib/generated-client/models/item-fields'; import { ItemFields } from '@jellyfin/sdk/lib/generated-client/models/item-fields';
@ -17,16 +19,16 @@ import { getUserLibraryApi } from '@jellyfin/sdk/lib/utils/api/user-library-api'
import { getPlaylistsApi } from '@jellyfin/sdk/lib/utils/api/playlists-api'; import { getPlaylistsApi } from '@jellyfin/sdk/lib/utils/api/playlists-api';
import { getLiveTvApi } from '@jellyfin/sdk/lib/utils/api/live-tv-api'; import { getLiveTvApi } from '@jellyfin/sdk/lib/utils/api/live-tv-api';
import { getPlaystateApi } from '@jellyfin/sdk/lib/utils/api/playstate-api'; import { getPlaystateApi } from '@jellyfin/sdk/lib/utils/api/playstate-api';
import { useMutation, useQuery } from '@tanstack/react-query'; import { keepPreviousData, useMutation, useQuery } from '@tanstack/react-query';
import datetime from 'scripts/datetime'; import datetime from 'scripts/datetime';
import globalize from 'scripts/globalize'; import globalize from 'scripts/globalize';
import { JellyfinApiContext, useApi } from './useApi'; import { type JellyfinApiContext, useApi } from './useApi';
import { getAlphaPickerQuery, getFieldsQuery, getFiltersQuery, getLimitQuery } from 'utils/items'; import { getAlphaPickerQuery, getFieldsQuery, getFiltersQuery, getLimitQuery } from 'utils/items';
import { getProgramSections, getSuggestionSections } from 'utils/sections'; import { getProgramSections, getSuggestionSections } from 'utils/sections';
import { LibraryViewSettings, ParentId } from 'types/library'; import type { LibraryViewSettings, ParentId } from 'types/library';
import { type Section, type SectionType, SectionApiMethod } from 'types/sections';
import { LibraryTab } from 'types/libraryTab'; import { LibraryTab } from 'types/libraryTab';
import { Section, SectionApiMethod, SectionType } from 'types/sections';
const fetchGetItems = async ( const fetchGetItems = async (
currentApi: JellyfinApiContext, currentApi: JellyfinApiContext,
@ -59,7 +61,7 @@ export const useGetItems = (parametersOptions: ItemsApiGetItemsRequest) => {
], ],
queryFn: ({ signal }) => queryFn: ({ signal }) =>
fetchGetItems(currentApi, parametersOptions, { signal }), fetchGetItems(currentApi, parametersOptions, { signal }),
cacheTime: parametersOptions.sortBy?.includes(ItemSortBy.Random) ? 0 : undefined gcTime: parametersOptions.sortBy?.includes(ItemSortBy.Random) ? 0 : undefined
}); });
}; };
@ -363,7 +365,7 @@ export const useGetItemsViewByType = (
{ signal } { signal }
), ),
refetchOnWindowFocus: false, refetchOnWindowFocus: false,
keepPreviousData : true, placeholderData : keepPreviousData,
enabled: enabled:
[ [
LibraryTab.Movies, LibraryTab.Movies,

View File

@ -1,10 +1,8 @@
import type { Api } from '@jellyfin/sdk/lib/api'; import type { Api } from '@jellyfin/sdk/lib/api';
import { getUserLibraryApi } from '@jellyfin/sdk/lib/utils/api/user-library-api'; import { getUserLibraryApi } from '@jellyfin/sdk/lib/utils/api/user-library-api';
import { useQuery } from '@tanstack/react-query'; import { queryOptions, useQuery } from '@tanstack/react-query';
import type { AxiosRequestConfig } from 'axios'; import type { AxiosRequestConfig } from 'axios';
import { queryOptions } from 'utils/query/queryOptions';
import { useApi } from './useApi'; import { useApi } from './useApi';
const fetchItem = async ( const fetchItem = async (

View File

@ -1,10 +1,9 @@
import { useQuery } from '@tanstack/react-query'; import { queryOptions, useQuery } from '@tanstack/react-query';
import type { Api } from '@jellyfin/sdk'; import type { Api } from '@jellyfin/sdk';
import { getSystemApi } from '@jellyfin/sdk/lib/utils/api/system-api'; import { getSystemApi } from '@jellyfin/sdk/lib/utils/api/system-api';
import type { AxiosRequestConfig } from 'axios'; import type { AxiosRequestConfig } from 'axios';
import { useApi } from './useApi'; import { useApi } from './useApi';
import { queryOptions } from 'utils/query/queryOptions';
const fetchSystemInfo = async ( const fetchSystemInfo = async (
api?: Api, api?: Api,

View File

@ -1,11 +1,9 @@
import type { Api } from '@jellyfin/sdk/lib/api'; import type { Api } from '@jellyfin/sdk/lib/api';
import type { UserViewsApiGetUserViewsRequest } from '@jellyfin/sdk/lib/generated-client/api/user-views-api'; import type { UserViewsApiGetUserViewsRequest } from '@jellyfin/sdk/lib/generated-client/api/user-views-api';
import { getUserViewsApi } from '@jellyfin/sdk/lib/utils/api/user-views-api'; import { getUserViewsApi } from '@jellyfin/sdk/lib/utils/api/user-views-api';
import { useQuery } from '@tanstack/react-query'; import { queryOptions, useQuery } from '@tanstack/react-query';
import type { AxiosRequestConfig } from 'axios'; import type { AxiosRequestConfig } from 'axios';
import { queryOptions } from 'utils/query/queryOptions';
import { useApi } from './useApi'; import { useApi } from './useApi';
const fetchUserViews = async ( const fetchUserViews = async (

View File

@ -1,59 +0,0 @@
// Copyright (c) 2021-2024 Tanner Linsley
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
/**
* Backport of the `queryOptions` utility function for react-query v4.
* Upgrading to v5 requires React 18.
*/
import type { QueryKey, UseQueryOptions } from '@tanstack/react-query';
export type UndefinedInitialDataOptions<
TQueryFnData = unknown,
TError = unknown,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey,
> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
initialData?: undefined
};
type NonUndefinedGuard<T> = T extends undefined ? never : T;
export type DefinedInitialDataOptions<
TQueryFnData = unknown,
TError = unknown,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey,
> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
initialData:
| NonUndefinedGuard<TQueryFnData>
| (() => NonUndefinedGuard<TQueryFnData>)
};
export function queryOptions<
TQueryFnData = unknown,
TError = unknown,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey,
>(
options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
queryKey: TQueryKey
};
export function queryOptions<
TQueryFnData = unknown,
TError = unknown,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey,
>(
options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
queryKey: TQueryKey
};
export function queryOptions(options: unknown) {
return options;
}

View File

@ -180,19 +180,16 @@ const config = {
path.resolve(__dirname, 'node_modules/@react-hook/passive-layout-effect'), path.resolve(__dirname, 'node_modules/@react-hook/passive-layout-effect'),
path.resolve(__dirname, 'node_modules/@react-hook/resize-observer'), path.resolve(__dirname, 'node_modules/@react-hook/resize-observer'),
path.resolve(__dirname, 'node_modules/@remix-run/router'), path.resolve(__dirname, 'node_modules/@remix-run/router'),
path.resolve(__dirname, 'node_modules/@tanstack/match-sorter-utils'),
path.resolve(__dirname, 'node_modules/@tanstack/query-core'), path.resolve(__dirname, 'node_modules/@tanstack/query-core'),
path.resolve(__dirname, 'node_modules/@tanstack/react-query'), path.resolve(__dirname, 'node_modules/@tanstack/react-query'),
path.resolve(__dirname, 'node_modules/@uupaa/dynamic-import-polyfill'), path.resolve(__dirname, 'node_modules/@uupaa/dynamic-import-polyfill'),
path.resolve(__dirname, 'node_modules/axios'), path.resolve(__dirname, 'node_modules/axios'),
path.resolve(__dirname, 'node_modules/blurhash'), path.resolve(__dirname, 'node_modules/blurhash'),
path.resolve(__dirname, 'node_modules/compare-versions'), path.resolve(__dirname, 'node_modules/compare-versions'),
path.resolve(__dirname, 'node_modules/copy-anything'),
path.resolve(__dirname, 'node_modules/date-fns'), path.resolve(__dirname, 'node_modules/date-fns'),
path.resolve(__dirname, 'node_modules/dom7'), path.resolve(__dirname, 'node_modules/dom7'),
path.resolve(__dirname, 'node_modules/epubjs'), path.resolve(__dirname, 'node_modules/epubjs'),
path.resolve(__dirname, 'node_modules/flv.js'), path.resolve(__dirname, 'node_modules/flv.js'),
path.resolve(__dirname, 'node_modules/is-what'),
path.resolve(__dirname, 'node_modules/libarchive.js'), path.resolve(__dirname, 'node_modules/libarchive.js'),
path.resolve(__dirname, 'node_modules/linkify-it'), path.resolve(__dirname, 'node_modules/linkify-it'),
path.resolve(__dirname, 'node_modules/markdown-it'), path.resolve(__dirname, 'node_modules/markdown-it'),