diff options
author | Hailey <me@haileyok.com> | 2024-04-04 21:19:15 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-04 21:19:15 -0700 |
commit | 0433f8ad68c6778d79d97b35f26ca03ffa9b0db9 (patch) | |
tree | 30cb46a2ece7d23c31dafa6461c360242cfed411 | |
parent | 101d1589bfdc12e38284b546e57a8ec5f0ee140d (diff) | |
download | voidsky-0433f8ad68c6778d79d97b35f26ca03ffa9b0db9.tar.zst |
migrate to `expo-clipboard` (#3419)
* replace package * replace usages
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | src/lib/sharing.ts | 4 | ||||
-rw-r--r-- | src/view/com/modals/AddAppPasswords.tsx | 25 | ||||
-rw-r--r-- | src/view/com/modals/ChangeHandle.tsx | 43 | ||||
-rw-r--r-- | src/view/com/modals/InviteCodes.tsx | 39 | ||||
-rw-r--r-- | src/view/com/util/forms/PostDropdownBtn.tsx | 4 | ||||
-rw-r--r-- | src/view/screens/Settings/index.tsx | 4 | ||||
-rw-r--r-- | yarn.lock | 10 |
8 files changed, 66 insertions, 65 deletions
diff --git a/package.json b/package.json index 90afe449e..e75488458 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,6 @@ "@miblanchard/react-native-slider": "^2.3.1", "@radix-ui/react-dropdown-menu": "^2.0.6", "@react-native-async-storage/async-storage": "1.21.0", - "@react-native-clipboard/clipboard": "^1.10.0", "@react-native-masked-view/masked-view": "0.3.0", "@react-native-menu/menu": "^0.8.0", "@react-native-picker/picker": "2.6.1", @@ -110,6 +109,7 @@ "expo-application": "~5.8.3", "expo-build-properties": "^0.11.1", "expo-camera": "~14.0.4", + "expo-clipboard": "^5.0.1", "expo-constants": "~15.4.5", "expo-dev-client": "~3.3.8", "expo-device": "~5.9.3", diff --git a/src/lib/sharing.ts b/src/lib/sharing.ts index c50a2734a..b59e3f994 100644 --- a/src/lib/sharing.ts +++ b/src/lib/sharing.ts @@ -1,6 +1,6 @@ import {Share} from 'react-native' // import * as Sharing from 'expo-sharing' -import Clipboard from '@react-native-clipboard/clipboard' +import {setStringAsync} from 'expo-clipboard' import {isAndroid, isIOS} from 'platform/detection' import * as Toast from '#/view/com/util/Toast' @@ -19,7 +19,7 @@ export async function shareUrl(url: string) { } else { // React Native Share is not supported by web. Web Share API // has increasing but not full support, so default to clipboard - Clipboard.setString(url) + setStringAsync(url) Toast.show('Copied to clipboard') } } diff --git a/src/view/com/modals/AddAppPasswords.tsx b/src/view/com/modals/AddAppPasswords.tsx index a8913dd54..e6f424ed0 100644 --- a/src/view/com/modals/AddAppPasswords.tsx +++ b/src/view/com/modals/AddAppPasswords.tsx @@ -1,24 +1,25 @@ import React, {useState} from 'react' -import {StyleSheet, TextInput, View, TouchableOpacity} from 'react-native' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {s} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {isNative} from 'platform/detection' +import {StyleSheet, TextInput, TouchableOpacity, View} from 'react-native' +import {setStringAsync} from 'expo-clipboard' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' -import Clipboard from '@react-native-clipboard/clipboard' -import * as Toast from '../util/Toast' -import {logger} from '#/logger' -import {Trans, msg} from '@lingui/macro' +import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' + +import {logger} from '#/logger' import {useModalControls} from '#/state/modals' import { - useAppPasswordsQuery, useAppPasswordCreateMutation, + useAppPasswordsQuery, } from '#/state/queries/app-passwords' +import {usePalette} from 'lib/hooks/usePalette' +import {s} from 'lib/styles' +import {isNative} from 'platform/detection' +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' export const snapPoints = ['70%'] @@ -72,7 +73,7 @@ export function Component({}: {}) { const onCopy = React.useCallback(() => { if (appPassword) { - Clipboard.setString(appPassword) + setStringAsync(appPassword) Toast.show(_(msg`Copied to clipboard`)) setWasCopied(true) } diff --git a/src/view/com/modals/ChangeHandle.tsx b/src/view/com/modals/ChangeHandle.tsx index f04bdb0e4..125da44be 100644 --- a/src/view/com/modals/ChangeHandle.tsx +++ b/src/view/com/modals/ChangeHandle.tsx @@ -1,37 +1,38 @@ import React, {useState} from 'react' -import Clipboard from '@react-native-clipboard/clipboard' -import {ComAtprotoServerDescribeServer} from '@atproto/api' -import * as Toast from '../util/Toast' import { ActivityIndicator, StyleSheet, TouchableOpacity, View, } from 'react-native' +import {setStringAsync} from 'expo-clipboard' +import {ComAtprotoServerDescribeServer} from '@atproto/api' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {ScrollView, TextInput} from './util' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {SelectableBtn} from '../util/forms/SelectableBtn' -import {ErrorMessage} from '../util/error/ErrorMessage' -import {s} from 'lib/styles' -import {createFullHandle, makeValidHandle} from 'lib/strings/handles' -import {usePalette} from 'lib/hooks/usePalette' -import {useTheme} from 'lib/ThemeContext' -import {useAnalytics} from 'lib/analytics/analytics' -import {cleanError} from 'lib/strings/errors' -import {logger} from '#/logger' -import {Trans, msg} from '@lingui/macro' +import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' + +import {logger} from '#/logger' import {useModalControls} from '#/state/modals' +import {useFetchDid, useUpdateHandleMutation} from '#/state/queries/handle' import {useServiceQuery} from '#/state/queries/service' -import {useUpdateHandleMutation, useFetchDid} from '#/state/queries/handle' import { + getAgent, + SessionAccount, useSession, useSessionApi, - SessionAccount, - getAgent, } from '#/state/session' +import {useAnalytics} from 'lib/analytics/analytics' +import {usePalette} from 'lib/hooks/usePalette' +import {cleanError} from 'lib/strings/errors' +import {createFullHandle, makeValidHandle} from 'lib/strings/handles' +import {s} from 'lib/styles' +import {useTheme} from 'lib/ThemeContext' +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Button} from '../util/forms/Button' +import {SelectableBtn} from '../util/forms/SelectableBtn' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {ScrollView, TextInput} from './util' export const snapPoints = ['100%'] @@ -321,9 +322,7 @@ function CustomHandleForm({ // events // = const onPressCopy = React.useCallback(() => { - Clipboard.setString( - isDNSForm ? `did=${currentAccount.did}` : currentAccount.did, - ) + setStringAsync(isDNSForm ? `did=${currentAccount.did}` : currentAccount.did) Toast.show(_(msg`Copied to clipboard`)) }, [currentAccount, isDNSForm, _]) const onChangeHandle = React.useCallback( diff --git a/src/view/com/modals/InviteCodes.tsx b/src/view/com/modals/InviteCodes.tsx index c0318df01..f8cebec3f 100644 --- a/src/view/com/modals/InviteCodes.tsx +++ b/src/view/com/modals/InviteCodes.tsx @@ -1,36 +1,37 @@ import React from 'react' import { + ActivityIndicator, StyleSheet, TouchableOpacity, View, - ActivityIndicator, } from 'react-native' +import {setStringAsync} from 'expo-clipboard' import {ComAtprotoServerDefs} from '@atproto/api' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' -import Clipboard from '@react-native-clipboard/clipboard' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import * as Toast from '../util/Toast' -import {ScrollView} from './util' -import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {Trans, msg} from '@lingui/macro' -import {cleanError} from 'lib/strings/errors' -import {useModalControls} from '#/state/modals' -import {useInvitesState, useInvitesAPI} from '#/state/invites' -import {UserInfoText} from '../util/UserInfoText' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' + import {makeProfileLink} from '#/lib/routes/links' -import {Link} from '../util/Link' -import {ErrorMessage} from '../util/error/ErrorMessage' +import {useInvitesAPI, useInvitesState} from '#/state/invites' +import {useModalControls} from '#/state/modals' import { - useInviteCodesQuery, InviteCodesQueryResponse, + useInviteCodesQuery, } from '#/state/queries/invites' -import {useLingui} from '@lingui/react' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {cleanError} from 'lib/strings/errors' +import {isWeb} from 'platform/detection' +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Button} from '../util/forms/Button' +import {Link} from '../util/Link' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {UserInfoText} from '../util/UserInfoText' +import {ScrollView} from './util' export const snapPoints = ['70%'] @@ -148,7 +149,7 @@ function InviteCode({ const uses = invite.uses const onPress = React.useCallback(() => { - Clipboard.setString(invite.code) + setStringAsync(invite.code) Toast.show(_(msg`Copied to clipboard`)) setInviteCopied(invite.code) }, [setInviteCopied, invite, _]) diff --git a/src/view/com/util/forms/PostDropdownBtn.tsx b/src/view/com/util/forms/PostDropdownBtn.tsx index d04672c63..959e0f692 100644 --- a/src/view/com/util/forms/PostDropdownBtn.tsx +++ b/src/view/com/util/forms/PostDropdownBtn.tsx @@ -1,5 +1,6 @@ import React, {memo} from 'react' import {Pressable, PressableProps, StyleProp, ViewStyle} from 'react-native' +import {setStringAsync} from 'expo-clipboard' import { AppBskyActorDefs, AppBskyFeedPost, @@ -9,7 +10,6 @@ import { import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' -import Clipboard from '@react-native-clipboard/clipboard' import {useNavigation} from '@react-navigation/native' import {makeProfileLink} from '#/lib/routes/links' @@ -154,7 +154,7 @@ let PostDropdownBtn = ({ const onCopyPostText = React.useCallback(() => { const str = richTextToString(richText, true) - Clipboard.setString(str) + setStringAsync(str) Toast.show(_(msg`Copied to clipboard`)) }, [_, richText]) diff --git a/src/view/screens/Settings/index.tsx b/src/view/screens/Settings/index.tsx index 790ce5ee9..830a73ff2 100644 --- a/src/view/screens/Settings/index.tsx +++ b/src/view/screens/Settings/index.tsx @@ -10,13 +10,13 @@ import { View, ViewStyle, } from 'react-native' +import {setStringAsync} from 'expo-clipboard' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import Clipboard from '@react-native-clipboard/clipboard' import {useFocusEffect, useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' @@ -245,7 +245,7 @@ export function SettingsScreen({}: Props) { }, [onboardingDispatch, _]) const onPressBuildInfo = React.useCallback(() => { - Clipboard.setString( + setStringAsync( `Build version: ${AppInfo.appVersion}; Platform: ${Platform.OS}`, ) Toast.show(_(msg`Copied build version to clipboard`)) diff --git a/yarn.lock b/yarn.lock index 7e2c5be07..441da4502 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4857,11 +4857,6 @@ dependencies: merge-options "^3.0.4" -"@react-native-clipboard/clipboard@^1.10.0": - version "1.11.2" - resolved "https://registry.yarnpkg.com/@react-native-clipboard/clipboard/-/clipboard-1.11.2.tgz#e826d0336b34e67294aaffa6878308900bc7d197" - integrity sha512-bHyZVW62TuleiZsXNHS1Pv16fWc0fh8O9WvBzl4h2fykqZRW9a+Pv/RGTH56E3X2PqzHP38K5go8zmCZUoIsoQ== - "@react-native-community/cli-clean@12.3.0": version "12.3.0" resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.0.tgz#667b32daa58b4d11d5b5ab9eb0a2e216d500c90b" @@ -11777,6 +11772,11 @@ expo-camera@~14.0.4: dependencies: invariant "^2.2.4" +expo-clipboard@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/expo-clipboard/-/expo-clipboard-5.0.1.tgz#a62a021a9444740d180d60f915cca8242a323716" + integrity sha512-JH853QJPr5W3h87If3aDTnMK+ESSIrwzU2TdfZrqZttVDY2pMIf/w37mVHHNYodXM4ATHXadtOkjKbAa0DWwUg== + expo-constants@^13.0.2: version "13.2.4" resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-13.2.4.tgz#eab4a553f074b2c60ad7a158d3b82e3484a94606" |