1
0
mirror of https://github.com/tooot-app/app synced 2025-05-22 06:24:19 +02:00

Merge pull request #219 from tooot-app/main

Release v3.4.2
This commit is contained in:
xmflsct 2022-02-10 23:16:40 +01:00 committed by GitHub
commit c068f9934f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 72 additions and 49 deletions

View File

@ -17,17 +17,17 @@ GEM
artifactory (3.0.15) artifactory (3.0.15)
atomos (0.1.3) atomos (0.1.3)
aws-eventstream (1.2.0) aws-eventstream (1.2.0)
aws-partitions (1.551.0) aws-partitions (1.554.0)
aws-sdk-core (3.125.5) aws-sdk-core (3.126.0)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.525.0) aws-partitions (~> 1, >= 1.525.0)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
jmespath (~> 1.0) jmespath (~> 1.0)
aws-sdk-kms (1.53.0) aws-sdk-kms (1.54.0)
aws-sdk-core (~> 3, >= 3.125.0) aws-sdk-core (~> 3, >= 3.126.0)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.111.3) aws-sdk-s3 (1.112.0)
aws-sdk-core (~> 3, >= 3.125.0) aws-sdk-core (~> 3, >= 3.126.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4) aws-sigv4 (~> 1.4)
aws-sigv4 (1.4.0) aws-sigv4 (1.4.0)
@ -86,7 +86,7 @@ GEM
escape (0.0.4) escape (0.0.4)
ethon (0.15.0) ethon (0.15.0)
ffi (>= 1.15.0) ffi (>= 1.15.0)
excon (0.90.0) excon (0.91.0)
faraday (1.9.3) faraday (1.9.3)
faraday-em_http (~> 1.0) faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0) faraday-em_synchrony (~> 1.0)
@ -116,7 +116,7 @@ GEM
faraday_middleware (1.2.0) faraday_middleware (1.2.0)
faraday (~> 1.0) faraday (~> 1.0)
fastimage (2.2.6) fastimage (2.2.6)
fastlane (2.203.0) fastlane (2.204.2)
CFPropertyList (>= 2.3, < 4.0.0) CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0) addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0) artifactory (~> 3.0)
@ -155,8 +155,8 @@ GEM
xcodeproj (>= 1.13.0, < 2.0.0) xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0) xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3) xcpretty-travis-formatter (>= 0.0.3)
fastlane-plugin-json (1.0.0) fastlane-plugin-json (1.1.0)
fastlane-plugin-sentry (1.11.0) fastlane-plugin-sentry (1.11.1)
fastlane-plugin-versioning_android (0.1.0) fastlane-plugin-versioning_android (0.1.0)
fastlane-plugin-yarn (1.2) fastlane-plugin-yarn (1.2)
ffi (1.15.4) ffi (1.15.4)

View File

@ -4,7 +4,7 @@
"native": "220206", "native": "220206",
"major": 3, "major": 3,
"minor": 4, "minor": 4,
"patch": 1, "patch": 2,
"expo": "44.0.0" "expo": "44.0.0"
}, },
"description": "tooot app for Mastodon", "description": "tooot app for Mastodon",

View File

@ -46,7 +46,7 @@ export const shouldFilter = ({
let shouldFilter = false let shouldFilter = false
if (!ownAccount) { if (!ownAccount) {
const parser = new htmlparser2.Parser({ const parser = new htmlparser2.Parser({
ontext (text: string) { ontext: (text: string) => {
const checkFilter = (filter: Mastodon.Filter) => { const checkFilter = (filter: Mastodon.Filter) => {
const escapedPhrase = filter.phrase.replace( const escapedPhrase = filter.phrase.replace(
/[.*+?^${}()|[\]\\]/g, /[.*+?^${}()|[\]\\]/g,
@ -54,7 +54,7 @@ export const shouldFilter = ({
) // $& means the whole matched string ) // $& means the whole matched string
switch (filter.whole_word) { switch (filter.whole_word) {
case true: case true:
if (new RegExp('\\b' + escapedPhrase + '\\b').test(text)) { if (new RegExp('\\B' + escapedPhrase + '\\B').test(text)) {
shouldFilter = true shouldFilter = true
} }
break break

View File

@ -240,6 +240,9 @@
"cancel": "$t(common:buttons.cancel)" "cancel": "$t(common:buttons.cancel)"
} }
}, },
"feedback": {
"heading": "Feature Requests"
},
"support": { "support": {
"heading": "Support tooot" "heading": "Support tooot"
}, },

View File

@ -1,8 +1,8 @@
{ {
"HTML": { "HTML": {
"expanded": { "expanded": {
"true": "Thu gọn {{hint}}", "true": "Cuộn {{hint}}",
"false": "Mở rộng {{hint}}" "false": "Mở {{hint}}"
}, },
"defaultHint": "Tút" "defaultHint": "Tút"
} }

View File

@ -2,7 +2,7 @@
"strings": { "strings": {
"prefixAgo": "", "prefixAgo": "",
"prefixFromNow": "", "prefixFromNow": "",
"suffixAgo": "trước", "suffixAgo": " trước",
"suffixFromNow": "", "suffixFromNow": "",
"seconds": "%d giây", "seconds": "%d giây",
"minute": "một phút", "minute": "một phút",

View File

@ -27,7 +27,7 @@
"follow_request": "{{name}} yêu cầu theo dõi bạn", "follow_request": "{{name}} yêu cầu theo dõi bạn",
"poll": "Cuộc bình chọn đã kết thúc", "poll": "Cuộc bình chọn đã kết thúc",
"reblog": { "reblog": {
"default": "{{name}} đã chia sẻ", "default": "{{name}} chia sẻ",
"notification": "{{name}} chia sẻ tút của bạn" "notification": "{{name}} chia sẻ tút của bạn"
} }
}, },
@ -62,7 +62,7 @@
}, },
"attachment": { "attachment": {
"sensitive": { "sensitive": {
"button": "Hiện nội dung nhạy cảm" "button": "NSFW"
}, },
"unsupported": { "unsupported": {
"text": "Không hỗ trợ định dạng", "text": "Không hỗ trợ định dạng",
@ -74,14 +74,16 @@
"accessibilityHint": "Đến trang cá nhân {{name}}" "accessibilityHint": "Đến trang cá nhân {{name}}"
}, },
"content": { "content": {
"expandHint": "nội dung bị ẩn" "expandHint": "nội dung ẩn"
}, },
"filtered": "Đã lọc", "filtered": "Đã lọc",
"fullConversation": "Xem thêm", "fullConversation": "Xem thêm",
"translate": { "translate": {
"default": "Dịch", "default": "Dịch",
"succeed": "Dịch bằng {{provider}} từ {{source}}", "succeed": "Dịch bằng {{provider}} từ {{source}}",
"failed": "Không thể dịch!" "failed": "Không thể dịch!",
"source_not_supported": "không hỗ trợ ngôn ngữ tút",
"target_not_supported": "Ngôn ngữ đích không hỗ trợ"
}, },
"header": { "header": {
"shared": { "shared": {
@ -93,7 +95,7 @@
"accessibilityHint": "Tài khoản" "accessibilityHint": "Tài khoản"
} }
}, },
"application": "Đăng bằng {{application}}", "application": "via {{application}}",
"muted": { "muted": {
"accessibilityLabel": "Đã ẩn tút" "accessibilityLabel": "Đã ẩn tút"
}, },
@ -107,7 +109,7 @@
} }
}, },
"conversation": { "conversation": {
"withAccounts": "Với", "withAccounts": "Với ",
"delete": { "delete": {
"function": "Xóa nhắn riêng" "function": "Xóa nhắn riêng"
} }
@ -146,16 +148,16 @@
}, },
"share": { "share": {
"status": { "status": {
"heading": "Tút", "heading": "Chia sẻ",
"button": "Chia sẻ URL tút" "button": "Chia sẻ URL tút"
}, },
"account": { "account": {
"heading": "Chia sẻ người dùng", "heading": "Chia sẻ",
"button": "Chia sẻ URL người dùng này" "button": "Chia sẻ URL người dùng này"
} }
}, },
"status": { "status": {
"heading": "Về tút", "heading": "Đối với tút",
"delete": { "delete": {
"function": "Xóa tút", "function": "Xóa tút",
"button": "Xóa tút này" "button": "Xóa tút này"

View File

@ -5,7 +5,7 @@
"cancel": "$t(common:buttons.cancel)" "cancel": "$t(common:buttons.cancel)"
}, },
"notificationsFilter": { "notificationsFilter": {
"heading": "Hiện những dạng thông báo", "heading": "Chỉ hiện thông báo",
"content": { "content": {
"follow": "$t(screenTabs:me.push.follow.heading)", "follow": "$t(screenTabs:me.push.follow.heading)",
"favourite": "$t(screenTabs:me.push.favourite.heading)", "favourite": "$t(screenTabs:me.push.favourite.heading)",

View File

@ -15,7 +15,7 @@
"button": { "button": {
"default": "Tút", "default": "Tút",
"conversation": "Tin nhắn", "conversation": "Tin nhắn",
"reply": "Lượt trả lời", "reply": "Trả lời",
"edit": "Tút" "edit": "Tút"
}, },
"alert": { "alert": {
@ -63,7 +63,7 @@
"option": { "option": {
"placeholder": { "placeholder": {
"accessibilityLabel": "Tùy chọn bình chọn {{index}}", "accessibilityLabel": "Tùy chọn bình chọn {{index}}",
"single": "Chỉ được chọn một", "single": "Lựa chọn",
"multiple": "Nhiều lựa chọn" "multiple": "Nhiều lựa chọn"
} }
}, },
@ -117,7 +117,7 @@
}, },
"visibility": { "visibility": {
"accessibilityLabel": "Tút thuộc dạng {{visibility}}", "accessibilityLabel": "Tút thuộc dạng {{visibility}}",
"title": "Dạng tút", "title": "Kiểu tút",
"options": { "options": {
"public": "Công khai", "public": "Công khai",
"unlisted": "Hạn chế", "unlisted": "Hạn chế",

View File

@ -53,7 +53,7 @@
"name": "Thông báo đẩy" "name": "Thông báo đẩy"
}, },
"profile": { "profile": {
"name": "Trang cá nhân" "name": "Cài đặt cá nhân"
}, },
"profileName": { "profileName": {
"name": "Tên hiển thị mới" "name": "Tên hiển thị mới"
@ -65,7 +65,7 @@
"name": "Metadata" "name": "Metadata"
}, },
"settings": { "settings": {
"name": "Cài đặt App" "name": "Thiết lập"
}, },
"switch": { "switch": {
"name": "Chuyển đổi tài khoản" "name": "Chuyển đổi tài khoản"
@ -102,22 +102,22 @@
}, },
"avatar": { "avatar": {
"title": "Ảnh đại diện", "title": "Ảnh đại diện",
"description": "Sẽ tự động chuyển còn 400x400px" "description": "Tự động nén xuống 400x400px"
}, },
"header": { "header": {
"title": "Ảnh bìa", "title": "Ảnh bìa",
"description": "Sẽ tự động chuyển còn 1500x1500px" "description": "Tự động nén xuống 1500x500px"
}, },
"note": { "note": {
"title": "Mô tả" "title": "Mô tả"
}, },
"fields": { "fields": {
"title": "Metadata", "title": "Metadata",
"total": "{{count}} trường", "total": "{{count}} mục",
"total_plural": "{{count}} trường" "total_plural": "{{count}} mục"
}, },
"visibility": { "visibility": {
"title": "Dạng tút", "title": "Kiểu tút mặc định",
"options": { "options": {
"public": "Công khai", "public": "Công khai",
"unlisted": "Hạn chế", "unlisted": "Hạn chế",
@ -126,19 +126,19 @@
} }
}, },
"sensitive": { "sensitive": {
"title": ăng nội dung nhạy cảm" "title": ây là tài khoản NSFW"
}, },
"lock": { "lock": {
"title": "Đây là tài khoản riêng tư", "title": "Đây là tài khoản riêng tư",
"description": "Tự bạn sẽ phê duyệt người theo dõi" "description": "Tự bạn sẽ phê duyệt người theo dõi"
}, },
"bot": { "bot": {
"title": "Tài khoản bot", "title": "Đây là tài khoản Bot",
"description": "Tài khoản này tự động thực hiện các hành động và không được quản lý bởi người thật" "description": "Tài khoản này tự động thực hiện các hành động và không được quản lý bởi người thật"
} }
}, },
"fields": { "fields": {
"group": "Nhóm {{index}}", "group": "Mục {{index}}",
"label": "Nhãn", "label": "Nhãn",
"content": "Nội dung" "content": "Nội dung"
} }
@ -250,13 +250,13 @@
"heading": "Liên hệ tooot" "heading": "Liên hệ tooot"
}, },
"analytics": { "analytics": {
"heading": "Đóng góp ý kiến", "heading": "Thu thập dữ liệu",
"description": "Chỉ thu thập thông tin không liên quan người dùng" "description": "Giúp cải thiện chất lượng app"
}, },
"version": "Phiên bản {{version}}" "version": "Phiên bản {{version}}"
}, },
"switch": { "switch": {
"existing": "Chọn từ màn hình đăng nhập", "existing": "Đã đăng nhập trước đó",
"new": "Đăng nhập máy chủ" "new": "Đăng nhập máy chủ"
} }
}, },
@ -283,11 +283,11 @@
}, },
"search": { "search": {
"header": { "header": {
"prefix": "Đang tìm...", "prefix": "Tìm kiếm",
"placeholder": "về..." "placeholder": "về..."
}, },
"empty": { "empty": {
"general": "Nhập từ khóa <bold>$t(screenTabs:shared.search.sections.accounts)</bold>、<bold>$t(screenTabs:shared.search.sections.hashtags)</bold> hoặc<bold>$t(screenTabs:shared.search.sections.statuses)</bold>", "general": "Tìm <bold>$t(screenTabs:shared.search.sections.accounts)</bold>, <bold>$t(screenTabs:shared.search.sections.hashtags)</bold> hoặc <bold>$t(screenTabs:shared.search.sections.statuses)</bold><bold>",
"advanced": { "advanced": {
"header": "Tìm kiếm nâng cao", "header": "Tìm kiếm nâng cao",
"example": { "example": {
@ -310,12 +310,12 @@
}, },
"users": { "users": {
"accounts": { "accounts": {
"following": "Đang theo dõi {{count}}", "following": "{{count}} Theo dõi",
"followers": "{{count}} người theo dõi" "followers": "{{count}} người theo dõi"
}, },
"statuses": { "statuses": {
"reblogged_by": "{{count}} người chia sẻ", "reblogged_by": "{{count}} chia sẻ",
"favourited_by": "{{count}} người thích" "favourited_by": "{{count}} thích"
} }
} }
} }

View File

@ -240,6 +240,9 @@
"cancel": "$t(common:buttons.cancel)" "cancel": "$t(common:buttons.cancel)"
} }
}, },
"feedback": {
"heading": "功能建议"
},
"support": { "support": {
"heading": "赞助 tooot 开发" "heading": "赞助 tooot 开发"
}, },

View File

@ -11,7 +11,7 @@ import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import { getInstanceActive } from '@utils/slices/instancesSlice' import { getInstanceActive } from '@utils/slices/instancesSlice'
import { isCandidate, isDevelopment } from '@utils/checkEnvironment' import { isDevelopment, isRelease } from '@utils/checkEnvironment'
const SettingsTooot: React.FC = () => { const SettingsTooot: React.FC = () => {
const instanceActive = useSelector(getInstanceActive) const instanceActive = useSelector(getInstanceActive)
@ -21,6 +21,21 @@ const SettingsTooot: React.FC = () => {
return ( return (
<MenuContainer> <MenuContainer>
<MenuRow
title={t('me.settings.feedback.heading')}
content={
<Icon
name='MessageSquare'
size={StyleConstants.Font.Size.M}
color={theme.secondary}
/>
}
iconBack='ChevronRight'
onPress={() => {
analytics('settings_feedback_press')
Linking.openURL('https://feedback.tooot.app/')
}}
/>
<MenuRow <MenuRow
title={t('me.settings.support.heading')} title={t('me.settings.support.heading')}
content={ content={
@ -36,7 +51,7 @@ const SettingsTooot: React.FC = () => {
Linking.openURL('https://www.buymeacoffee.com/xmflsct') Linking.openURL('https://www.buymeacoffee.com/xmflsct')
}} }}
/> />
{isDevelopment || isCandidate ? ( {isDevelopment || isRelease ? (
<MenuRow <MenuRow
title={t('me.settings.review.heading')} title={t('me.settings.review.heading')}
content={ content={