Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

migrate to `expo-clipboard` (#3419)

* replace package

* replace usages

authored by

Hailey and committed by
GitHub
0433f8ad 101d1589

+66 -65
+1 -1
package.json
··· 65 65 "@miblanchard/react-native-slider": "^2.3.1", 66 66 "@radix-ui/react-dropdown-menu": "^2.0.6", 67 67 "@react-native-async-storage/async-storage": "1.21.0", 68 - "@react-native-clipboard/clipboard": "^1.10.0", 69 68 "@react-native-masked-view/masked-view": "0.3.0", 70 69 "@react-native-menu/menu": "^0.8.0", 71 70 "@react-native-picker/picker": "2.6.1", ··· 110 109 "expo-application": "~5.8.3", 111 110 "expo-build-properties": "^0.11.1", 112 111 "expo-camera": "~14.0.4", 112 + "expo-clipboard": "^5.0.1", 113 113 "expo-constants": "~15.4.5", 114 114 "expo-dev-client": "~3.3.8", 115 115 "expo-device": "~5.9.3",
+2 -2
src/lib/sharing.ts
··· 1 1 import {Share} from 'react-native' 2 2 // import * as Sharing from 'expo-sharing' 3 - import Clipboard from '@react-native-clipboard/clipboard' 3 + import {setStringAsync} from 'expo-clipboard' 4 4 5 5 import {isAndroid, isIOS} from 'platform/detection' 6 6 import * as Toast from '#/view/com/util/Toast' ··· 19 19 } else { 20 20 // React Native Share is not supported by web. Web Share API 21 21 // has increasing but not full support, so default to clipboard 22 - Clipboard.setString(url) 22 + setStringAsync(url) 23 23 Toast.show('Copied to clipboard') 24 24 } 25 25 }
+13 -12
src/view/com/modals/AddAppPasswords.tsx
··· 1 1 import React, {useState} from 'react' 2 - import {StyleSheet, TextInput, View, TouchableOpacity} from 'react-native' 3 - import {Text} from '../util/text/Text' 4 - import {Button} from '../util/forms/Button' 5 - import {s} from 'lib/styles' 6 - import {usePalette} from 'lib/hooks/usePalette' 7 - import {isNative} from 'platform/detection' 2 + import {StyleSheet, TextInput, TouchableOpacity, View} from 'react-native' 3 + import {setStringAsync} from 'expo-clipboard' 8 4 import { 9 5 FontAwesomeIcon, 10 6 FontAwesomeIconStyle, 11 7 } from '@fortawesome/react-native-fontawesome' 12 - import Clipboard from '@react-native-clipboard/clipboard' 13 - import * as Toast from '../util/Toast' 8 + import {msg, Trans} from '@lingui/macro' 9 + import {useLingui} from '@lingui/react' 10 + 14 11 import {logger} from '#/logger' 15 - import {Trans, msg} from '@lingui/macro' 16 - import {useLingui} from '@lingui/react' 17 12 import {useModalControls} from '#/state/modals' 18 13 import { 19 - useAppPasswordsQuery, 20 14 useAppPasswordCreateMutation, 15 + useAppPasswordsQuery, 21 16 } from '#/state/queries/app-passwords' 17 + import {usePalette} from 'lib/hooks/usePalette' 18 + import {s} from 'lib/styles' 19 + import {isNative} from 'platform/detection' 20 + import {Button} from '../util/forms/Button' 21 + import {Text} from '../util/text/Text' 22 + import * as Toast from '../util/Toast' 22 23 23 24 export const snapPoints = ['70%'] 24 25 ··· 72 73 73 74 const onCopy = React.useCallback(() => { 74 75 if (appPassword) { 75 - Clipboard.setString(appPassword) 76 + setStringAsync(appPassword) 76 77 Toast.show(_(msg`Copied to clipboard`)) 77 78 setWasCopied(true) 78 79 }
+21 -22
src/view/com/modals/ChangeHandle.tsx
··· 1 1 import React, {useState} from 'react' 2 - import Clipboard from '@react-native-clipboard/clipboard' 3 - import {ComAtprotoServerDescribeServer} from '@atproto/api' 4 - import * as Toast from '../util/Toast' 5 2 import { 6 3 ActivityIndicator, 7 4 StyleSheet, 8 5 TouchableOpacity, 9 6 View, 10 7 } from 'react-native' 8 + import {setStringAsync} from 'expo-clipboard' 9 + import {ComAtprotoServerDescribeServer} from '@atproto/api' 11 10 import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' 12 - import {ScrollView, TextInput} from './util' 13 - import {Text} from '../util/text/Text' 14 - import {Button} from '../util/forms/Button' 15 - import {SelectableBtn} from '../util/forms/SelectableBtn' 16 - import {ErrorMessage} from '../util/error/ErrorMessage' 17 - import {s} from 'lib/styles' 18 - import {createFullHandle, makeValidHandle} from 'lib/strings/handles' 19 - import {usePalette} from 'lib/hooks/usePalette' 20 - import {useTheme} from 'lib/ThemeContext' 21 - import {useAnalytics} from 'lib/analytics/analytics' 22 - import {cleanError} from 'lib/strings/errors' 11 + import {msg, Trans} from '@lingui/macro' 12 + import {useLingui} from '@lingui/react' 13 + 23 14 import {logger} from '#/logger' 24 - import {Trans, msg} from '@lingui/macro' 25 - import {useLingui} from '@lingui/react' 26 15 import {useModalControls} from '#/state/modals' 16 + import {useFetchDid, useUpdateHandleMutation} from '#/state/queries/handle' 27 17 import {useServiceQuery} from '#/state/queries/service' 28 - import {useUpdateHandleMutation, useFetchDid} from '#/state/queries/handle' 29 18 import { 19 + getAgent, 20 + SessionAccount, 30 21 useSession, 31 22 useSessionApi, 32 - SessionAccount, 33 - getAgent, 34 23 } from '#/state/session' 24 + import {useAnalytics} from 'lib/analytics/analytics' 25 + import {usePalette} from 'lib/hooks/usePalette' 26 + import {cleanError} from 'lib/strings/errors' 27 + import {createFullHandle, makeValidHandle} from 'lib/strings/handles' 28 + import {s} from 'lib/styles' 29 + import {useTheme} from 'lib/ThemeContext' 30 + import {ErrorMessage} from '../util/error/ErrorMessage' 31 + import {Button} from '../util/forms/Button' 32 + import {SelectableBtn} from '../util/forms/SelectableBtn' 33 + import {Text} from '../util/text/Text' 34 + import * as Toast from '../util/Toast' 35 + import {ScrollView, TextInput} from './util' 35 36 36 37 export const snapPoints = ['100%'] 37 38 ··· 321 322 // events 322 323 // = 323 324 const onPressCopy = React.useCallback(() => { 324 - Clipboard.setString( 325 - isDNSForm ? `did=${currentAccount.did}` : currentAccount.did, 326 - ) 325 + setStringAsync(isDNSForm ? `did=${currentAccount.did}` : currentAccount.did) 327 326 Toast.show(_(msg`Copied to clipboard`)) 328 327 }, [currentAccount, isDNSForm, _]) 329 328 const onChangeHandle = React.useCallback(
+20 -19
src/view/com/modals/InviteCodes.tsx
··· 1 1 import React from 'react' 2 2 import { 3 + ActivityIndicator, 3 4 StyleSheet, 4 5 TouchableOpacity, 5 6 View, 6 - ActivityIndicator, 7 7 } from 'react-native' 8 + import {setStringAsync} from 'expo-clipboard' 8 9 import {ComAtprotoServerDefs} from '@atproto/api' 9 10 import { 10 11 FontAwesomeIcon, 11 12 FontAwesomeIconStyle, 12 13 } from '@fortawesome/react-native-fontawesome' 13 - import Clipboard from '@react-native-clipboard/clipboard' 14 - import {Text} from '../util/text/Text' 15 - import {Button} from '../util/forms/Button' 16 - import * as Toast from '../util/Toast' 17 - import {ScrollView} from './util' 14 + import {msg, Trans} from '@lingui/macro' 15 + import {useLingui} from '@lingui/react' 16 + 17 + import {makeProfileLink} from '#/lib/routes/links' 18 + import {useInvitesAPI, useInvitesState} from '#/state/invites' 19 + import {useModalControls} from '#/state/modals' 20 + import { 21 + InviteCodesQueryResponse, 22 + useInviteCodesQuery, 23 + } from '#/state/queries/invites' 18 24 import {usePalette} from 'lib/hooks/usePalette' 19 - import {isWeb} from 'platform/detection' 20 25 import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 21 - import {Trans, msg} from '@lingui/macro' 22 26 import {cleanError} from 'lib/strings/errors' 23 - import {useModalControls} from '#/state/modals' 24 - import {useInvitesState, useInvitesAPI} from '#/state/invites' 25 - import {UserInfoText} from '../util/UserInfoText' 26 - import {makeProfileLink} from '#/lib/routes/links' 27 - import {Link} from '../util/Link' 27 + import {isWeb} from 'platform/detection' 28 28 import {ErrorMessage} from '../util/error/ErrorMessage' 29 - import { 30 - useInviteCodesQuery, 31 - InviteCodesQueryResponse, 32 - } from '#/state/queries/invites' 33 - import {useLingui} from '@lingui/react' 29 + import {Button} from '../util/forms/Button' 30 + import {Link} from '../util/Link' 31 + import {Text} from '../util/text/Text' 32 + import * as Toast from '../util/Toast' 33 + import {UserInfoText} from '../util/UserInfoText' 34 + import {ScrollView} from './util' 34 35 35 36 export const snapPoints = ['70%'] 36 37 ··· 148 149 const uses = invite.uses 149 150 150 151 const onPress = React.useCallback(() => { 151 - Clipboard.setString(invite.code) 152 + setStringAsync(invite.code) 152 153 Toast.show(_(msg`Copied to clipboard`)) 153 154 setInviteCopied(invite.code) 154 155 }, [setInviteCopied, invite, _])
+2 -2
src/view/com/util/forms/PostDropdownBtn.tsx
··· 1 1 import React, {memo} from 'react' 2 2 import {Pressable, PressableProps, StyleProp, ViewStyle} from 'react-native' 3 + import {setStringAsync} from 'expo-clipboard' 3 4 import { 4 5 AppBskyActorDefs, 5 6 AppBskyFeedPost, ··· 9 10 import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' 10 11 import {msg} from '@lingui/macro' 11 12 import {useLingui} from '@lingui/react' 12 - import Clipboard from '@react-native-clipboard/clipboard' 13 13 import {useNavigation} from '@react-navigation/native' 14 14 15 15 import {makeProfileLink} from '#/lib/routes/links' ··· 154 154 const onCopyPostText = React.useCallback(() => { 155 155 const str = richTextToString(richText, true) 156 156 157 - Clipboard.setString(str) 157 + setStringAsync(str) 158 158 Toast.show(_(msg`Copied to clipboard`)) 159 159 }, [_, richText]) 160 160
+2 -2
src/view/screens/Settings/index.tsx
··· 10 10 View, 11 11 ViewStyle, 12 12 } from 'react-native' 13 + import {setStringAsync} from 'expo-clipboard' 13 14 import { 14 15 FontAwesomeIcon, 15 16 FontAwesomeIconStyle, 16 17 } from '@fortawesome/react-native-fontawesome' 17 18 import {msg, Trans} from '@lingui/macro' 18 19 import {useLingui} from '@lingui/react' 19 - import Clipboard from '@react-native-clipboard/clipboard' 20 20 import {useFocusEffect, useNavigation} from '@react-navigation/native' 21 21 import {useQueryClient} from '@tanstack/react-query' 22 22 ··· 245 245 }, [onboardingDispatch, _]) 246 246 247 247 const onPressBuildInfo = React.useCallback(() => { 248 - Clipboard.setString( 248 + setStringAsync( 249 249 `Build version: ${AppInfo.appVersion}; Platform: ${Platform.OS}`, 250 250 ) 251 251 Toast.show(_(msg`Copied build version to clipboard`))
+5 -5
yarn.lock
··· 4857 4857 dependencies: 4858 4858 merge-options "^3.0.4" 4859 4859 4860 - "@react-native-clipboard/clipboard@^1.10.0": 4861 - version "1.11.2" 4862 - resolved "https://registry.yarnpkg.com/@react-native-clipboard/clipboard/-/clipboard-1.11.2.tgz#e826d0336b34e67294aaffa6878308900bc7d197" 4863 - integrity sha512-bHyZVW62TuleiZsXNHS1Pv16fWc0fh8O9WvBzl4h2fykqZRW9a+Pv/RGTH56E3X2PqzHP38K5go8zmCZUoIsoQ== 4864 - 4865 4860 "@react-native-community/cli-clean@12.3.0": 4866 4861 version "12.3.0" 4867 4862 resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.0.tgz#667b32daa58b4d11d5b5ab9eb0a2e216d500c90b" ··· 11776 11771 integrity sha512-PBkbAR0g/rFO9A01CmOoPHknXBBfJ1rXFm75XQY6kmMNH9BHJ89yAtlOaYJy/fw5xVxJkyVG+6uVGgbBeu7dyw== 11777 11772 dependencies: 11778 11773 invariant "^2.2.4" 11774 + 11775 + expo-clipboard@^5.0.1: 11776 + version "5.0.1" 11777 + resolved "https://registry.yarnpkg.com/expo-clipboard/-/expo-clipboard-5.0.1.tgz#a62a021a9444740d180d60f915cca8242a323716" 11778 + integrity sha512-JH853QJPr5W3h87If3aDTnMK+ESSIrwzU2TdfZrqZttVDY2pMIf/w37mVHHNYodXM4ATHXadtOkjKbAa0DWwUg== 11779 11779 11780 11780 expo-constants@^13.0.2: 11781 11781 version "13.2.4"