mirror of
https://github.com/AnimeThemes/animethemes-web.git
synced 2026-07-11 01:24:31 +02:00
fix: Fixed search page hitting the API too often resulting in rate limiting (#221)
This commit is contained in:
Generated
+57
-69
@@ -36,8 +36,8 @@
|
||||
"next-mdx-remote": "^4.3.0",
|
||||
"p-limit": "^3.1.0",
|
||||
"picocolors": "^1.0.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-query": "^3.29.0",
|
||||
"rehype-pretty-code": "^0.9.4",
|
||||
"rehype-slug": "^5.1.0",
|
||||
@@ -47,8 +47,8 @@
|
||||
"styled-components": "^5.3.3",
|
||||
"swr": "^2.2.4",
|
||||
"unist-util-visit": "^4.1.2",
|
||||
"use-local-storage-state": "^18.3.0",
|
||||
"use-session-storage-state": "^18.1.1"
|
||||
"use-local-storage-state": "^19.3.1",
|
||||
"use-session-storage-state": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@graphql-codegen/cli": "^5.0.2",
|
||||
@@ -4448,11 +4448,6 @@
|
||||
"hoist-non-react-statics": "^3.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/js-cookie": {
|
||||
"version": "2.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz",
|
||||
"integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA=="
|
||||
},
|
||||
"node_modules/@types/js-yaml": {
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz",
|
||||
@@ -4910,17 +4905,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/ahooks": {
|
||||
"version": "3.7.6",
|
||||
"resolved": "https://registry.npmjs.org/ahooks/-/ahooks-3.7.6.tgz",
|
||||
"integrity": "sha512-p+2j4H/BI9vqXR0fZI7S/q6fUPxPklQnHqvU7zAVBljMFNSFeYRWB2iHHbjpXGOwUTOBYCh2OuvIHyJYj6Lpag==",
|
||||
"version": "3.8.0",
|
||||
"resolved": "https://registry.npmjs.org/ahooks/-/ahooks-3.8.0.tgz",
|
||||
"integrity": "sha512-M01m+mxLRNNeJ/PCT3Fom26UyreTj6oMqJBetUrJnK4VNI5j6eMA543Xxo53OBXn6XibA2FXKcCCgrT6YCTtKQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.21.0",
|
||||
"@types/js-cookie": "^2.x.x",
|
||||
"ahooks-v3-count": "^1.0.0",
|
||||
"dayjs": "^1.9.1",
|
||||
"intersection-observer": "^0.12.0",
|
||||
"js-cookie": "^2.x.x",
|
||||
"lodash": "^4.17.21",
|
||||
"react-fast-compare": "^3.2.2",
|
||||
"resize-observer-polyfill": "^1.5.1",
|
||||
"screenfull": "^5.0.0",
|
||||
"tslib": "^2.4.1"
|
||||
@@ -4932,11 +4926,6 @@
|
||||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ahooks-v3-count": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ahooks-v3-count/-/ahooks-v3-count-1.0.0.tgz",
|
||||
"integrity": "sha512-V7uUvAwnimu6eh/PED4mCDjE7tokeZQLKlxg9lCTMPhN+NjsSbtdacByVlR1oluXQzD3MOw55wylDmQo4+S9ZQ=="
|
||||
},
|
||||
"node_modules/ajv": {
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||
@@ -11285,9 +11274,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/react": {
|
||||
"version": "18.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
|
||||
"integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
|
||||
"version": "18.3.1",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
|
||||
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.1.0"
|
||||
},
|
||||
@@ -11296,17 +11285,22 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react-dom": {
|
||||
"version": "18.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
|
||||
"integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
|
||||
"version": "18.3.1",
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
|
||||
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.1.0",
|
||||
"scheduler": "^0.23.0"
|
||||
"scheduler": "^0.23.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^18.2.0"
|
||||
"react": "^18.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/react-fast-compare": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
|
||||
"integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
|
||||
},
|
||||
"node_modules/react-is": {
|
||||
"version": "17.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
@@ -11825,9 +11819,9 @@
|
||||
"integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ=="
|
||||
},
|
||||
"node_modules/scheduler": {
|
||||
"version": "0.23.0",
|
||||
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
|
||||
"integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
|
||||
"version": "0.23.2",
|
||||
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
|
||||
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.1.0"
|
||||
}
|
||||
@@ -12983,11 +12977,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/use-local-storage-state": {
|
||||
"version": "18.3.0",
|
||||
"resolved": "https://registry.npmjs.org/use-local-storage-state/-/use-local-storage-state-18.3.0.tgz",
|
||||
"integrity": "sha512-SWInjtfTuptkw1S7ZmVxcXLpcNUlUIG3mvZahnXPWbltF4Kz/mOhnQ8cac681UxDHOEFqKdivxHMmeScMTeKZg==",
|
||||
"version": "19.3.1",
|
||||
"resolved": "https://registry.npmjs.org/use-local-storage-state/-/use-local-storage-state-19.3.1.tgz",
|
||||
"integrity": "sha512-y3Z1dODXvZXZB4qtLDNN8iuXbsYD6TAxz61K58GWB9/yKwrNG9ynI0GzCTHi/Je1rMiyOwMimz0oyFsZn+Kj7Q==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/astoilkov"
|
||||
@@ -12998,11 +12992,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/use-session-storage-state": {
|
||||
"version": "18.1.1",
|
||||
"resolved": "https://registry.npmjs.org/use-session-storage-state/-/use-session-storage-state-18.1.1.tgz",
|
||||
"integrity": "sha512-smeznwdz+7ClDng/9eDLt4Dh8Af8jRR1BqW0Ps6E998S/GZ8INoL73Qf0vb6UbvAAIs60FGstnyLmGz2AKEeWQ==",
|
||||
"version": "19.0.0",
|
||||
"resolved": "https://registry.npmjs.org/use-session-storage-state/-/use-session-storage-state-19.0.0.tgz",
|
||||
"integrity": "sha512-u6kyD7lgAm0xSwLerXcrbaNLWqeYsXYPuB97XZftBPAqPo5gVAMvAeFsRLwxblpCQDxFkjKsz/apTM5OlkbKFg==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/astoilkov"
|
||||
@@ -16646,11 +16640,6 @@
|
||||
"hoist-non-react-statics": "^3.3.0"
|
||||
}
|
||||
},
|
||||
"@types/js-cookie": {
|
||||
"version": "2.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz",
|
||||
"integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA=="
|
||||
},
|
||||
"@types/js-yaml": {
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz",
|
||||
@@ -16984,27 +16973,21 @@
|
||||
}
|
||||
},
|
||||
"ahooks": {
|
||||
"version": "3.7.6",
|
||||
"resolved": "https://registry.npmjs.org/ahooks/-/ahooks-3.7.6.tgz",
|
||||
"integrity": "sha512-p+2j4H/BI9vqXR0fZI7S/q6fUPxPklQnHqvU7zAVBljMFNSFeYRWB2iHHbjpXGOwUTOBYCh2OuvIHyJYj6Lpag==",
|
||||
"version": "3.8.0",
|
||||
"resolved": "https://registry.npmjs.org/ahooks/-/ahooks-3.8.0.tgz",
|
||||
"integrity": "sha512-M01m+mxLRNNeJ/PCT3Fom26UyreTj6oMqJBetUrJnK4VNI5j6eMA543Xxo53OBXn6XibA2FXKcCCgrT6YCTtKQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.21.0",
|
||||
"@types/js-cookie": "^2.x.x",
|
||||
"ahooks-v3-count": "^1.0.0",
|
||||
"dayjs": "^1.9.1",
|
||||
"intersection-observer": "^0.12.0",
|
||||
"js-cookie": "^2.x.x",
|
||||
"lodash": "^4.17.21",
|
||||
"react-fast-compare": "^3.2.2",
|
||||
"resize-observer-polyfill": "^1.5.1",
|
||||
"screenfull": "^5.0.0",
|
||||
"tslib": "^2.4.1"
|
||||
}
|
||||
},
|
||||
"ahooks-v3-count": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ahooks-v3-count/-/ahooks-v3-count-1.0.0.tgz",
|
||||
"integrity": "sha512-V7uUvAwnimu6eh/PED4mCDjE7tokeZQLKlxg9lCTMPhN+NjsSbtdacByVlR1oluXQzD3MOw55wylDmQo4+S9ZQ=="
|
||||
},
|
||||
"ajv": {
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||
@@ -21484,22 +21467,27 @@
|
||||
"dev": true
|
||||
},
|
||||
"react": {
|
||||
"version": "18.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
|
||||
"integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
|
||||
"version": "18.3.1",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
|
||||
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
|
||||
"requires": {
|
||||
"loose-envify": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"react-dom": {
|
||||
"version": "18.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
|
||||
"integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
|
||||
"version": "18.3.1",
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
|
||||
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
|
||||
"requires": {
|
||||
"loose-envify": "^1.1.0",
|
||||
"scheduler": "^0.23.0"
|
||||
"scheduler": "^0.23.2"
|
||||
}
|
||||
},
|
||||
"react-fast-compare": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
|
||||
"integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
|
||||
},
|
||||
"react-is": {
|
||||
"version": "17.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
@@ -21845,9 +21833,9 @@
|
||||
}
|
||||
},
|
||||
"scheduler": {
|
||||
"version": "0.23.0",
|
||||
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
|
||||
"integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
|
||||
"version": "0.23.2",
|
||||
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
|
||||
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
|
||||
"requires": {
|
||||
"loose-envify": "^1.1.0"
|
||||
}
|
||||
@@ -22668,15 +22656,15 @@
|
||||
"requires": {}
|
||||
},
|
||||
"use-local-storage-state": {
|
||||
"version": "18.3.0",
|
||||
"resolved": "https://registry.npmjs.org/use-local-storage-state/-/use-local-storage-state-18.3.0.tgz",
|
||||
"integrity": "sha512-SWInjtfTuptkw1S7ZmVxcXLpcNUlUIG3mvZahnXPWbltF4Kz/mOhnQ8cac681UxDHOEFqKdivxHMmeScMTeKZg==",
|
||||
"version": "19.3.1",
|
||||
"resolved": "https://registry.npmjs.org/use-local-storage-state/-/use-local-storage-state-19.3.1.tgz",
|
||||
"integrity": "sha512-y3Z1dODXvZXZB4qtLDNN8iuXbsYD6TAxz61K58GWB9/yKwrNG9ynI0GzCTHi/Je1rMiyOwMimz0oyFsZn+Kj7Q==",
|
||||
"requires": {}
|
||||
},
|
||||
"use-session-storage-state": {
|
||||
"version": "18.1.1",
|
||||
"resolved": "https://registry.npmjs.org/use-session-storage-state/-/use-session-storage-state-18.1.1.tgz",
|
||||
"integrity": "sha512-smeznwdz+7ClDng/9eDLt4Dh8Af8jRR1BqW0Ps6E998S/GZ8INoL73Qf0vb6UbvAAIs60FGstnyLmGz2AKEeWQ==",
|
||||
"version": "19.0.0",
|
||||
"resolved": "https://registry.npmjs.org/use-session-storage-state/-/use-session-storage-state-19.0.0.tgz",
|
||||
"integrity": "sha512-u6kyD7lgAm0xSwLerXcrbaNLWqeYsXYPuB97XZftBPAqPo5gVAMvAeFsRLwxblpCQDxFkjKsz/apTM5OlkbKFg==",
|
||||
"requires": {}
|
||||
},
|
||||
"use-sidecar": {
|
||||
|
||||
+4
-4
@@ -44,8 +44,8 @@
|
||||
"next-mdx-remote": "^4.3.0",
|
||||
"p-limit": "^3.1.0",
|
||||
"picocolors": "^1.0.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-query": "^3.29.0",
|
||||
"rehype-pretty-code": "^0.9.4",
|
||||
"rehype-slug": "^5.1.0",
|
||||
@@ -55,8 +55,8 @@
|
||||
"styled-components": "^5.3.3",
|
||||
"swr": "^2.2.4",
|
||||
"unist-util-visit": "^4.1.2",
|
||||
"use-local-storage-state": "^18.3.0",
|
||||
"use-session-storage-state": "^18.1.1"
|
||||
"use-local-storage-state": "^19.3.1",
|
||||
"use-session-storage-state": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@graphql-codegen/cli": "^5.0.2",
|
||||
|
||||
@@ -37,7 +37,9 @@ export function ErrorCard({ error }: ErrorCardProps) {
|
||||
</Text>
|
||||
</Row>
|
||||
<pre>
|
||||
<StyledErrorMessage>{JSON.stringify(error, null, 2)}</StyledErrorMessage>
|
||||
<StyledErrorMessage>
|
||||
{error instanceof Error ? error.message : JSON.stringify(error, null, 2)}
|
||||
</StyledErrorMessage>
|
||||
</pre>
|
||||
</StyledCard>
|
||||
);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useState } from "react";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import gql from "graphql-tag";
|
||||
|
||||
@@ -32,16 +32,18 @@ export function SearchAnime({ searchQuery }: SearchAnimeProps) {
|
||||
});
|
||||
const [prevSearchQuery, setPrevSearchQuery] = useState(searchQuery);
|
||||
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
return null;
|
||||
}
|
||||
useEffect(() => {
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
}
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
// Check if user is switching from non-searching to searching
|
||||
if (searchQuery && !prevSearchQuery) {
|
||||
if (searchQuery !== prevSearchQuery && searchQuery && !prevSearchQuery) {
|
||||
updateFilter("sortBy", null);
|
||||
}
|
||||
});
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
setPrevSearchQuery(searchQuery);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useState } from "react";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import gql from "graphql-tag";
|
||||
|
||||
@@ -26,16 +26,18 @@ export function SearchArtist({ searchQuery }: SearchArtistProps) {
|
||||
});
|
||||
const [prevSearchQuery, setPrevSearchQuery] = useState(searchQuery);
|
||||
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
return null;
|
||||
}
|
||||
useEffect(() => {
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
}
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
// Check if user is switching from non-searching to searching
|
||||
if (searchQuery && !prevSearchQuery) {
|
||||
if (searchQuery !== prevSearchQuery && searchQuery && !prevSearchQuery) {
|
||||
updateFilter("sortBy", null);
|
||||
}
|
||||
});
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
setPrevSearchQuery(searchQuery);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useState } from "react";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import gql from "graphql-tag";
|
||||
|
||||
@@ -24,16 +24,18 @@ export function SearchPlaylist({ searchQuery }: SearchPlaylistProps) {
|
||||
});
|
||||
const [prevSearchQuery, setPrevSearchQuery] = useState(searchQuery);
|
||||
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
return null;
|
||||
}
|
||||
useEffect(() => {
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
}
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
// Check if user is switching from non-searching to searching
|
||||
if (searchQuery && !prevSearchQuery) {
|
||||
if (searchQuery !== prevSearchQuery && searchQuery && !prevSearchQuery) {
|
||||
updateFilter("sortBy", null);
|
||||
}
|
||||
});
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
setPrevSearchQuery(searchQuery);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useState } from "react";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import gql from "graphql-tag";
|
||||
|
||||
@@ -26,16 +26,18 @@ export function SearchSeries({ searchQuery }: SearchSeriesProps) {
|
||||
});
|
||||
const [prevSearchQuery, setPrevSearchQuery] = useState(searchQuery);
|
||||
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
return null;
|
||||
}
|
||||
useEffect(() => {
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
}
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
// Check if user is switching from non-searching to searching
|
||||
if (searchQuery && !prevSearchQuery) {
|
||||
if (searchQuery !== prevSearchQuery && searchQuery && !prevSearchQuery) {
|
||||
updateFilter("sortBy", null);
|
||||
}
|
||||
});
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
setPrevSearchQuery(searchQuery);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useState } from "react";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import gql from "graphql-tag";
|
||||
|
||||
@@ -27,16 +27,18 @@ export function SearchStudio({ searchQuery }: SearchStudioProps) {
|
||||
});
|
||||
const [prevSearchQuery, setPrevSearchQuery] = useState(searchQuery);
|
||||
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
return null;
|
||||
}
|
||||
useEffect(() => {
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
}
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
// Check if user is switching from non-searching to searching
|
||||
if (searchQuery && !prevSearchQuery) {
|
||||
if (searchQuery !== prevSearchQuery && searchQuery && !prevSearchQuery) {
|
||||
updateFilter("sortBy", null);
|
||||
}
|
||||
});
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
setPrevSearchQuery(searchQuery);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useState } from "react";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import gql from "graphql-tag";
|
||||
|
||||
@@ -28,16 +28,18 @@ export function SearchTheme({ searchQuery }: SearchThemeProps) {
|
||||
});
|
||||
const [prevSearchQuery, setPrevSearchQuery] = useState(searchQuery);
|
||||
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
return null;
|
||||
}
|
||||
useEffect(() => {
|
||||
if (!searchQuery && filter.sortBy === null) {
|
||||
updateFilter("sortBy", initialFilter.sortBy);
|
||||
}
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
// Check if user is switching from non-searching to searching
|
||||
if (searchQuery && !prevSearchQuery) {
|
||||
if (searchQuery !== prevSearchQuery && searchQuery && !prevSearchQuery) {
|
||||
updateFilter("sortBy", null);
|
||||
}
|
||||
});
|
||||
|
||||
if (searchQuery !== prevSearchQuery) {
|
||||
setPrevSearchQuery(searchQuery);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { useCallback } from "react";
|
||||
|
||||
import useSessionStorageState from "use-session-storage-state";
|
||||
|
||||
export default function useFilterStorage<T>(
|
||||
@@ -12,7 +14,10 @@ export default function useFilterStorage<T>(
|
||||
|
||||
return {
|
||||
filter,
|
||||
updateFilter: (key, value) => setFilter({ ...filter, [key]: value }),
|
||||
bindUpdateFilter: (key) => (value) => setFilter({ ...filter, [key]: value }),
|
||||
updateFilter: useCallback((key, value) => setFilter((filter) => ({ ...filter, [key]: value })), [setFilter]),
|
||||
bindUpdateFilter: useCallback(
|
||||
(key) => (value) => setFilter((filter) => ({ ...filter, [key]: value })),
|
||||
[setFilter],
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -111,7 +111,10 @@ export const searchResolvers: Resolvers = {
|
||||
const searchParams = getSearchParams(args, true);
|
||||
|
||||
// TODO: Hardcoded includes and fields should be generate dynamically by API resolver instead
|
||||
searchParams.append("include[anime]", "animethemes.animethemeentries.videos,animethemes.song,images");
|
||||
searchParams.append(
|
||||
"include[anime]",
|
||||
"animethemes.animethemeentries.videos,animethemes.group,animethemes.song,images",
|
||||
);
|
||||
searchParams.append("include[animetheme]", "animethemeentries.videos,anime.images,song.artists,group");
|
||||
searchParams.append("include[artist]", "images,songs");
|
||||
searchParams.append("include[playlist]", "user");
|
||||
|
||||
Reference in New Issue
Block a user