Skip to content

Commit bea9fde

Browse files
authored
Merge pull request #2732 from StoDevX/fix-search-crash-ios
Fix course search crash on iOS
2 parents c1a69f5 + 3335b46 commit bea9fde

File tree

3 files changed

+21
-41
lines changed

3 files changed

+21
-41
lines changed

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@
8989
"htmlparser2": "3.9.2",
9090
"keyword-search": "0.1.1",
9191
"lodash": "4.17.10",
92-
"mem": "3.0.1",
9392
"moment": "2.22.2",
9493
"moment-timezone": "0.5.21",
9594
"p-props": "1.2.0",

source/views/sis/course-search/list.js

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type {CourseType} from '../../../lib/course-search/types'
77
import {ListSeparator, ListSectionHeader} from '../../components/list'
88
import * as c from '../../components/colors'
99
import {CourseRow} from './row'
10-
import memoize from 'mem'
10+
import memoize from 'lodash/memoize'
1111
import {parseTerm} from '../../../lib/course-search'
1212
import {NoticeView} from '../../components/notice'
1313
import {FilterToolbar} from '../components/filter-toolbar'
@@ -33,6 +33,25 @@ type Props = TopLevelViewPropsType & {
3333
updateRecentFilters: (filters: FilterType[]) => any,
3434
}
3535

36+
function doSearch(args: {
37+
query: string,
38+
filters: Array<FilterType>,
39+
courses: Array<CourseType>,
40+
applyFilters: (filters: FilterType[], item: CourseType) => boolean,
41+
}) {
42+
let {query, filters, courses, applyFilters} = args
43+
44+
let results = courses.filter(course => applyFilters(filters, course))
45+
if (query) {
46+
results = results.filter(course => applySearch(query, course))
47+
}
48+
49+
return sortAndGroupResults(results)
50+
}
51+
52+
let memoizedDoSearch = memoize(doSearch)
53+
memoizedDoSearch.cache = new WeakMap()
54+
3655
export class CourseResultsList extends React.Component<Props> {
3756
keyExtractor = (item: CourseType) => item.clbid.toString()
3857

@@ -48,37 +67,10 @@ export class CourseResultsList extends React.Component<Props> {
4867
this.props.navigation.navigate('CourseDetailView', {course: data})
4968
}
5069

51-
doSearch = (args: {
52-
query: string,
53-
filters: Array<FilterType>,
54-
courses: Array<CourseType>,
55-
applyFilters: (filters: FilterType[], item: CourseType) => boolean,
56-
}) => {
57-
let {query, filters, courses, applyFilters} = args
58-
query = query.toLowerCase()
59-
60-
let results = courses.filter(course => applyFilters(filters, course))
61-
if (query) {
62-
results = results.filter(course => applySearch(query, course))
63-
}
64-
65-
return sortAndGroupResults(results)
66-
}
67-
68-
memoizedDoSearch = memoize(this.doSearch, {
69-
maxAge: 1000,
70-
cacheKey: (...args) => args,
71-
})
72-
7370
render() {
7471
let {filters, browsing, query, courses, applyFilters} = this.props
7572

76-
let results = this.memoizedDoSearch({
77-
query: query.toLowerCase(),
78-
filters,
79-
courses,
80-
applyFilters,
81-
})
73+
let results = memoizedDoSearch({query, filters, courses, applyFilters})
8274

8375
const header = (
8476
<FilterToolbar filters={filters} onPress={this.props.openFilterView} />

yarn.lock

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4784,13 +4784,6 @@ [email protected]:
47844784
version "1.0.1"
47854785
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
47864786

4787-
4788-
version "3.0.1"
4789-
resolved "https://registry.yarnpkg.com/mem/-/mem-3.0.1.tgz#152410d0d7e835e4a4363e626238d9e5be3d6f5a"
4790-
dependencies:
4791-
mimic-fn "^1.0.0"
4792-
p-is-promise "^1.1.0"
4793-
47944787
mem@^1.1.0:
47954788
version "1.1.0"
47964789
resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
@@ -5394,10 +5387,6 @@ p-finally@^1.0.0:
53945387
version "1.0.0"
53955388
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
53965389

5397-
p-is-promise@^1.1.0:
5398-
version "1.1.0"
5399-
resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
5400-
54015390
p-limit@^1.1.0:
54025391
version "1.1.0"
54035392
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"

0 commit comments

Comments
 (0)