diff --git a/libs/remix-ui/search/src/lib/components/results/ResultItem.tsx b/libs/remix-ui/search/src/lib/components/results/ResultItem.tsx index e257c4900a..3534321e7e 100644 --- a/libs/remix-ui/search/src/lib/components/results/ResultItem.tsx +++ b/libs/remix-ui/search/src/lib/components/results/ResultItem.tsx @@ -18,6 +18,7 @@ export const ResultItem = (props: ResultItemProps) => { const reloadTimeOut = useRef(null) const subscribed = useRef(true) + useEffect(() => { reload() }, [props.file.timeStamp]) @@ -48,7 +49,13 @@ export const ResultItem = (props: ResultItemProps) => { findText(props.file.filename).then(res => { if (subscribed.current) { setLines(res) - if (res) updateCount(res.length) + if (res) { + let count = 0 + res.forEach(line => { + count += line.lines.length + }) + updateCount(count, props.file.filename) + } setLoading(false) disableForceReload(props.file.filename) } @@ -71,7 +78,7 @@ export const ResultItem = (props: ResultItemProps) => {
- {lines.length} + {props.file.count}
diff --git a/libs/remix-ui/search/src/lib/context/context.tsx b/libs/remix-ui/search/src/lib/context/context.tsx index 1f7dfe9417..0cc748e6d4 100644 --- a/libs/remix-ui/search/src/lib/context/context.tsx +++ b/libs/remix-ui/search/src/lib/context/context.tsx @@ -35,7 +35,7 @@ export interface SearchingStateInterface { toggleUseRegex: () => void setReplaceWithoutConfirmation: (value: boolean) => void disableForceReload: (file: string) => void - updateCount: (count: number) => void + updateCount: (count: number, file: string) => void } export const SearchContext = createContext(null) @@ -135,10 +135,10 @@ export const SearchProvider = ({ payload: file }) }, - updateCount: (count: number) => { + updateCount: (count: number, file: string) => { dispatch({ type: 'UPDATE_COUNT', - payload: count + payload: {count, file} }) }, findText: async (path: string) => { @@ -222,6 +222,7 @@ export const SearchProvider = ({ path: file, timeStamp: Date.now(), forceReload: false, + count: 0 } return r }) diff --git a/libs/remix-ui/search/src/lib/reducers/Reducer.ts b/libs/remix-ui/search/src/lib/reducers/Reducer.ts index e5f0318bc5..0841b2b424 100644 --- a/libs/remix-ui/search/src/lib/reducers/Reducer.ts +++ b/libs/remix-ui/search/src/lib/reducers/Reducer.ts @@ -36,9 +36,19 @@ export const SearchReducer = (state: SearchState = SearchingInitialState, action count: 0 } case 'UPDATE_COUNT': + const findFile = state.searchResults.find(file => file.filename === action.payload.file) + let count = 0 + if (findFile) { + findFile.count = action.payload.count + } + state.searchResults.forEach(file => { + if (file.count) { + count += file.count + } + }) return { ...state, - count: state.count + parseInt(action.payload) + count: count } case 'TOGGLE_CASE_SENSITIVE': return { diff --git a/libs/remix-ui/search/src/lib/types/index.ts b/libs/remix-ui/search/src/lib/types/index.ts index 3d7fe96a32..af76487c51 100644 --- a/libs/remix-ui/search/src/lib/types/index.ts +++ b/libs/remix-ui/search/src/lib/types/index.ts @@ -32,6 +32,7 @@ export interface SearchResult { lines: SearchResultLine[], timeStamp: number, forceReload: boolean, + count: number } export interface SearchState {