diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 5e6575f2..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "javascript.inlayHints.functionLikeReturnTypes.enabled": false -} \ No newline at end of file diff --git a/demo/screenshots/Component-Instance.png b/demo/screenshots/Component-Instance.png new file mode 100644 index 00000000..8b31c0a9 Binary files /dev/null and b/demo/screenshots/Component-Instance.png differ diff --git a/demo/screenshots/Component-MediaSelector.png b/demo/screenshots/Component-MediaSelector.png new file mode 100644 index 00000000..c47692d8 Binary files /dev/null and b/demo/screenshots/Component-MediaSelector.png differ diff --git a/demo/screenshots/Logout-Confirmation.png b/demo/screenshots/Logout-Confirmation.png new file mode 100644 index 00000000..330d6b04 Binary files /dev/null and b/demo/screenshots/Logout-Confirmation.png differ diff --git a/demo/screenshots/Screen-AccountSelection.png b/demo/screenshots/Screen-AccountSelection.png new file mode 100644 index 00000000..14509119 Binary files /dev/null and b/demo/screenshots/Screen-AccountSelection.png differ diff --git a/demo/screenshots/Tab-Local.png b/demo/screenshots/Tab-Local.png new file mode 100644 index 00000000..2ec6d60a Binary files /dev/null and b/demo/screenshots/Tab-Local.png differ diff --git a/demo/screenshots/Tab-Me-List-Edit.png b/demo/screenshots/Tab-Me-List-Edit.png new file mode 100644 index 00000000..02b20608 Binary files /dev/null and b/demo/screenshots/Tab-Me-List-Edit.png differ diff --git a/demo/screenshots/Tab-Me-ListAccounts_Empty.png b/demo/screenshots/Tab-Me-ListAccounts_Empty.png new file mode 100644 index 00000000..024c9e44 Binary files /dev/null and b/demo/screenshots/Tab-Me-ListAccounts_Empty.png differ diff --git a/demo/screenshots/Tab-Me-ListAccounts_Error.png b/demo/screenshots/Tab-Me-ListAccounts_Error.png new file mode 100644 index 00000000..b668b6a0 Binary files /dev/null and b/demo/screenshots/Tab-Me-ListAccounts_Error.png differ diff --git a/demo/screenshots/Tab-Me-List_Delete.png b/demo/screenshots/Tab-Me-List_Delete.png new file mode 100644 index 00000000..324421fd Binary files /dev/null and b/demo/screenshots/Tab-Me-List_Delete.png differ diff --git a/demo/screenshots/Tab-Me-List_Menu.png b/demo/screenshots/Tab-Me-List_Menu.png new file mode 100644 index 00000000..7c4706b0 Binary files /dev/null and b/demo/screenshots/Tab-Me-List_Menu.png differ diff --git a/demo/screenshots/Tab-Me-Profile-Fields.png b/demo/screenshots/Tab-Me-Profile-Fields.png new file mode 100644 index 00000000..d4bf5060 Binary files /dev/null and b/demo/screenshots/Tab-Me-Profile-Fields.png differ diff --git a/demo/screenshots/Tab-Me-Profile.png b/demo/screenshots/Tab-Me-Profile.png new file mode 100644 index 00000000..9690c9d8 Binary files /dev/null and b/demo/screenshots/Tab-Me-Profile.png differ diff --git a/demo/screenshots/Tab-Me-Profile_Feedback.png b/demo/screenshots/Tab-Me-Profile_Feedback.png new file mode 100644 index 00000000..1d965ac4 Binary files /dev/null and b/demo/screenshots/Tab-Me-Profile_Feedback.png differ diff --git a/demo/screenshots/Tab-Me-Push_Bottom.png b/demo/screenshots/Tab-Me-Push_Bottom.png new file mode 100644 index 00000000..de8166d3 Binary files /dev/null and b/demo/screenshots/Tab-Me-Push_Bottom.png differ diff --git a/demo/screenshots/Tab-Me-Push_MissingServerKey.png b/demo/screenshots/Tab-Me-Push_MissingServerKey.png new file mode 100644 index 00000000..60cea2ff Binary files /dev/null and b/demo/screenshots/Tab-Me-Push_MissingServerKey.png differ diff --git a/demo/screenshots/Tab-Me-Push_NotAvailable.png b/demo/screenshots/Tab-Me-Push_NotAvailable.png new file mode 100644 index 00000000..72a8e2f9 Binary files /dev/null and b/demo/screenshots/Tab-Me-Push_NotAvailable.png differ diff --git a/demo/screenshots/Tab-Me-Push_ReEnable.png b/demo/screenshots/Tab-Me-Push_ReEnable.png new file mode 100644 index 00000000..b3b69953 Binary files /dev/null and b/demo/screenshots/Tab-Me-Push_ReEnable.png differ diff --git a/demo/screenshots/Tab-Me-Push_Top.png b/demo/screenshots/Tab-Me-Push_Top.png new file mode 100644 index 00000000..a62fb995 Binary files /dev/null and b/demo/screenshots/Tab-Me-Push_Top.png differ diff --git a/demo/screenshots/Tab-Me-Settings-Appearance.png b/demo/screenshots/Tab-Me-Settings-Appearance.png new file mode 100644 index 00000000..c6723283 Binary files /dev/null and b/demo/screenshots/Tab-Me-Settings-Appearance.png differ diff --git a/demo/screenshots/Tab-Me-Settings-DarkTheme.png b/demo/screenshots/Tab-Me-Settings-DarkTheme.png new file mode 100644 index 00000000..e0f968f9 Binary files /dev/null and b/demo/screenshots/Tab-Me-Settings-DarkTheme.png differ diff --git a/demo/screenshots/Tab-Me-Settings-FontSize.png b/demo/screenshots/Tab-Me-Settings-FontSize.png new file mode 100644 index 00000000..af70d0c9 Binary files /dev/null and b/demo/screenshots/Tab-Me-Settings-FontSize.png differ diff --git a/demo/screenshots/Tab-Me-Settings-OpeningLink.png b/demo/screenshots/Tab-Me-Settings-OpeningLink.png new file mode 100644 index 00000000..d820a1be Binary files /dev/null and b/demo/screenshots/Tab-Me-Settings-OpeningLink.png differ diff --git a/demo/screenshots/Tab-Me-Settings.png b/demo/screenshots/Tab-Me-Settings.png new file mode 100644 index 00000000..efdd60fc Binary files /dev/null and b/demo/screenshots/Tab-Me-Settings.png differ diff --git a/demo/screenshots/Tab-Me-Switch.png b/demo/screenshots/Tab-Me-Switch.png new file mode 100644 index 00000000..0b1129e9 Binary files /dev/null and b/demo/screenshots/Tab-Me-Switch.png differ diff --git a/demo/screenshots/Tab-Me.png b/demo/screenshots/Tab-Me.png new file mode 100644 index 00000000..a601e90c Binary files /dev/null and b/demo/screenshots/Tab-Me.png differ diff --git a/demo/screenshots/Tab-Notifications-Filter.png b/demo/screenshots/Tab-Notifications-Filter.png new file mode 100644 index 00000000..e2f5daaf Binary files /dev/null and b/demo/screenshots/Tab-Notifications-Filter.png differ diff --git a/demo/screenshots/Tab-Notifications.png b/demo/screenshots/Tab-Notifications.png new file mode 100644 index 00000000..53707170 Binary files /dev/null and b/demo/screenshots/Tab-Notifications.png differ diff --git a/demo/screenshots/Tab-Public.png b/demo/screenshots/Tab-Public.png new file mode 100644 index 00000000..e6e3a0f0 Binary files /dev/null and b/demo/screenshots/Tab-Public.png differ diff --git a/demo/screenshots/Tab-Shared-Account.png b/demo/screenshots/Tab-Shared-Account.png new file mode 100644 index 00000000..a39301bf Binary files /dev/null and b/demo/screenshots/Tab-Shared-Account.png differ diff --git a/demo/screenshots/Tab-Shared-AccountInLists.png b/demo/screenshots/Tab-Shared-AccountInLists.png new file mode 100644 index 00000000..623915f6 Binary files /dev/null and b/demo/screenshots/Tab-Shared-AccountInLists.png differ diff --git a/demo/screenshots/Tab-Shared-Attachments.png b/demo/screenshots/Tab-Shared-Attachments.png new file mode 100644 index 00000000..cbc46c80 Binary files /dev/null and b/demo/screenshots/Tab-Shared-Attachments.png differ diff --git a/demo/screenshots/Tab-Shared-Hashtag.png b/demo/screenshots/Tab-Shared-Hashtag.png new file mode 100644 index 00000000..642cac97 Binary files /dev/null and b/demo/screenshots/Tab-Shared-Hashtag.png differ diff --git a/demo/screenshots/Tab-Shared-History.png b/demo/screenshots/Tab-Shared-History.png new file mode 100644 index 00000000..ef9a5ab2 Binary files /dev/null and b/demo/screenshots/Tab-Shared-History.png differ diff --git a/demo/screenshots/Tab-Shared-Search.png b/demo/screenshots/Tab-Shared-Search.png new file mode 100644 index 00000000..9fd18b89 Binary files /dev/null and b/demo/screenshots/Tab-Shared-Search.png differ diff --git a/demo/screenshots/Tab-Shared-Toot.png b/demo/screenshots/Tab-Shared-Toot.png new file mode 100644 index 00000000..148478ea Binary files /dev/null and b/demo/screenshots/Tab-Shared-Toot.png differ diff --git a/demo/statuses.ts b/demo/statuses.ts index 63d5e47a..1da8785c 100644 --- a/demo/statuses.ts +++ b/demo/statuses.ts @@ -1,6 +1,7 @@ -const demoStatuses = [ +const demoStatus: Mastodon.Status[] = [ { id: '1', + uri: 'https://example.com', created_at: new Date().toISOString(), sensitive: false, visibility: 'public', @@ -13,7 +14,6 @@ const demoStatuses = [ bookmarked: false, content: '

Would you like to try out this simple, beautiful and open-source mobile app for Mastodon? 😊

', - reblog: null, application: { name: 'tooot', website: 'https://tooot.app' @@ -23,19 +23,31 @@ const demoStatuses = [ username: 'tooot📱', acct: 'tooot@xmflsct.com', display_name: 'tooot📱', - avatar_static: - 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4' + avatar: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + avatar_static: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + url: '', + header: '', + header_static: '', + locked: false, + discoverable: false, + created_at: new Date().toISOString(), + last_status_at: new Date().toISOString(), + statuses_count: 1, + followers_count: 1, + following_count: 1, + fields: [], + bot: false }, media_attachments: [], poll: { id: '1', - expires_at: new Date().setDate(new Date().getDate() + 5), + expires_at: new Date().setDate(new Date().getDate() + 5).toString(), expired: false, multiple: false, votes_count: 10, - voters_count: null, + voters_count: 2, voted: false, - own_votes: null, + own_votes: undefined, options: [ { title: 'I would love to!', @@ -48,11 +60,15 @@ const demoStatuses = [ ], emojis: [] }, - mentions: [] + mentions: [], + tags: [], + emojis: [], + pinned: false }, { id: '2', - created_at: new Date().setMinutes(new Date().getMinutes() - 2), + uri: 'https://example.com', + created_at: new Date().setMinutes(new Date().getMinutes() - 2).toString(), sensitive: false, spoiler_text: '', visibility: 'public', @@ -65,18 +81,26 @@ const demoStatuses = [ bookmarked: false, content: '

Mastodon is a free and open-source self-hosted social networking service. It allows anyone to host their own server node in the network, and its various separately operated user bases are federated across many different servers. These nodes are referred to as "instances" by Mastodon users.

', - reblog: null, - application: { - name: 'Web', - website: null - }, + application: { name: 'Web' }, account: { id: '1000', username: 'Mastodon', acct: 'mastodon', display_name: 'Mastodon', - avatar_static: - 'https://mastodon.social/apple-touch-icon.png' + avatar: 'https://mastodon.social/apple-touch-icon.png', + avatar_static: 'https://mastodon.social/apple-touch-icon.png', + url: '', + header: '', + header_static: '', + locked: false, + discoverable: false, + created_at: new Date().toISOString(), + last_status_at: new Date().toISOString(), + statuses_count: 1, + followers_count: 1, + following_count: 1, + fields: [], + bot: false }, media_attachments: [], card: { @@ -85,18 +109,31 @@ const demoStatuses = [ description: 'Mastodon is an open source decentralized social network - by the people for the people. Join the federation and take back control of your social media!', type: 'link', - image: - 'https://mastodon.social/apple-touch-icon.png' + image: 'https://mastodon.social/apple-touch-icon.png', + author_name: '', + author_url: '', + provider_name: '', + provider_url: '', + html: '

', + width: 100, + height: 100, + embed_url: 'https://example.com', + blurhash: '' }, - mentions: [] + mentions: [], + tags: [], + emojis: [], + pinned: false }, { id: '3', - created_at: '2021-01-24T09:50:00.901Z', + uri: '', + created_at: new Date().setHours(new Date().getHours() - 1).toString(), + sensitive: false, spoiler_text: '', visibility: 'public', replies_count: 2, - reblogs_count: null, + reblogs_count: 1, favourites_count: 3, favourited: false, reblogged: false, @@ -104,24 +141,38 @@ const demoStatuses = [ bookmarked: true, content: '

These servers are connected as a federated social network, allowing users from different servers to interact with each other seamlessly. Once a Mastodon server knows another Mastodon server, it "federates" with the other Mastodon server. Mastodon is a part of the wider Fediverse, allowing its users to also interact with users on different open platforms that support the same protocol, such as PeerTube and Friendica.

', - reblog: null, - application: { - name: 'Web', - website: null - }, + application: { name: 'Web' }, account: { id: '1001', username: 'Fediverse', acct: 'fediverse', display_name: 'Fediverse', + avatar: + 'https://e7.pngegg.com/pngimages/667/514/png-clipart-mastodon-fediverse-social-media-free-software-logo-social-media-blue-text.png', avatar_static: - 'https://e7.pngegg.com/pngimages/667/514/png-clipart-mastodon-fediverse-social-media-free-software-logo-social-media-blue-text.png' + 'https://e7.pngegg.com/pngimages/667/514/png-clipart-mastodon-fediverse-social-media-free-software-logo-social-media-blue-text.png', + url: '', + header: '', + header_static: '', + locked: false, + discoverable: false, + created_at: new Date().toISOString(), + last_status_at: new Date().toISOString(), + statuses_count: 1, + followers_count: 1, + following_count: 1, + fields: [], + bot: false }, media_attachments: [], - mentions: [] + mentions: [], + tags: [], + emojis: [], + pinned: false }, { id: '4', + uri: 'https://example.com', created_at: '2021-01-24T08:50:00.901Z', sensitive: false, visibility: 'public', @@ -134,7 +185,6 @@ const demoStatuses = [ bookmarked: false, content: '

tooot is an open source, simple mobile client for Mastodon. Focusing on your connections while being able to explore the Fediverse.

', - reblog: null, application: { name: 'tooot', website: 'https://tooot.app' @@ -144,14 +194,30 @@ const demoStatuses = [ username: 'tooot📱', acct: 'tooot@xmflsct.com', display_name: 'tooot📱', - avatar_static: - 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4' + avatar: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + avatar_static: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + url: '', + header: '', + header_static: '', + locked: false, + discoverable: false, + created_at: new Date().toISOString(), + last_status_at: new Date().toISOString(), + statuses_count: 1, + followers_count: 1, + following_count: 1, + fields: [], + bot: false }, media_attachments: [], - mentions: [] + mentions: [], + tags: [], + emojis: [], + pinned: false }, { id: '5', + uri: 'https://example.com', created_at: '2021-01-24T07:50:00.901Z', sensitive: false, visibility: 'public', @@ -164,7 +230,6 @@ const demoStatuses = [ bookmarked: false, content: '

- tooot supports multiple accounts
- tooot supports browsing external instance
- tooot aims to support multiple languages

', - reblog: null, application: { name: 'tooot', website: 'https://tooot.app' @@ -174,12 +239,27 @@ const demoStatuses = [ username: 'tooot📱', acct: 'tooot@xmflsct.com', display_name: 'tooot📱', - avatar_static: - 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4' + avatar: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + avatar_static: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + url: '', + header: '', + header_static: '', + locked: false, + discoverable: false, + created_at: new Date().toISOString(), + last_status_at: new Date().toISOString(), + statuses_count: 1, + followers_count: 1, + following_count: 1, + fields: [], + bot: false }, media_attachments: [], - mentions: [] + mentions: [], + tags: [], + emojis: [], + pinned: false } ] -export default demoStatuses +export default demoStatus diff --git a/src/components/Menu/Row.tsx b/src/components/Menu/Row.tsx index 5100745d..b3b8ca6e 100644 --- a/src/components/Menu/Row.tsx +++ b/src/components/Menu/Row.tsx @@ -86,9 +86,10 @@ const MenuRow: React.FC = ({ > {iconFront && ( diff --git a/src/i18n/en/components/instance.json b/src/i18n/en/components/instance.json index f59b012e..18a320d1 100644 --- a/src/i18n/en/components/instance.json +++ b/src/i18n/en/components/instance.json @@ -1,7 +1,7 @@ { "server": { "textInput": { - "placeholder": "Instance' domain" + "placeholder": "Instance's domain" }, "button": "Login", "information": { diff --git a/src/i18n/en/screens/compose.json b/src/i18n/en/screens/compose.json index c4ea0f80..c292e3cc 100644 --- a/src/i18n/en/screens/compose.json +++ b/src/i18n/en/screens/compose.json @@ -1,13 +1,11 @@ { "heading": { "left": { - "button": "Cancel", "alert": { "title": "Cancel editing?", "buttons": { "save": "Save draft", - "delete": "Delete draft", - "cancel": "Cancel" + "delete": "Delete draft" } } }, diff --git a/src/i18n/en/screens/tabs.json b/src/i18n/en/screens/tabs.json index fe32807e..6512b438 100644 --- a/src/i18n/en/screens/tabs.json +++ b/src/i18n/en/screens/tabs.json @@ -4,7 +4,6 @@ "name": "Following" }, "public": { - "name": "", "segments": { "federated": "Federated", "local": "Local", @@ -13,9 +12,6 @@ }, "notifications": { "name": "Notifications" - }, - "me": { - "name": "About me" } }, "common": { @@ -348,7 +344,7 @@ "notInLists": "Other lists" }, "attachments": { - "name": "<0 /><1>\"s media" + "name": "<0 /><1>'s media" }, "hashtag": { "follow": "Follow", diff --git a/src/screens/Compose.tsx b/src/screens/Compose.tsx index 82ed08c6..81334a8e 100644 --- a/src/screens/Compose.tsx +++ b/src/screens/Compose.tsx @@ -206,7 +206,7 @@ const ScreenCompose: React.FC> = ({ () => ( { if (!composeState.dirty) { navigation.goBack() @@ -229,7 +229,7 @@ const ScreenCompose: React.FC> = ({ } }, { - text: t('heading.left.alert.buttons.cancel'), + text: t('common:buttons.cancel'), style: 'cancel' } ]) @@ -342,9 +342,7 @@ const ScreenCompose: React.FC> = ({ ) const headerContent = useMemo(() => { - return `${totalTextCount} / ${maxTootChars}${ - __DEV__ ? ` Dirty: ${composeState.dirty.toString()}` : '' - }` + return `${totalTextCount} / ${maxTootChars}` }, [totalTextCount, maxTootChars, composeState.dirty]) const inputProps: EmojisState['inputProps'] = [ diff --git a/src/screens/Tabs/Me/List/menus.tsx b/src/screens/Tabs/Me/List/menus.tsx index 223a56e1..7217cad2 100644 --- a/src/screens/Tabs/Me/List/menus.tsx +++ b/src/screens/Tabs/Me/List/menus.tsx @@ -32,7 +32,7 @@ export const menuListDelete = ({ key: 'list-delete', onSelect: () => Alert.alert( - i18next.t('screenTabs:me.listDelete.confirm.title', { list: params.title.slice(0, 6) }), + i18next.t('screenTabs:me.listDelete.confirm.title', { list: params.title.slice(0, 20) }), i18next.t('screenTabs:me.listDelete.confirm.message'), [ { diff --git a/src/screens/Tabs/Shared/Account/Information.tsx b/src/screens/Tabs/Shared/Account/Information.tsx index 82b47204..24651ac7 100644 --- a/src/screens/Tabs/Shared/Account/Information.tsx +++ b/src/screens/Tabs/Shared/Account/Information.tsx @@ -28,10 +28,7 @@ const AccountInformation = React.memo( ( - + )} > @@ -41,7 +38,7 @@ const AccountInformation = React.memo( - + diff --git a/src/screens/Tabs/Shared/Account/Information/Account.tsx b/src/screens/Tabs/Shared/Account/Information/Account.tsx index e2062c58..e209e319 100644 --- a/src/screens/Tabs/Shared/Account/Information/Account.tsx +++ b/src/screens/Tabs/Shared/Account/Information/Account.tsx @@ -1,10 +1,7 @@ import Icon from '@components/Icon' import CustomText from '@components/Text' import { useRelationshipQuery } from '@utils/queryHooks/relationship' -import { - getInstanceAccount, - getInstanceUri -} from '@utils/slices/instancesSlice' +import { getInstanceAccount, getInstanceUri } from '@utils/slices/instancesSlice' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import React from 'react' @@ -15,19 +12,12 @@ import { PlaceholderLine } from 'rn-placeholder' export interface Props { account: Mastodon.Account | undefined - localInstance: boolean } -const AccountInformationAccount: React.FC = ({ - account, - localInstance -}) => { +const AccountInformationAccount: React.FC = ({ account }) => { const { t } = useTranslation('screenTabs') const { colors } = useTheme() - const instanceAccount = useSelector( - getInstanceAccount, - (prev, next) => prev?.acct === next?.acct - ) + const instanceAccount = useSelector(getInstanceAccount, (prev, next) => prev?.acct === next?.acct) const instanceUri = useSelector(getInstanceUri) const { data: relationship } = useRelationshipQuery({ @@ -35,6 +25,10 @@ const AccountInformationAccount: React.FC = ({ options: { enabled: account !== undefined } }) + const localInstance = instanceAccount.acct.includes('@') + ? instanceAccount.acct.includes(`@${instanceUri}`) + : true + if (account || (localInstance && instanceAccount)) { return ( = ({ ) : null} @@ -94,7 +88,4 @@ const AccountInformationAccount: React.FC = ({ } } -export default React.memo( - AccountInformationAccount, - (_, next) => next.account === undefined -) +export default AccountInformationAccount diff --git a/src/screens/Tabs/Shared/Account/Information/Avatar.tsx b/src/screens/Tabs/Shared/Account/Information/Avatar.tsx index 76003b07..4f4415b0 100644 --- a/src/screens/Tabs/Shared/Account/Information/Avatar.tsx +++ b/src/screens/Tabs/Shared/Account/Information/Avatar.tsx @@ -5,7 +5,7 @@ import { StackNavigationProp } from '@react-navigation/stack' import { TabLocalStackParamList } from '@utils/navigation/navigators' import { StyleConstants } from '@utils/styles/constants' import React from 'react' -import { Pressable, StyleSheet, View } from 'react-native' +import { Pressable, View } from 'react-native' export interface Props { account: Mastodon.Account | undefined @@ -13,24 +13,24 @@ export interface Props { edit?: boolean } -const AccountInformationAvatar: React.FC = ({ - account, - myInfo, - edit -}) => { - const navigation = - useNavigation>() +const AccountInformationAvatar: React.FC = ({ account, myInfo, edit }) => { + const navigation = useNavigation>() return ( { myInfo && account && navigation.push('Tab-Shared-Account', { account }) }} - style={styles.base} + style={{ + borderRadius: 8, + overflow: 'hidden', + width: StyleConstants.Avatar.L, + height: StyleConstants.Avatar.L + }} > {edit ? ( @@ -51,14 +51,4 @@ const AccountInformationAvatar: React.FC = ({ ) } -const styles = StyleSheet.create({ - base: { - borderRadius: 8, - overflow: 'hidden', - width: StyleConstants.Avatar.L, - height: StyleConstants.Avatar.L - }, - image: { flex: 1 } -}) - export default AccountInformationAvatar diff --git a/src/screens/Tabs/Shared/Account/Information/Created.tsx b/src/screens/Tabs/Shared/Account/Information/Created.tsx index 5bf688d7..4d4852d8 100644 --- a/src/screens/Tabs/Shared/Account/Information/Created.tsx +++ b/src/screens/Tabs/Shared/Account/Information/Created.tsx @@ -12,59 +12,53 @@ export interface Props { hidden?: boolean } -const AccountInformationCreated = React.memo( - ({ account, hidden = false }: Props) => { - if (hidden) { - return null - } +const AccountInformationCreated: React.FC = ({ account, hidden = false }) => { + if (hidden) { + return null + } - const { i18n } = useTranslation() - const { colors } = useTheme() - const { t } = useTranslation('screenTabs') + const { i18n } = useTranslation() + const { colors } = useTheme() + const { t } = useTranslation('screenTabs') - if (account) { - return ( - - - - {t('shared.account.created_at', { - date: new Date(account.created_at || '').toLocaleDateString( - i18n.language, - { - year: 'numeric', - month: 'long', - day: 'numeric' - } - ) - })} - - - ) - } else { - return ( - + - ) - } - }, - (_, next) => next.account === undefined -) + + {t('shared.account.created_at', { + date: new Date(account.created_at || '').toLocaleDateString(i18n.language, { + year: 'numeric', + month: 'long', + day: 'numeric' + }) + })} + + + ) + } else { + return ( + + ) + } +} export default AccountInformationCreated diff --git a/src/screens/Tabs/Shared/Account/Information/Fields.tsx b/src/screens/Tabs/Shared/Account/Information/Fields.tsx index db0b12e8..ea55aa9a 100644 --- a/src/screens/Tabs/Shared/Account/Information/Fields.tsx +++ b/src/screens/Tabs/Shared/Account/Information/Fields.tsx @@ -10,53 +10,50 @@ export interface Props { myInfo?: boolean } -const AccountInformationFields = React.memo( - ({ account, myInfo }: Props) => { - if (account?.suspended || myInfo || !account?.fields || account.fields.length === 0) { - return null - } +const AccountInformationFields: React.FC = ({ account, myInfo }) => { + if (account?.suspended || myInfo || !account?.fields || account.fields.length === 0) { + return null + } - const { colors } = useTheme() + const { colors } = useTheme() - return ( - - {account.fields.map((field, index) => ( - - - + {account.fields.map((field, index) => ( + + + + {field.verified_at ? ( + - {field.verified_at ? ( - - ) : null} - - - - + ) : null} - ))} - - ) - }, - (_, next) => next.account === undefined -) + + + + + ))} + + ) +} const styles = StyleSheet.create({ fields: { diff --git a/src/screens/Tabs/Shared/Account/Information/Name.tsx b/src/screens/Tabs/Shared/Account/Information/Name.tsx index 9dd8005c..0b6b51ba 100644 --- a/src/screens/Tabs/Shared/Account/Information/Name.tsx +++ b/src/screens/Tabs/Shared/Account/Information/Name.tsx @@ -66,4 +66,4 @@ const AccountInformationName: React.FC = ({ account }) => { ) } -export default React.memo(AccountInformationName, (_, next) => next.account === undefined) +export default AccountInformationName diff --git a/src/screens/Tabs/Shared/Account/Information/Note.tsx b/src/screens/Tabs/Shared/Account/Information/Note.tsx index b1f4eda8..35f507c5 100644 --- a/src/screens/Tabs/Shared/Account/Information/Note.tsx +++ b/src/screens/Tabs/Shared/Account/Information/Note.tsx @@ -1,45 +1,35 @@ import { ParseHTML } from '@components/Parse' import { StyleConstants } from '@utils/styles/constants' -import React, { useState } from 'react' -import { StyleSheet, View } from 'react-native' +import React from 'react' +import { View } from 'react-native' export interface Props { account: Mastodon.Account | undefined myInfo?: boolean } -const AccountInformationNote = React.memo( - ({ account, myInfo }: Props) => { - const [note, setNote] = useState(account?.source?.note) - if ( - account?.suspended || - myInfo || - !account?.note || - account.note.length === 0 || - account.note === '

' - ) { - return null - } - - return ( - - - - ) - }, - (_, next) => next.account === undefined -) - -const styles = StyleSheet.create({ - note: { - marginBottom: StyleConstants.Spacing.L +const AccountInformationNote: React.FC = ({ account, myInfo }) => { + if ( + account?.suspended || + myInfo || + !account?.note || + account.note.length === 0 || + account.note === '

' + ) { + return null } -}) + + return ( + + + + ) +} export default AccountInformationNote diff --git a/src/screens/Tabs/Shared/AccountInLists.tsx b/src/screens/Tabs/Shared/AccountInLists.tsx index 4e7d8041..f92a6c28 100644 --- a/src/screens/Tabs/Shared/AccountInLists.tsx +++ b/src/screens/Tabs/Shared/AccountInLists.tsx @@ -39,7 +39,7 @@ const TabSharedAccountInLists: React.FC< }) }, []) - const listsQuery = useListsQuery({}) + const listsQuery = useListsQuery() const accountInListsQuery = useAccountInListsQuery({ id: account.id }) const sections = [ @@ -48,8 +48,10 @@ const TabSharedAccountInLists: React.FC< id: 'out', title: t('shared.accountInLists.notInLists'), data: - listsQuery.data?.filter( - ({ id }) => accountInListsQuery.data?.filter(d => d.id !== id).length + listsQuery.data?.filter(({ id }) => + accountInListsQuery.data?.length + ? accountInListsQuery.data.filter(d => d.id !== id).length + : true ) || [] } ] diff --git a/src/screens/Tabs/Shared/Search/index.tsx b/src/screens/Tabs/Shared/Search/index.tsx index b080bea2..9c70098b 100644 --- a/src/screens/Tabs/Shared/Search/index.tsx +++ b/src/screens/Tabs/Shared/Search/index.tsx @@ -54,7 +54,11 @@ const TabSharedSearch: React.FC> fontSize: StyleConstants.Font.Size.M, flex: 1, color: colors.primaryDefault, - paddingLeft: StyleConstants.Spacing.XS + marginLeft: StyleConstants.Spacing.XS, + paddingLeft: StyleConstants.Spacing.XS, + paddingVertical: StyleConstants.Spacing.XS, + borderBottomColor: colors.border, + borderBottomWidth: 1 }} autoFocus onChangeText={debounce(