small refactor + add Sentry.captureException in two catch blocks

This commit is contained in:
Dawid Wysokiński 2021-11-06 09:28:13 +01:00
parent f528cedafb
commit 284ab3dbce
Signed by: Kichiyaki
GPG Key ID: EF14026D247EB867
2 changed files with 37 additions and 27 deletions

View File

@ -1,6 +1,7 @@
import { useState } from 'react'; import { useState } from 'react';
import { useApolloClient } from '@apollo/client'; import { useApolloClient } from '@apollo/client';
import { useDebounce } from 'react-use'; import { useDebounce } from 'react-use';
import * as Sentry from '@sentry/react';
import { QUERY_PROFESSIONS } from './queries'; import { QUERY_PROFESSIONS } from './queries';
import { Profession, Query, QueryProfessionsArgs } from 'libs/graphql/types'; import { Profession, Query, QueryProfessionsArgs } from 'libs/graphql/types';
@ -31,7 +32,9 @@ const useSuggestions = () => {
if (data.professions?.items) { if (data.professions?.items) {
setSuggestions(data.professions.items); setSuggestions(data.professions.items);
} }
} catch (e) {} } catch (e) {
Sentry.captureException(e);
}
setIsLoadingSuggestions(false); setIsLoadingSuggestions(false);
}; };

View File

@ -1,13 +1,13 @@
import { useMemo, useState, useEffect } from 'react'; import { useMemo, useState, useEffect, useCallback } from 'react';
import { useApolloClient } from '@apollo/client'; import { useApolloClient } from '@apollo/client';
import { isFunction } from 'lodash'; import { isFunction } from 'lodash';
import * as Sentry from '@sentry/react';
import { context as Context } from './context'; import { context as Context } from './context';
import { AuthContext, User } from './types'; import { AuthContext, User } from './types';
import { MutationSignInArgs, Mutation } from 'libs/graphql/types'; import { MutationSignInArgs, Mutation } from 'libs/graphql/types';
import TokenStorage from '../tokenstorage/TokenStorage'; import TokenStorage from '../tokenstorage/TokenStorage';
import { QUERY_ME } from './queries'; import { QUERY_ME } from './queries';
import { MUTATION_SIGN_IN } from './mutations'; import { MUTATION_SIGN_IN } from './mutations';
import { useCallback } from 'react';
export interface AuthProviderProps { export interface AuthProviderProps {
tokenStorage?: TokenStorage; tokenStorage?: TokenStorage;
@ -31,17 +31,22 @@ export function AuthProvider(props: AuthProviderProps) {
}, [props.tokenStorage]); }, [props.tokenStorage]);
const loadUser = useCallback(async () => { const loadUser = useCallback(async () => {
if (tokenStorage.token) { if (!tokenStorage.token) {
try { return;
const result = await client.query<MeQueryResult>({
query: QUERY_ME,
fetchPolicy: 'network-only',
});
if (result.data.me) {
setUser(result.data.me);
}
} catch (e) {}
} }
try {
const result = await client.query<MeQueryResult>({
query: QUERY_ME,
fetchPolicy: 'network-only',
});
if (result.data.me) {
setUser(result.data.me);
}
} catch (e) {
Sentry.captureException(e);
}
setLoading(false); setLoading(false);
}, [setUser, setLoading, client, tokenStorage]); }, [setUser, setLoading, client, tokenStorage]);
@ -67,22 +72,24 @@ export function AuthProvider(props: AuthProviderProps) {
}, },
}); });
if (result.data?.signIn?.user) { if (!result.data?.signIn?.user) {
if (isFunction(validate) && !validate(result.data.signIn.user)) { return null;
return null;
}
tokenStorage.setToken(result.data.signIn.token);
setUser(result.data.signIn.user);
client.writeQuery<MeQueryResult>({
query: QUERY_ME,
data: {
me: result.data.signIn.user,
},
});
return result.data.signIn.user;
} }
return null; if (isFunction(validate) && !validate(result.data.signIn.user)) {
return null;
}
tokenStorage.setToken(result.data.signIn.token);
setUser(result.data.signIn.user);
client.writeQuery<MeQueryResult>({
query: QUERY_ME,
data: {
me: result.data.signIn.user,
},
});
return result.data.signIn.user;
}; };
const signOut = () => { const signOut = () => {