diff --git a/src/components/GracefullyImage.tsx b/src/components/GracefullyImage.tsx
index f4c393e7..fd320107 100644
--- a/src/components/GracefullyImage.tsx
+++ b/src/components/GracefullyImage.tsx
@@ -53,26 +53,17 @@ const GracefullyImage = ({
}: Props) => {
const { reduceMotionEnabled } = useAccessibility()
const { colors } = useTheme()
- const [originalFailed, setOriginalFailed] = useState(false)
const [imageLoaded, setImageLoaded] = useState(false)
- const source = originalFailed
- ? { uri: uri.remote || undefined }
- : {
- uri: reduceMotionEnabled && uri.static ? uri.static : uri.original
- }
-
+ const source = {
+ uri: reduceMotionEnabled && uri.static ? uri.static : uri.original
+ }
const onLoad = () => {
setImageLoaded(true)
if (setImageDimensions && source.uri) {
Image.getSize(source.uri, (width, height) => setImageDimensions({ width, height }))
}
}
- const onError = () => {
- if (!originalFailed) {
- setOriginalFailed(true)
- }
- }
const blurhashView = useMemo(() => {
if (hidden || !imageLoaded) {
@@ -101,10 +92,11 @@ const GracefullyImage = ({
/>
) : null}
{blurhashView}
diff --git a/src/components/Relationship/Outgoing.tsx b/src/components/Relationship/Outgoing.tsx
index fc082097..6d394b3f 100644
--- a/src/components/Relationship/Outgoing.tsx
+++ b/src/components/Relationship/Outgoing.tsx
@@ -13,6 +13,8 @@ import { useQueryClient } from '@tanstack/react-query'
import { useSelector } from 'react-redux'
import { checkInstanceFeature } from '@utils/slices/instancesSlice'
import { StyleConstants } from '@utils/styles/constants'
+import { View } from 'react-native'
+import { useRoute } from '@react-navigation/native'
export interface Props {
id: Mastodon.Account['id']
@@ -122,9 +124,12 @@ const RelationshipOutgoing: React.FC = ({ id }: Props) => {
}
}
+ const { name } = useRoute()
+ const isPageNotifications = name === 'Tab-Notifications-Root'
+
return (
- <>
- {canFollowNotify && query.data?.following ? (
+
+ {!isPageNotifications && canFollowNotify && query.data?.following ? (
)
}
diff --git a/src/i18n/ru/common.json b/src/i18n/ru/common.json
index be1ba7cd..386e6fff 100644
--- a/src/i18n/ru/common.json
+++ b/src/i18n/ru/common.json
@@ -1,32 +1,32 @@
{
"buttons": {
- "OK": "",
- "apply": "",
- "cancel": "",
- "discard": "",
- "continue": "",
- "create": "",
- "delete": "",
- "done": "",
- "confirm": ""
+ "OK": "ОК",
+ "apply": "Применить",
+ "cancel": "Отменить",
+ "discard": "Отклонить",
+ "continue": "Продолжить",
+ "create": "Создать",
+ "delete": "Удалить",
+ "done": "Готово",
+ "confirm": "Подтвердить"
},
"customEmoji": {
- "accessibilityLabel": ""
+ "accessibilityLabel": "Пользовательские эмодзи {{emoji}}"
},
"message": {
"success": {
- "message": ""
+ "message": "Успешно {{function}}"
},
"warning": {
"message": ""
},
"error": {
- "message": ""
+ "message": "Ошибка {{function}}, попробуйте ещё раз"
}
},
- "separator": "",
+ "separator": ", ",
"discard": {
- "title": "",
- "message": ""
+ "title": "Изменения не сохранены",
+ "message": "Ваши изменения не были сохранены. Вы хотите отменить изменения?"
}
}
\ No newline at end of file
diff --git a/src/i18n/vi/components/contextMenu.json b/src/i18n/vi/components/contextMenu.json
index 448a1e88..fc293cab 100644
--- a/src/i18n/vi/components/contextMenu.json
+++ b/src/i18n/vi/components/contextMenu.json
@@ -15,13 +15,13 @@
"action_false": "Chặn người này",
"action_true": "Bỏ chặn người dùng",
"alert": {
- "title": ""
+ "title": "Bạn có chắc muốn chặn {{username}}?"
}
},
"reports": {
"action": "Báo cáo và chặn",
"alert": {
- "title": ""
+ "title": "Bạn có chắc muốn báo cáo {{username}}?"
}
}
},
diff --git a/src/i18n/zh-Hant/components/contextMenu.json b/src/i18n/zh-Hant/components/contextMenu.json
index 5c1bc9ae..c4221eff 100644
--- a/src/i18n/zh-Hant/components/contextMenu.json
+++ b/src/i18n/zh-Hant/components/contextMenu.json
@@ -15,13 +15,13 @@
"action_false": "封鎖使用者",
"action_true": "解除封鎖使用者",
"alert": {
- "title": ""
+ "title": "確認封鎖使用者 @{{username}}?"
}
},
"reports": {
"action": "檢舉並封鎖使用者",
"alert": {
- "title": ""
+ "title": "確認檢舉並封鎖使用者 @{{username}}?"
}
}
},
diff --git a/src/screens/Tabs/Shared/Account/Header.tsx b/src/screens/Tabs/Shared/Account/Header.tsx
index 036ad855..18fa7cff 100644
--- a/src/screens/Tabs/Shared/Account/Header.tsx
+++ b/src/screens/Tabs/Shared/Account/Header.tsx
@@ -1,9 +1,8 @@
import GracefullyImage from '@components/GracefullyImage'
import navigationRef from '@helpers/navigationRef'
import { getInstanceActive } from '@utils/slices/instancesSlice'
-import { useTheme } from '@utils/styles/ThemeManager'
import React from 'react'
-import { Dimensions, Image, Pressable } from 'react-native'
+import { Dimensions, Image } from 'react-native'
import { useSafeAreaInsets } from 'react-native-safe-area-context'
import { useSelector } from 'react-redux'
@@ -12,13 +11,14 @@ export interface Props {
}
const AccountHeader: React.FC = ({ account }) => {
- const { colors } = useTheme()
const topInset = useSafeAreaInsets().top
useSelector(getInstanceActive)
return (
- {
if (account) {
Image.getSize(account.header, (width, height) =>
@@ -30,15 +30,7 @@ const AccountHeader: React.FC = ({ account }) => {
)
}
}}
- >
-
-
+ />
)
}
diff --git a/src/screens/Tabs/Shared/Account/Information.tsx b/src/screens/Tabs/Shared/Account/Information.tsx
index 24651ac7..6b2bf7aa 100644
--- a/src/screens/Tabs/Shared/Account/Information.tsx
+++ b/src/screens/Tabs/Shared/Account/Information.tsx
@@ -17,51 +17,39 @@ export interface Props {
account: Mastodon.Account | undefined
}
-const AccountInformation = React.memo(
- ({ account }: Props) => {
- const { colors } = useTheme()
+const AccountInformation: React.FC = ({ account }) => {
+ const { colors } = useTheme()
- const { name } = useRoute()
- const myInfo = name !== 'Tab-Shared-Account'
+ const { name } = useRoute()
+ const myInfo = name !== 'Tab-Shared-Account'
- return (
-
- (
-
- )}
- >
-
-
-
-
+ return (
+
+ (
+
+ )}
+ >
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
-
-
- )
- },
- (prev, next) => {
- let skipUpdate = true
- if (prev.account?.id !== next.account?.id) {
- skipUpdate = false
- }
- if (prev.account?.acct === next.account?.acct) {
- skipUpdate = false
- }
- return skipUpdate
- }
-)
+
+
+
+ )
+}
const styles = StyleSheet.create({
base: {
diff --git a/src/screens/Tabs/Shared/Account/Information/Avatar.tsx b/src/screens/Tabs/Shared/Account/Information/Avatar.tsx
index 8d294308..21595a39 100644
--- a/src/screens/Tabs/Shared/Account/Information/Avatar.tsx
+++ b/src/screens/Tabs/Shared/Account/Information/Avatar.tsx
@@ -6,7 +6,6 @@ import { TabLocalStackParamList } from '@utils/navigation/navigators'
import { getInstanceActive } from '@utils/slices/instancesSlice'
import { StyleConstants } from '@utils/styles/constants'
import React from 'react'
-import { Pressable } from 'react-native'
import { useSelector } from 'react-redux'
export interface Props {
@@ -18,7 +17,15 @@ const AccountInformationAvatar: React.FC = ({ account, myInfo }) => {
const navigation = useNavigation>()
useSelector(getInstanceActive)
return (
- {
if (account) {
if (myInfo) {
@@ -33,19 +40,7 @@ const AccountInformationAvatar: React.FC = ({ account, myInfo }) => {
}
}
}}
- style={{
- borderRadius: 8,
- overflow: 'hidden',
- width: StyleConstants.Avatar.L,
- height: StyleConstants.Avatar.L
- }}
- >
-
-
+ />
)
}
diff --git a/src/utils/slices/instances/add.ts b/src/utils/slices/instances/add.ts
index e69e6c1e..fd3561d9 100644
--- a/src/utils/slices/instances/add.ts
+++ b/src/utils/slices/instances/add.ts
@@ -72,7 +72,7 @@ const addInstance = createAsyncThunk(
appData,
url: domain,
token,
- uri: instance.uri,
+ uri: instance.uri.replace(/^https?:\/\//, ''), // Pleroma includes schema
urls: instance.urls,
account: {
id,
diff --git a/src/utils/slices/instancesSlice.ts b/src/utils/slices/instancesSlice.ts
index 4771b10e..7704cef9 100644
--- a/src/utils/slices/instancesSlice.ts
+++ b/src/utils/slices/instancesSlice.ts
@@ -280,7 +280,7 @@ export const getInstanceUrl = ({ instances: { instances } }: RootState) =>
instances[findInstanceActive(instances)]?.url
export const getInstanceUri = ({ instances: { instances } }: RootState) =>
- instances[findInstanceActive(instances)]?.uri.replace(/^https?:\/\//, '') // Pleroma has schema
+ instances[findInstanceActive(instances)]?.uri
export const getInstanceUrls = ({ instances: { instances } }: RootState) =>
instances[findInstanceActive(instances)]?.urls