From 9d26053cceab00c895c7d241dff8a580ac5f5e9f Mon Sep 17 00:00:00 2001 From: Zhiyuan Zheng Date: Wed, 2 Jun 2021 22:27:42 +0200 Subject: [PATCH 1/2] Added default headers Like moresci.sale behind Nginx is strict on the headers being present --- package.json | 2 +- src/api/general.ts | 3 +++ src/api/instance.ts | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9e17935e..e806803f 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "native": "210511", "major": 2, "minor": 0, - "patch": 3, + "patch": 4, "expo": "41.0.0" }, "description": "tooot app for Mastodon", diff --git a/src/api/general.ts b/src/api/general.ts index 5784c521..6d3c3b6e 100644 --- a/src/api/general.ts +++ b/src/api/general.ts @@ -1,5 +1,6 @@ import axios from 'axios' import chalk from 'chalk' +import { Constants } from 'react-native-unimodules' import * as Sentry from 'sentry-expo' const ctx = new chalk.Instance({ level: 3 }) @@ -45,6 +46,8 @@ const apiGeneral = async ({ params, headers: { 'Content-Type': 'application/json', + 'User-Agent': `tooot/${Constants.manifest.version}`, + Accept: '*/*', ...headers }, ...(body && { data: body }) diff --git a/src/api/instance.ts b/src/api/instance.ts index a928f01c..cd3a3c9e 100644 --- a/src/api/instance.ts +++ b/src/api/instance.ts @@ -2,6 +2,7 @@ import { RootState } from '@root/store' import axios, { AxiosRequestConfig } from 'axios' import chalk from 'chalk' import li from 'li' +import { Constants } from 'react-native-unimodules' const ctx = new chalk.Instance({ level: 3 }) @@ -67,6 +68,8 @@ const apiInstance = async ({ params, headers: { 'Content-Type': 'application/json', + 'User-Agent': `tooot/${Constants.manifest.version}`, + Accept: '*/*', ...headers, ...(token && { Authorization: `Bearer ${token}` From c72f26c2605c79a61f6f4bd0d632e00402e61b15 Mon Sep 17 00:00:00 2001 From: Zhiyuan Zheng Date: Wed, 2 Jun 2021 22:27:51 +0200 Subject: [PATCH 2/2] Fix bugs --- src/components/Timeline/Shared/Filtered.tsx | 12 ++++++++---- src/screens/Tabs/Shared/Account.tsx | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) 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 ( <>