@@ -6,6 +6,8 @@ import useDebounce from "./useDebounce";
66import useSettings from "./useSettings" ;
77
88const MAX_EXTENDED_SEARCH_LIMIT = 75 ;
9+ const AUTO_REFRESH_DATA_INTERVAL = 1000 * 60 * 5 ;
10+ const STALE_DATA_TIME = 1000 * 60 ;
911
1012const useMyIssues = ( additionalIssuesIds : number [ ] , search : SearchQuery ) => {
1113 const { settings } = useSettings ( ) ;
@@ -14,13 +16,17 @@ const useMyIssues = (additionalIssuesIds: number[], search: SearchQuery) => {
1416 queryKey : [ "issues" ] ,
1517 queryFn : ( { pageParam = 0 } ) => getAllMyOpenIssues ( pageParam * 100 , 100 ) ,
1618 getNextPageParam : ( lastPage , allPages ) => ( lastPage . length === 100 ? allPages . length : undefined ) ,
19+ staleTime : STALE_DATA_TIME ,
20+ refetchInterval : AUTO_REFRESH_DATA_INTERVAL ,
1721 } ) ;
1822 const additionalIssuesQuery = useInfiniteQuery ( {
1923 queryKey : [ "additionalIssues" , additionalIssuesIds ] ,
2024 queryFn : ( { pageParam = 0 } ) => getOpenIssuesByIds ( additionalIssuesIds , pageParam * 100 , 100 ) ,
2125 getNextPageParam : ( lastPage , allPages ) => ( lastPage . length === 100 ? allPages . length : undefined ) ,
2226 enabled : additionalIssuesIds . length > 0 ,
2327 keepPreviousData : additionalIssuesIds . length > 0 ,
28+ staleTime : STALE_DATA_TIME ,
29+ refetchInterval : AUTO_REFRESH_DATA_INTERVAL ,
2430 } ) ;
2531
2632 // auto fetch all pages
@@ -53,17 +59,23 @@ const useMyIssues = (additionalIssuesIds: number[], search: SearchQuery) => {
5359 const extendedSearchIssuesResultQuery = useQuery ( {
5460 queryKey : [ "extendedSearchIssuesResult" , debouncedSearch ] ,
5561 queryFn : ( ) => searchOpenIssues ( debouncedSearch ) ,
56- enabled : extendedSearching && search . mode === "issue" ,
62+ enabled : extendedSearching && search . mode === "issue" && ! debouncedSearch . includes ( "#" ) ,
5763 keepPreviousData : true ,
5864 } ) ;
5965 const extendedSearchIssuesResultIds = ( extendedSearchIssuesResultQuery . data ?. map ( ( result ) => result . id ) ?? [ ] ) . filter ( ( id ) => ! issues . find ( ( issue ) => issue . id === id ) ) ;
66+ const extendedSearchIssueIdMatch = debouncedSearch . match ( / ^ # ( \d + ) $ / ) ; // search for #<issueId>
67+ if ( extendedSearchIssueIdMatch ) {
68+ const issueId = Number ( extendedSearchIssueIdMatch [ 1 ] ) ;
69+ if ( ! issues . find ( ( issue ) => issue . id === issueId ) ) extendedSearchIssuesResultIds . push ( issueId ) ;
70+ }
6071 const extendedSearchIssuesQuery = useQuery ( {
6172 queryKey : [ "extendedSearchIssues" , extendedSearchIssuesResultIds ] ,
6273 queryFn : ( ) => getOpenIssuesByIds ( extendedSearchIssuesResultIds , 0 , search . inProject ? 100 : MAX_EXTENDED_SEARCH_LIMIT ) ,
6374 enabled : extendedSearchIssuesResultIds . length > 0 ,
6475 keepPreviousData : extendedSearchIssuesResultIds . length > 0 ,
6576 } ) ;
66- const extendedSearchIssuesList = ( search . inProject ? extendedSearchIssuesQuery . data ?. filter ( ( issue ) => issue . project . id === search . inProject ?. id ) : extendedSearchIssuesQuery . data ) ?. slice ( 0 , MAX_EXTENDED_SEARCH_LIMIT ) ?? [ ] ;
77+ const extendedSearchIssuesList =
78+ ( search . inProject ? extendedSearchIssuesQuery . data ?. filter ( ( issue ) => issue . project . id === search . inProject ?. id ) : extendedSearchIssuesQuery . data ) ?. slice ( 0 , MAX_EXTENDED_SEARCH_LIMIT ) ?? [ ] ;
6779
6880 // extended search - mode: project
6981 const extendedSearchProjectsResultQuery = useQuery ( {
0 commit comments