mirror of https://github.com/tooot-app/app
Fixes after upgrades
This commit is contained in:
parent
1d6790c76e
commit
d9e1530b8b
|
@ -37,6 +37,7 @@ export default (): ExpoConfig => ({
|
||||||
android: {
|
android: {
|
||||||
package: 'com.xmflsct.app.tooot',
|
package: 'com.xmflsct.app.tooot',
|
||||||
googleServicesFile: './configs/google-services.json',
|
googleServicesFile: './configs/google-services.json',
|
||||||
permissions: ['CAMERA', 'VIBRATE']
|
permissions: ['CAMERA', 'VIBRATE'],
|
||||||
|
blockedPermissions: ['USE_BIOMETRIC', 'USE_FINGERPRINT']
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import Button from '@components/Button'
|
import Button from '@components/Button'
|
||||||
import { StyleConstants } from '@utils/styles/constants'
|
import { StyleConstants } from '@utils/styles/constants'
|
||||||
import { Video } from 'expo-av'
|
import { ResizeMode, Video, VideoFullscreenUpdate } from 'expo-av'
|
||||||
import React, { useCallback, useEffect, useRef, useState } from 'react'
|
import React, { useCallback, useEffect, useRef, useState } from 'react'
|
||||||
import {
|
import {
|
||||||
AppState,
|
AppState,
|
||||||
|
@ -110,15 +110,14 @@ const AttachmentVideo: React.FC<Props> = ({
|
||||||
source: { uri: video.url }
|
source: { uri: video.url }
|
||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
resizeMode: 'cover',
|
resizeMode: ResizeMode.COVER,
|
||||||
posterSource: { uri: video.preview_url },
|
posterSource: { uri: video.preview_url },
|
||||||
posterStyle: { resizeMode: 'cover' }
|
posterStyle: { resizeMode: ResizeMode.COVER }
|
||||||
})}
|
})}
|
||||||
useNativeControls={false}
|
useNativeControls={false}
|
||||||
onFullscreenUpdate={async event => {
|
onFullscreenUpdate={async event => {
|
||||||
if (
|
if (
|
||||||
event.fullscreenUpdate ===
|
event.fullscreenUpdate === VideoFullscreenUpdate.PLAYER_DID_DISMISS
|
||||||
Video.FULLSCREEN_UPDATE_PLAYER_DID_DISMISS
|
|
||||||
) {
|
) {
|
||||||
if (gifv) {
|
if (gifv) {
|
||||||
await videoPlayer.current?.pauseAsync()
|
await videoPlayer.current?.pauseAsync()
|
||||||
|
|
|
@ -5,10 +5,10 @@ import { useTranslation } from 'react-i18next'
|
||||||
import { useSelector } from 'react-redux'
|
import { useSelector } from 'react-redux'
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
status: Pick<
|
status: Pick<Mastodon.Status, 'content' | 'spoiler_text' | 'emojis'> & {
|
||||||
Mastodon.Status,
|
mentions?: Mastodon.Status['mentions']
|
||||||
'content' | 'spoiler_text' | 'emojis' | 'mentions' | 'tags'
|
tags?: Mastodon.Status['tags']
|
||||||
>
|
}
|
||||||
numberOfLines?: number
|
numberOfLines?: number
|
||||||
highlighted?: boolean
|
highlighted?: boolean
|
||||||
disableDetails?: boolean
|
disableDetails?: boolean
|
||||||
|
|
|
@ -9,11 +9,11 @@ import { FormattedDate, FormattedRelativeTime, FormattedTime } from 'react-intl'
|
||||||
export interface Props {
|
export interface Props {
|
||||||
created_at: Mastodon.Status['created_at'] | number
|
created_at: Mastodon.Status['created_at'] | number
|
||||||
edited_at?: Mastodon.Status['edited_at']
|
edited_at?: Mastodon.Status['edited_at']
|
||||||
highlighted: boolean
|
highlighted?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const HeaderSharedCreated = React.memo(
|
const HeaderSharedCreated = React.memo(
|
||||||
({ created_at, edited_at, highlighted }: Props) => {
|
({ created_at, edited_at, highlighted = false }: Props) => {
|
||||||
const { t } = useTranslation('componentTimeline')
|
const { t } = useTranslation('componentTimeline')
|
||||||
const { colors } = useTheme()
|
const { colors } = useTheme()
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ import haptics from '@components/haptics'
|
||||||
import Icon from '@components/Icon'
|
import Icon from '@components/Icon'
|
||||||
import { displayMessage } from '@components/Message'
|
import { displayMessage } from '@components/Message'
|
||||||
import { ParseEmojis } from '@components/Parse'
|
import { ParseEmojis } from '@components/Parse'
|
||||||
import RelativeTime from '@components/RelativeTime'
|
|
||||||
import CustomText from '@components/Text'
|
import CustomText from '@components/Text'
|
||||||
import {
|
import {
|
||||||
MutationVarsTimelineUpdateStatusProperty,
|
MutationVarsTimelineUpdateStatusProperty,
|
||||||
|
|
|
@ -2,7 +2,10 @@ import analytics from '@components/analytics'
|
||||||
import { ActionSheetOptions } from '@expo/react-native-action-sheet'
|
import { ActionSheetOptions } from '@expo/react-native-action-sheet'
|
||||||
import * as ImageManipulator from 'expo-image-manipulator'
|
import * as ImageManipulator from 'expo-image-manipulator'
|
||||||
import * as ImagePicker from 'expo-image-picker'
|
import * as ImagePicker from 'expo-image-picker'
|
||||||
import { ImageInfo } from 'expo-image-picker/build/ImagePicker.types'
|
import {
|
||||||
|
ImageInfo,
|
||||||
|
UIImagePickerPresentationStyle
|
||||||
|
} from 'expo-image-picker/build/ImagePicker.types'
|
||||||
import i18next from 'i18next'
|
import i18next from 'i18next'
|
||||||
import { Alert, Linking, Platform } from 'react-native'
|
import { Alert, Linking, Platform } from 'react-native'
|
||||||
|
|
||||||
|
@ -39,7 +42,7 @@ const mediaSelector = async ({
|
||||||
{ resize }
|
{ resize }
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
resolve(newResult)
|
resolve({ ...newResult, cancelled: false })
|
||||||
} else {
|
} else {
|
||||||
resolve(result)
|
resolve(result)
|
||||||
}
|
}
|
||||||
|
@ -94,8 +97,8 @@ const mediaSelector = async ({
|
||||||
exif: false,
|
exif: false,
|
||||||
presentationStyle:
|
presentationStyle:
|
||||||
Platform.OS === 'ios' && parseInt(Platform.Version) < 13
|
Platform.OS === 'ios' && parseInt(Platform.Version) < 13
|
||||||
? 0
|
? UIImagePickerPresentationStyle.FULL_SCREEN
|
||||||
: -2
|
: UIImagePickerPresentationStyle.AUTOMATIC
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!result.cancelled) {
|
if (!result.cancelled) {
|
||||||
|
|
|
@ -34,6 +34,7 @@ const openLink = async (url: string, navigation?: any) => {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
navigation.push(page, options)
|
navigation.push(page, options)
|
||||||
} else {
|
} else {
|
||||||
|
// @ts-ignore
|
||||||
navigationRef.navigate(page, options)
|
navigationRef.navigate(page, options)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,8 +62,8 @@
|
||||||
"history": {
|
"history": {
|
||||||
"accessibilityLabel": "Dieser Tröt wurde {{count}} mal bearbeitet",
|
"accessibilityLabel": "Dieser Tröt wurde {{count}} mal bearbeitet",
|
||||||
"accessibilityHint": "Für den vollständigen Verlauf auswählen",
|
"accessibilityHint": "Für den vollständigen Verlauf auswählen",
|
||||||
"text": "{{count}} bearbeitet",
|
"text_one": "{{count}} bearbeitet",
|
||||||
"text_plural": "{{count}} mal bearbeitet"
|
"text_other": "{{count}} mal bearbeitet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"attachment": {
|
"attachment": {
|
||||||
|
@ -219,10 +219,10 @@
|
||||||
"refresh": "Aktualisieren"
|
"refresh": "Aktualisieren"
|
||||||
},
|
},
|
||||||
"count": {
|
"count": {
|
||||||
"voters": "{{count}} Benutzer haben abgestimmt",
|
"voters_one": "{{count}} Benutzer haben abgestimmt",
|
||||||
"voters_plural": "{{count}} Benutzer haben abgestimmt",
|
"voters_other": "{{count}} Benutzer haben abgestimmt",
|
||||||
"votes": "{{count}} Stimmen",
|
"votes_one": "{{count}} Stimmen",
|
||||||
"votes_plural": "{{count}} Stimmen"
|
"votes_other": "{{count}} Stimmen"
|
||||||
},
|
},
|
||||||
"expiration": {
|
"expiration": {
|
||||||
"expired": "Abstimmung abgelaufen",
|
"expired": "Abstimmung abgelaufen",
|
||||||
|
|
|
@ -62,8 +62,8 @@
|
||||||
"history": {
|
"history": {
|
||||||
"accessibilityLabel": "This toot has been edited {{count}} times",
|
"accessibilityLabel": "This toot has been edited {{count}} times",
|
||||||
"accessibilityHint": "Tap to view the full edit history",
|
"accessibilityHint": "Tap to view the full edit history",
|
||||||
"text": "{{count}} edit",
|
"text_one": "{{count}} edit",
|
||||||
"text_plural": "{{count}} edits"
|
"text_other": "{{count}} edits"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"attachment": {
|
"attachment": {
|
||||||
|
@ -219,10 +219,10 @@
|
||||||
"refresh": "Refresh"
|
"refresh": "Refresh"
|
||||||
},
|
},
|
||||||
"count": {
|
"count": {
|
||||||
"voters": "{{count}} user voted",
|
"voters_one": "{{count}} user voted",
|
||||||
"voters_plural": "{{count}} users voted",
|
"voters_other": "{{count}} users voted",
|
||||||
"votes": "{{count}} vote",
|
"votes_one": "{{count}} vote",
|
||||||
"votes_plural": "{{count}} votes"
|
"votes_other": "{{count}} votes"
|
||||||
},
|
},
|
||||||
"expiration": {
|
"expiration": {
|
||||||
"expired": "Vote expired",
|
"expired": "Vote expired",
|
||||||
|
|
|
@ -142,8 +142,8 @@
|
||||||
"accessibilityHint": "Open emoji selection panel, swipe horizontally to change page"
|
"accessibilityHint": "Open emoji selection panel, swipe horizontally to change page"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drafts": "Draft ({{count}})",
|
"drafts_one": "Draft ({{count}})",
|
||||||
"drafts_plural": "Drafts ({{count}})"
|
"drafts_other": "Drafts ({{count}})"
|
||||||
},
|
},
|
||||||
"editAttachment": {
|
"editAttachment": {
|
||||||
"header": {
|
"header": {
|
||||||
|
|
|
@ -116,8 +116,8 @@
|
||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"title": "Metadata",
|
"title": "Metadata",
|
||||||
"total": "{{count}} field",
|
"total_one": "{{count}} field",
|
||||||
"total_plural": "{{count}} fields"
|
"total_other": "{{count}} fields"
|
||||||
},
|
},
|
||||||
"visibility": {
|
"visibility": {
|
||||||
"title": "Posting Visibility",
|
"title": "Posting Visibility",
|
||||||
|
|
|
@ -196,10 +196,10 @@
|
||||||
"refresh": "새로고침"
|
"refresh": "새로고침"
|
||||||
},
|
},
|
||||||
"count": {
|
"count": {
|
||||||
"voters": "{{count}}명의 사용자가 투표",
|
"voters_one": "{{count}}명의 사용자가 투표",
|
||||||
"voters_plural": "{{count}}명의 사용자가 투표",
|
"voters_other": "{{count}}명의 사용자가 투표",
|
||||||
"votes": "{{count}} 투표",
|
"votes_one": "{{count}} 투표",
|
||||||
"votes_plural": "{{count}} 투표"
|
"votes_other": "{{count}} 투표"
|
||||||
},
|
},
|
||||||
"expiration": {
|
"expiration": {
|
||||||
"expired": "투표 종료됨",
|
"expired": "투표 종료됨",
|
||||||
|
|
|
@ -134,8 +134,8 @@
|
||||||
"accessibilityHint": "이모지 선택 패널 열기, 가로로 스와이프해서 페이지를 바꿀 수 있어요"
|
"accessibilityHint": "이모지 선택 패널 열기, 가로로 스와이프해서 페이지를 바꿀 수 있어요"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drafts": "초안 ({{count}})",
|
"drafts_one": "초안 ({{count}})",
|
||||||
"drafts_plural": "초안 ({{count}})"
|
"drafts_other": "초안 ({{count}})"
|
||||||
},
|
},
|
||||||
"editAttachment": {
|
"editAttachment": {
|
||||||
"header": {
|
"header": {
|
||||||
|
|
|
@ -113,8 +113,8 @@
|
||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"title": "메타데이터",
|
"title": "메타데이터",
|
||||||
"total": "{{count}}개 필드",
|
"total_one": "{{count}}개 필드",
|
||||||
"total_plural": "{{count}}개 필드"
|
"total_other": "{{count}}개 필드"
|
||||||
},
|
},
|
||||||
"visibility": {
|
"visibility": {
|
||||||
"title": "공개 범위",
|
"title": "공개 범위",
|
||||||
|
|
|
@ -198,10 +198,10 @@
|
||||||
"refresh": "Làm mới"
|
"refresh": "Làm mới"
|
||||||
},
|
},
|
||||||
"count": {
|
"count": {
|
||||||
"voters": "{{count}} người bình chọn",
|
"voters_one": "{{count}} người bình chọn",
|
||||||
"voters_plural": "{{count}} người bình chọn",
|
"voters_other": "{{count}} người bình chọn",
|
||||||
"votes": "{{count}} bình chọn",
|
"votes_one": "{{count}} bình chọn",
|
||||||
"votes_plural": "{{count}} bình chọn"
|
"votes_other": "{{count}} bình chọn"
|
||||||
},
|
},
|
||||||
"expiration": {
|
"expiration": {
|
||||||
"expired": "Đã kết thúc",
|
"expired": "Đã kết thúc",
|
||||||
|
|
|
@ -134,8 +134,8 @@
|
||||||
"accessibilityHint": "Mở bảng chọn emoji, vuốt qua lại để xem toàn bộ"
|
"accessibilityHint": "Mở bảng chọn emoji, vuốt qua lại để xem toàn bộ"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drafts": "Nháp ({{count}})",
|
"drafts_one": "Nháp ({{count}})",
|
||||||
"drafts_plural": "Nháp ({{count}})"
|
"drafts_other": "Nháp ({{count}})"
|
||||||
},
|
},
|
||||||
"editAttachment": {
|
"editAttachment": {
|
||||||
"header": {
|
"header": {
|
||||||
|
|
|
@ -116,8 +116,8 @@
|
||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"title": "Metadata",
|
"title": "Metadata",
|
||||||
"total": "{{count}} mục",
|
"total_one": "{{count}} mục",
|
||||||
"total_plural": "{{count}} mục"
|
"total_other": "{{count}} mục"
|
||||||
},
|
},
|
||||||
"visibility": {
|
"visibility": {
|
||||||
"title": "Kiểu tút mặc định",
|
"title": "Kiểu tút mặc định",
|
||||||
|
|
|
@ -198,10 +198,10 @@
|
||||||
"refresh": "刷新"
|
"refresh": "刷新"
|
||||||
},
|
},
|
||||||
"count": {
|
"count": {
|
||||||
"voters": "已投{{count}}人",
|
"voters_one": "已投{{count}}人",
|
||||||
"voters_plural": "已投{{count}}人",
|
"voters_other": "已投{{count}}人",
|
||||||
"votes": "{{count}}票",
|
"votes_one": "{{count}}票",
|
||||||
"votes_plural": "{{count}}票"
|
"votes_other": "{{count}}票"
|
||||||
},
|
},
|
||||||
"expiration": {
|
"expiration": {
|
||||||
"expired": "投票已结束",
|
"expired": "投票已结束",
|
||||||
|
@ -210,4 +210,4 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -136,8 +136,8 @@
|
||||||
"accessibilityHint": "打开表情选择面板,水平滑动切换页面"
|
"accessibilityHint": "打开表情选择面板,水平滑动切换页面"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drafts": "草稿 ({{count}})",
|
"drafts_one": "草稿 ({{count}})",
|
||||||
"drafts_plural": "草稿 ({{count}})"
|
"drafts_other": "草稿 ({{count}})"
|
||||||
},
|
},
|
||||||
"editAttachment": {
|
"editAttachment": {
|
||||||
"header": {
|
"header": {
|
||||||
|
|
|
@ -116,8 +116,8 @@
|
||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"title": "附加信息",
|
"title": "附加信息",
|
||||||
"total": "{{count}} 项",
|
"total_one": "{{count}} 项",
|
||||||
"total_plural": "{{count}} 项"
|
"total_other": "{{count}} 项"
|
||||||
},
|
},
|
||||||
"visibility": {
|
"visibility": {
|
||||||
"title": "嘟文默认可见范围",
|
"title": "嘟文默认可见范围",
|
||||||
|
|
|
@ -2,7 +2,6 @@ import analytics from '@components/analytics'
|
||||||
import Button from '@components/Button'
|
import Button from '@components/Button'
|
||||||
import haptics from '@components/haptics'
|
import haptics from '@components/haptics'
|
||||||
import { ParseHTML } from '@components/Parse'
|
import { ParseHTML } from '@components/Parse'
|
||||||
import RelativeTime from '@components/RelativeTime'
|
|
||||||
import CustomText from '@components/Text'
|
import CustomText from '@components/Text'
|
||||||
import { BlurView } from '@react-native-community/blur'
|
import { BlurView } from '@react-native-community/blur'
|
||||||
import { useAccessibility } from '@utils/accessibility/AccessibilityManager'
|
import { useAccessibility } from '@utils/accessibility/AccessibilityManager'
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import GracefullyImage from '@components/GracefullyImage'
|
import GracefullyImage from '@components/GracefullyImage'
|
||||||
|
import { RootStackParamList } from '@utils/navigation/navigators'
|
||||||
import React, { useState, useCallback } from 'react'
|
import React, { useState, useCallback } from 'react'
|
||||||
import { Animated, Dimensions, StyleSheet } from 'react-native'
|
import { Animated, Dimensions, StyleSheet } from 'react-native'
|
||||||
import usePanResponder from '../hooks/usePanResponder'
|
import usePanResponder from '../hooks/usePanResponder'
|
||||||
|
@ -17,11 +18,11 @@ const SCREEN_WIDTH = SCREEN.width
|
||||||
const SCREEN_HEIGHT = SCREEN.height
|
const SCREEN_HEIGHT = SCREEN.height
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
imageSrc: Nav.RootStackParamList['Screen-ImagesViewer']['imageUrls'][0]
|
imageSrc: RootStackParamList['Screen-ImagesViewer']['imageUrls'][0]
|
||||||
onRequestClose: () => void
|
onRequestClose: () => void
|
||||||
onZoom: (isZoomed: boolean) => void
|
onZoom: (isZoomed: boolean) => void
|
||||||
onLongPress: (
|
onLongPress: (
|
||||||
image: Nav.RootStackParamList['Screen-ImagesViewer']['imageUrls'][0]
|
image: RootStackParamList['Screen-ImagesViewer']['imageUrls'][0]
|
||||||
) => void
|
) => void
|
||||||
delayLongPress: number
|
delayLongPress: number
|
||||||
swipeToCloseEnabled?: boolean
|
swipeToCloseEnabled?: boolean
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import GracefullyImage from '@components/GracefullyImage'
|
import GracefullyImage from '@components/GracefullyImage'
|
||||||
|
import { RootStackParamList } from '@utils/navigation/navigators'
|
||||||
import React, { createRef, useCallback, useRef, useState } from 'react'
|
import React, { createRef, useCallback, useRef, useState } from 'react'
|
||||||
import {
|
import {
|
||||||
Animated,
|
Animated,
|
||||||
|
@ -31,11 +32,11 @@ const SCREEN_WIDTH = SCREEN.width
|
||||||
const SCREEN_HEIGHT = SCREEN.height
|
const SCREEN_HEIGHT = SCREEN.height
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
imageSrc: Nav.RootStackParamList['Screen-ImagesViewer']['imageUrls'][0]
|
imageSrc: RootStackParamList['Screen-ImagesViewer']['imageUrls'][0]
|
||||||
onRequestClose: () => void
|
onRequestClose: () => void
|
||||||
onZoom: (scaled: boolean) => void
|
onZoom: (scaled: boolean) => void
|
||||||
onLongPress: (
|
onLongPress: (
|
||||||
image: Nav.RootStackParamList['Screen-ImagesViewer']['imageUrls'][0]
|
image: RootStackParamList['Screen-ImagesViewer']['imageUrls'][0]
|
||||||
) => void
|
) => void
|
||||||
swipeToCloseEnabled?: boolean
|
swipeToCloseEnabled?: boolean
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue