diff --git a/src/components/Timeline/Shared/Filtered.tsx b/src/components/Timeline/Shared/Filtered.tsx index df71435a..c1dc2afd 100644 --- a/src/components/Timeline/Shared/Filtered.tsx +++ b/src/components/Timeline/Shared/Filtered.tsx @@ -44,24 +44,28 @@ export const shouldFilter = ({ getInstanceAccount(store.getState())?.id === status.account.id let shouldFilter = false - if (queryKey && !ownAccount) { + if (!ownAccount) { const parser = new htmlparser2.Parser({ ontext (text: string) { const checkFilter = (filter: Mastodon.Filter) => { + const escapedPhrase = filter.phrase.replace( + /[.*+?^${}()|[\]\\]/g, + '\\$&' + ) // $& means the whole matched string switch (filter.whole_word) { case true: - if (new RegExp('\\b' + filter.phrase + '\\b').test(text)) { + if (new RegExp('\\b' + escapedPhrase + '\\b').test(text)) { shouldFilter = true } break case false: - if (new RegExp(filter.phrase).test(text)) { + if (new RegExp(escapedPhrase).test(text)) { shouldFilter = true } break } } - instance?.filters.forEach(filter => { + instance?.filters?.forEach(filter => { if (filter.expires_at) { if (new Date().getTime() > new Date(filter.expires_at).getTime()) { return diff --git a/src/screens/Tabs/Shared/Account.tsx b/src/screens/Tabs/Shared/Account.tsx index 97e1161f..a1fd136d 100644 --- a/src/screens/Tabs/Shared/Account.tsx +++ b/src/screens/Tabs/Shared/Account.tsx @@ -115,7 +115,7 @@ const TabSharedAccount: React.FC = ({ /> ) - }, [data, fetchedTimeline.current, i18n.language, mode]) + }, [data, fetchedTimeline.current, queryKey[1].page, i18n.language, mode]) return ( <>