diff options
Diffstat (limited to 'src/screens')
-rw-r--r-- | src/screens/Login/ChooseAccountForm.tsx | 8 | ||||
-rw-r--r-- | src/screens/Login/ForgotPasswordForm.tsx | 8 | ||||
-rw-r--r-- | src/screens/Login/LoginForm.tsx | 9 | ||||
-rw-r--r-- | src/screens/Login/PasswordUpdatedForm.tsx | 8 | ||||
-rw-r--r-- | src/screens/Login/SetNewPasswordForm.tsx | 8 | ||||
-rw-r--r-- | src/screens/Login/index.tsx | 3 | ||||
-rw-r--r-- | src/screens/Moderation/index.tsx | 5 | ||||
-rw-r--r-- | src/screens/Onboarding/StepFinished.tsx | 19 | ||||
-rw-r--r-- | src/screens/Onboarding/StepInterests/index.tsx | 18 | ||||
-rw-r--r-- | src/screens/Onboarding/StepProfile/index.tsx | 9 | ||||
-rw-r--r-- | src/screens/Profile/Header/ProfileHeaderLabeler.tsx | 15 | ||||
-rw-r--r-- | src/screens/Profile/Header/ProfileHeaderStandard.tsx | 14 | ||||
-rw-r--r-- | src/screens/Signup/index.tsx | 6 |
13 files changed, 24 insertions, 106 deletions
diff --git a/src/screens/Login/ChooseAccountForm.tsx b/src/screens/Login/ChooseAccountForm.tsx index 678ba5123..9765786ec 100644 --- a/src/screens/Login/ChooseAccountForm.tsx +++ b/src/screens/Login/ChooseAccountForm.tsx @@ -3,7 +3,6 @@ import {View} from 'react-native' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {useAnalytics} from '#/lib/analytics/analytics' import {logEvent} from '#/lib/statsig/statsig' import {logger} from '#/logger' import {SessionAccount, useSession, useSessionApi} from '#/state/session' @@ -23,16 +22,11 @@ export const ChooseAccountForm = ({ onPressBack: () => void }) => { const [pendingDid, setPendingDid] = React.useState<string | null>(null) - const {track, screen} = useAnalytics() const {_} = useLingui() const {currentAccount} = useSession() const {resumeSession} = useSessionApi() const {setShowLoggedOut} = useLoggedOutViewControls() - React.useEffect(() => { - screen('Choose Account') - }, [screen]) - const onSelect = React.useCallback( async (account: SessionAccount) => { if (pendingDid) { @@ -56,7 +50,6 @@ export const ChooseAccountForm = ({ logContext: 'ChooseAccountForm', withPassword: false, }) - track('Sign In', {resumedSession: true}) Toast.show(_(msg`Signed in as @${account.handle}`)) } catch (e: any) { logger.error('choose account: initSession failed', { @@ -70,7 +63,6 @@ export const ChooseAccountForm = ({ }, [ currentAccount, - track, resumeSession, pendingDid, onSelectAccount, diff --git a/src/screens/Login/ForgotPasswordForm.tsx b/src/screens/Login/ForgotPasswordForm.tsx index 7acaae510..e8582f46f 100644 --- a/src/screens/Login/ForgotPasswordForm.tsx +++ b/src/screens/Login/ForgotPasswordForm.tsx @@ -1,4 +1,4 @@ -import React, {useEffect, useState} from 'react' +import React, {useState} from 'react' import {ActivityIndicator, Keyboard, View} from 'react-native' import {ComAtprotoServerDescribeServer} from '@atproto/api' import {BskyAgent} from '@atproto/api' @@ -6,7 +6,6 @@ import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import * as EmailValidator from 'email-validator' -import {useAnalytics} from '#/lib/analytics/analytics' import {isNetworkError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors' import {logger} from '#/logger' @@ -41,13 +40,8 @@ export const ForgotPasswordForm = ({ const t = useTheme() const [isProcessing, setIsProcessing] = useState<boolean>(false) const [email, setEmail] = useState<string>('') - const {screen} = useAnalytics() const {_} = useLingui() - useEffect(() => { - screen('Signin:ForgotPassword') - }, [screen]) - const onPressSelectService = React.useCallback(() => { Keyboard.dismiss() }, []) diff --git a/src/screens/Login/LoginForm.tsx b/src/screens/Login/LoginForm.tsx index c2038b287..f3661ac92 100644 --- a/src/screens/Login/LoginForm.tsx +++ b/src/screens/Login/LoginForm.tsx @@ -13,15 +13,14 @@ import { import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {useAnalytics} from '#/lib/analytics/analytics' +import {useRequestNotificationsPermission} from '#/lib/notifications/notifications' import {isNetworkError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors' import {createFullHandle} from '#/lib/strings/handles' import {logger} from '#/logger' +import {useSetHasCheckedForStarterPack} from '#/state/preferences/used-starter-packs' import {useSessionApi} from '#/state/session' import {useLoggedOutViewControls} from '#/state/shell/logged-out' -import {useRequestNotificationsPermission} from 'lib/notifications/notifications' -import {useSetHasCheckedForStarterPack} from 'state/preferences/used-starter-packs' import {atoms as a, useTheme} from '#/alf' import {Button, ButtonIcon, ButtonText} from '#/components/Button' import {FormError} from '#/components/forms/FormError' @@ -57,7 +56,6 @@ export const LoginForm = ({ onPressBack: () => void onPressForgotPassword: () => void }) => { - const {track} = useAnalytics() const t = useTheme() const [isProcessing, setIsProcessing] = useState<boolean>(false) const [isAuthFactorTokenNeeded, setIsAuthFactorTokenNeeded] = @@ -74,8 +72,7 @@ export const LoginForm = ({ const onPressSelectService = React.useCallback(() => { Keyboard.dismiss() - track('Signin:PressedSelectService') - }, [track]) + }, []) const onPressNext = async () => { if (isProcessing) return diff --git a/src/screens/Login/PasswordUpdatedForm.tsx b/src/screens/Login/PasswordUpdatedForm.tsx index 03e7d8669..9c12a47e3 100644 --- a/src/screens/Login/PasswordUpdatedForm.tsx +++ b/src/screens/Login/PasswordUpdatedForm.tsx @@ -1,9 +1,8 @@ -import React, {useEffect} from 'react' +import React from 'react' import {View} from 'react-native' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {useAnalytics} from '#/lib/analytics/analytics' import {atoms as a, useBreakpoints} from '#/alf' import {Button, ButtonText} from '#/components/Button' import {Text} from '#/components/Typography' @@ -14,14 +13,9 @@ export const PasswordUpdatedForm = ({ }: { onPressNext: () => void }) => { - const {screen} = useAnalytics() const {_} = useLingui() const {gtMobile} = useBreakpoints() - useEffect(() => { - screen('Signin:PasswordUpdatedForm') - }, [screen]) - return ( <FormContainer testID="passwordUpdatedForm" diff --git a/src/screens/Login/SetNewPasswordForm.tsx b/src/screens/Login/SetNewPasswordForm.tsx index a6658621c..9efbb96ce 100644 --- a/src/screens/Login/SetNewPasswordForm.tsx +++ b/src/screens/Login/SetNewPasswordForm.tsx @@ -1,10 +1,9 @@ -import React, {useEffect, useState} from 'react' +import React, {useState} from 'react' import {ActivityIndicator, View} from 'react-native' import {BskyAgent} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {useAnalytics} from '#/lib/analytics/analytics' import {isNetworkError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors' import {checkAndFormatResetCode} from '#/lib/strings/password' @@ -31,14 +30,9 @@ export const SetNewPasswordForm = ({ onPressBack: () => void onPasswordSet: () => void }) => { - const {screen} = useAnalytics() const {_} = useLingui() const t = useTheme() - useEffect(() => { - screen('Signin:SetNewPasswordForm') - }, [screen]) - const [isProcessing, setIsProcessing] = useState<boolean>(false) const [resetCode, setResetCode] = useState<string>('') const [password, setPassword] = useState<string>('') diff --git a/src/screens/Login/index.tsx b/src/screens/Login/index.tsx index 1fce63d29..b46f8d26b 100644 --- a/src/screens/Login/index.tsx +++ b/src/screens/Login/index.tsx @@ -4,7 +4,6 @@ import {LayoutAnimationConfig} from 'react-native-reanimated' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {useAnalytics} from '#/lib/analytics/analytics' import {DEFAULT_SERVICE} from '#/lib/constants' import {logger} from '#/logger' import {useServiceQuery} from '#/state/queries/service' @@ -31,7 +30,6 @@ export const Login = ({onPressBack}: {onPressBack: () => void}) => { const {_} = useLingui() const {accounts} = useSession() - const {track} = useAnalytics() const {requestedAccountSwitchTo} = useLoggedOutView() const requestedAccount = accounts.find( acc => acc.did === requestedAccountSwitchTo, @@ -87,7 +85,6 @@ export const Login = ({onPressBack}: {onPressBack: () => void}) => { }, [serviceError, serviceUrl, _]) const onPressForgotPassword = () => { - track('Signin:PressedForgotPassword') setCurrentForm(Forms.ForgotPassword) } diff --git a/src/screens/Moderation/index.tsx b/src/screens/Moderation/index.tsx index 9bfe6c3fa..070b87950 100644 --- a/src/screens/Moderation/index.tsx +++ b/src/screens/Moderation/index.tsx @@ -7,7 +7,6 @@ import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useFocusEffect} from '@react-navigation/native' -import {useAnalytics} from '#/lib/analytics/analytics' import {getLabelingServiceTitle} from '#/lib/moderation' import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types' import {logger} from '#/logger' @@ -163,7 +162,6 @@ export function ModerationScreenInner({ const {_} = useLingui() const t = useTheme() const setMinimalShellMode = useSetMinimalShellMode() - const {screen} = useAnalytics() const {gtMobile} = useBreakpoints() const {mutedWordsDialogControl} = useGlobalDialogsControlContext() const birthdateDialogControl = Dialog.useDialogControl() @@ -175,9 +173,8 @@ export function ModerationScreenInner({ useFocusEffect( React.useCallback(() => { - screen('Moderation') setMinimalShellMode(false) - }, [screen, setMinimalShellMode]), + }, [setMinimalShellMode]), ) const {mutateAsync: setAdultContentPref, variables: optimisticAdultContent} = diff --git a/src/screens/Onboarding/StepFinished.tsx b/src/screens/Onboarding/StepFinished.tsx index bc765781a..fdc0a3eb7 100644 --- a/src/screens/Onboarding/StepFinished.tsx +++ b/src/screens/Onboarding/StepFinished.tsx @@ -7,27 +7,26 @@ import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useQueryClient} from '@tanstack/react-query' -import {useAnalytics} from '#/lib/analytics/analytics' +import {uploadBlob} from '#/lib/api' import { BSKY_APP_ACCOUNT_DID, DISCOVER_SAVED_FEED, TIMELINE_SAVED_FEED, } from '#/lib/constants' +import {useRequestNotificationsPermission} from '#/lib/notifications/notifications' import {logEvent} from '#/lib/statsig/statsig' import {logger} from '#/logger' +import {useSetHasCheckedForStarterPack} from '#/state/preferences/used-starter-packs' +import {getAllListMembers} from '#/state/queries/list-members' import {preferencesQueryKey} from '#/state/queries/preferences' import {RQKEY as profileRQKey} from '#/state/queries/profile' import {useAgent} from '#/state/session' import {useOnboardingDispatch} from '#/state/shell' import {useProgressGuideControls} from '#/state/shell/progress-guide' -import {uploadBlob} from 'lib/api' -import {useRequestNotificationsPermission} from 'lib/notifications/notifications' -import {useSetHasCheckedForStarterPack} from 'state/preferences/used-starter-packs' -import {getAllListMembers} from 'state/queries/list-members' import { useActiveStarterPack, useSetActiveStarterPack, -} from 'state/shell/starter-pack' +} from '#/state/shell/starter-pack' import { DescriptionText, OnboardingControls, @@ -48,7 +47,6 @@ import {Text} from '#/components/Typography' export function StepFinished() { const {_} = useLingui() const t = useTheme() - const {track} = useAnalytics() const {state, dispatch} = React.useContext(Context) const onboardDispatch = useOnboardingDispatch() const [saving, setSaving] = React.useState(false) @@ -190,8 +188,6 @@ export function StepFinished() { startProgressGuide('like-10-and-follow-7') dispatch({type: 'finish'}) onboardDispatch({type: 'finish'}) - track('OnboardingV2:StepFinished:End') - track('OnboardingV2:Complete') logEvent('onboarding:finished:nextPressed', { usedStarterPack: Boolean(starterPack), starterPackName: AppBskyGraphStarterpack.isRecord(starterPack?.record) @@ -214,7 +210,6 @@ export function StepFinished() { agent, dispatch, onboardDispatch, - track, activeStarterPack, state, requestNotificationsPermission, @@ -223,10 +218,6 @@ export function StepFinished() { startProgressGuide, ]) - React.useEffect(() => { - track('OnboardingV2:StepFinished:Start') - }, [track]) - return ( <View style={[a.align_start]}> <IconCircle icon={Check} style={[a.mb_2xl]} /> diff --git a/src/screens/Onboarding/StepInterests/index.tsx b/src/screens/Onboarding/StepInterests/index.tsx index ded473ff5..2f41433aa 100644 --- a/src/screens/Onboarding/StepInterests/index.tsx +++ b/src/screens/Onboarding/StepInterests/index.tsx @@ -4,7 +4,6 @@ import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useQuery} from '@tanstack/react-query' -import {useAnalytics} from '#/lib/analytics/analytics' import {logEvent} from '#/lib/statsig/statsig' import {capitalize} from '#/lib/strings/capitalize' import {logger} from '#/logger' @@ -36,7 +35,6 @@ export function StepInterests() { const {_} = useLingui() const t = useTheme() const {gtMobile} = useBreakpoints() - const {track} = useAnalytics() const interestsDisplayNames = useInterestsDisplayNames() const {state, dispatch} = React.useContext(Context) @@ -90,7 +88,6 @@ export function StepInterests() { `onboarding: getTaggedSuggestions fetch or processing failed`, ) logger.error(e) - track('OnboardingV2:StepInterests:Error') throw new Error(`a network error occurred`) } @@ -108,11 +105,6 @@ export function StepInterests() { selectedInterests: interests, }) dispatch({type: 'next'}) - - track('OnboardingV2:StepInterests:End', { - selectedInterests: interests, - selectedInterestsLength: interests.length, - }) logEvent('onboarding:interests:nextPressed', { selectedInterests: interests, selectedInterestsLength: interests.length, @@ -121,18 +113,12 @@ export function StepInterests() { logger.info(`onboading: error saving interests`) logger.error(e) } - }, [interests, data, setSaving, dispatch, track]) + }, [interests, data, setSaving, dispatch]) const skipOnboarding = React.useCallback(() => { onboardDispatch({type: 'finish'}) dispatch({type: 'finish'}) - track('OnboardingV2:Skip') - }, [onboardDispatch, dispatch, track]) - - React.useEffect(() => { - track('OnboardingV2:Begin') - track('OnboardingV2:StepInterests:Start') - }, [track]) + }, [onboardDispatch, dispatch]) const title = isError ? ( <Trans>Oh no! Something went wrong.</Trans> diff --git a/src/screens/Onboarding/StepProfile/index.tsx b/src/screens/Onboarding/StepProfile/index.tsx index 79957da31..663418f22 100644 --- a/src/screens/Onboarding/StepProfile/index.tsx +++ b/src/screens/Onboarding/StepProfile/index.tsx @@ -9,7 +9,6 @@ import { import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {useAnalytics} from '#/lib/analytics/analytics' import {usePhotoLibraryPermission} from '#/lib/hooks/usePermissions' import {compressIfNeeded} from '#/lib/media/manip' import {openCropper} from '#/lib/media/picker' @@ -68,7 +67,6 @@ export function StepProfile() { const {_} = useLingui() const t = useTheme() const {gtMobile} = useBreakpoints() - const {track} = useAnalytics() const {requestPhotoAccessIfNeeded} = usePhotoLibraryPermission() const gate = useGate() const requestNotificationsPermission = useRequestNotificationsPermission() @@ -88,10 +86,6 @@ export function StepProfile() { const canvasRef = React.useRef<PlaceholderCanvasRef>(null) React.useEffect(() => { - track('OnboardingV2:StepProfile:Start') - }, [track]) - - React.useEffect(() => { requestNotificationsPermission('StartOnboarding') }, [gate, requestNotificationsPermission]) @@ -155,9 +149,8 @@ export function StepProfile() { } dispatch({type: 'next'}) - track('OnboardingV2:StepProfile:End') logEvent('onboarding:profile:nextPressed', {}) - }, [avatar, dispatch, track]) + }, [avatar, dispatch]) const onDoneCreating = React.useCallback(() => { setAvatar(prev => ({ diff --git a/src/screens/Profile/Header/ProfileHeaderLabeler.tsx b/src/screens/Profile/Header/ProfileHeaderLabeler.tsx index a807c70dd..7b44e5869 100644 --- a/src/screens/Profile/Header/ProfileHeaderLabeler.tsx +++ b/src/screens/Profile/Header/ProfileHeaderLabeler.tsx @@ -12,18 +12,17 @@ import {useLingui} from '@lingui/react' // eslint-disable-next-line @typescript-eslint/no-unused-vars import {MAX_LABELERS} from '#/lib/constants' +import {useHaptics} from '#/lib/haptics' import {isAppLabeler} from '#/lib/moderation' import {logger} from '#/logger' +import {isIOS} from '#/platform/detection' +import {useProfileShadow} from '#/state/cache/profile-shadow' import {Shadow} from '#/state/cache/types' import {useModalControls} from '#/state/modals' import {useLabelerSubscriptionMutation} from '#/state/queries/labeler' import {useLikeMutation, useUnlikeMutation} from '#/state/queries/like' import {usePreferencesQuery} from '#/state/queries/preferences' import {useRequireAuth, useSession} from '#/state/session' -import {useAnalytics} from 'lib/analytics/analytics' -import {useHaptics} from 'lib/haptics' -import {isIOS} from 'platform/detection' -import {useProfileShadow} from 'state/cache/profile-shadow' import {ProfileMenu} from '#/view/com/profile/ProfileMenu' import * as Toast from '#/view/com/util/Toast' import {atoms as a, tokens, useBreakpoints, useTheme} from '#/alf' @@ -66,7 +65,6 @@ let ProfileHeaderLabeler = ({ const {_} = useLingui() const {currentAccount, hasSession} = useSession() const {openModal} = useModalControls() - const {track} = useAnalytics() const requireAuth = useRequireAuth() const playHaptic = useHaptics() const cantSubscribePrompt = Prompt.usePromptControl() @@ -102,12 +100,10 @@ let ProfileHeaderLabeler = ({ if (likeUri) { await unlikeMod({uri: likeUri}) - track('CustomFeed:Unlike') setLikeCount(c => c - 1) setLikeUri('') } else { const res = await likeMod({uri: labeler.uri, cid: labeler.cid}) - track('CustomFeed:Like') setLikeCount(c => c + 1) setLikeUri(res.uri) } @@ -120,15 +116,14 @@ let ProfileHeaderLabeler = ({ ) logger.error(`Failed to toggle labeler like`, {message: e.message}) } - }, [labeler, playHaptic, likeUri, unlikeMod, track, likeMod, _]) + }, [labeler, playHaptic, likeUri, unlikeMod, likeMod, _]) const onPressEditProfile = React.useCallback(() => { - track('ProfileHeader:EditProfileButtonClicked') openModal({ name: 'edit-profile', profile, }) - }, [track, openModal, profile]) + }, [openModal, profile]) const onPressSubscribe = React.useCallback( () => diff --git a/src/screens/Profile/Header/ProfileHeaderStandard.tsx b/src/screens/Profile/Header/ProfileHeaderStandard.tsx index 846fa4424..3bfc4bf2f 100644 --- a/src/screens/Profile/Header/ProfileHeaderStandard.tsx +++ b/src/screens/Profile/Header/ProfileHeaderStandard.tsx @@ -9,8 +9,10 @@ import { import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' +import {sanitizeDisplayName} from '#/lib/strings/display-names' import {logger} from '#/logger' import {isIOS} from '#/platform/detection' +import {useProfileShadow} from '#/state/cache/profile-shadow' import {Shadow} from '#/state/cache/types' import {useModalControls} from '#/state/modals' import { @@ -18,9 +20,6 @@ import { useProfileFollowMutationQueue, } from '#/state/queries/profile' import {useRequireAuth, useSession} from '#/state/session' -import {useAnalytics} from 'lib/analytics/analytics' -import {sanitizeDisplayName} from 'lib/strings/display-names' -import {useProfileShadow} from 'state/cache/profile-shadow' import {ProfileMenu} from '#/view/com/profile/ProfileMenu' import * as Toast from '#/view/com/util/Toast' import {atoms as a} from '#/alf' @@ -59,7 +58,6 @@ let ProfileHeaderStandard = ({ const {currentAccount, hasSession} = useSession() const {_} = useLingui() const {openModal} = useModalControls() - const {track} = useAnalytics() const moderation = useMemo( () => moderateProfile(profile, moderationOpts), [profile, moderationOpts], @@ -77,17 +75,15 @@ let ProfileHeaderStandard = ({ profile.viewer?.blockingByList const onPressEditProfile = React.useCallback(() => { - track('ProfileHeader:EditProfileButtonClicked') openModal({ name: 'edit-profile', profile, }) - }, [track, openModal, profile]) + }, [openModal, profile]) const onPressFollow = () => { requireAuth(async () => { try { - track('ProfileHeader:FollowButtonClicked') await queueFollow() Toast.show( _( @@ -109,7 +105,6 @@ let ProfileHeaderStandard = ({ const onPressUnfollow = () => { requireAuth(async () => { try { - track('ProfileHeader:UnfollowButtonClicked') await queueUnfollow() Toast.show( _( @@ -129,7 +124,6 @@ let ProfileHeaderStandard = ({ } const unblockAccount = React.useCallback(async () => { - track('ProfileHeader:UnblockAccountButtonClicked') try { await queueUnblock() Toast.show(_(msg`Account unblocked`)) @@ -139,7 +133,7 @@ let ProfileHeaderStandard = ({ Toast.show(_(msg`There was an issue! ${e.toString()}`), 'xmark') } } - }, [_, queueUnblock, track]) + }, [_, queueUnblock]) const isMe = React.useMemo( () => currentAccount?.did === profile.did, diff --git a/src/screens/Signup/index.tsx b/src/screens/Signup/index.tsx index 320980032..e3da053c0 100644 --- a/src/screens/Signup/index.tsx +++ b/src/screens/Signup/index.tsx @@ -5,7 +5,6 @@ import {AppBskyGraphStarterpack} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {useAnalytics} from '#/lib/analytics/analytics' import {FEEDBACK_FORM_URL} from '#/lib/constants' import {useServiceQuery} from '#/state/queries/service' import {useStarterPackQuery} from '#/state/queries/starter-packs' @@ -31,7 +30,6 @@ import {Text} from '#/components/Typography' export function Signup({onPressBack}: {onPressBack: () => void}) { const {_} = useLingui() const t = useTheme() - const {screen} = useAnalytics() const [state, dispatch] = React.useReducer(reducer, initialState) const {gtMobile} = useBreakpoints() const submit = useSubmitSignup() @@ -57,10 +55,6 @@ export function Signup({onPressBack}: {onPressBack: () => void}) { } = useServiceQuery(state.serviceUrl) React.useEffect(() => { - screen('CreateAccount') - }, [screen]) - - React.useEffect(() => { if (isFetching) { dispatch({type: 'setIsLoading', value: true}) } else if (!isFetching) { |