fix(#274): fix auth

pull/70/head
Andrei Dekterev 3 years ago
parent f02325c470
commit d5adc2cd7e
  1. 4
      src/features/AuthStore/hooks/useAuth.tsx
  2. 4
      src/features/HomePage/hooks.tsx
  3. 1
      src/features/HomePage/index.tsx
  4. 10
      src/features/Matches/index.tsx
  5. 2
      src/features/SportsFilter/components/SelectSport/styled.tsx
  6. 6
      src/features/UserFavorites/hooks/index.tsx
  7. 13
      src/features/UserFavorites/index.tsx
  8. 3
      src/helpers/callApi/logoutIfUnauthorized.tsx

@ -216,7 +216,8 @@ export const useAuth = () => {
useEffect(() => {
// попытаемся обновить токен используя refresh_token
const tryRenewToken = () => {
userManager.signinSilent().catch(logout)
userManager.signinSilent()
.catch(() => user && logout())
}
// если запросы вернули 401 | 403
window.addEventListener('FORBIDDEN_REQUEST', tryRenewToken)
@ -227,6 +228,7 @@ export const useAuth = () => {
window.removeEventListener('FORBIDDEN_REQUEST', tryRenewToken)
userManager.events.removeAccessTokenExpired(tryRenewToken)
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [userManager, logout])
useEffect(() => {

@ -56,7 +56,7 @@ export const useHomePage = () => {
})()
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [userInfo])
}, [userInfo?.email])
useEffect(() => {
const dateLastOpenSmartBanner = localStorage.getItem('dateLastOpenSmartBanner')
@ -75,7 +75,7 @@ export const useHomePage = () => {
timezoneOffset: getTimezoneOffset(selectedDate),
}),
// eslint-disable-next-line react-hooks/exhaustive-deps
[selectedDate],
[selectedDate, userInfo?.email],
)
useEffect(() => {

@ -47,6 +47,7 @@ const Home = () => {
<UserFavorites />
<Content>
{isMobileDevice ? null : <HeaderFilters />}
{/* {userInfo?.email && <Matches fetch={fetchMatches} />} */}
<Matches fetch={fetchMatches} />
<ConfirmPopup
isModalOpen={isShowConfirmPopup}

@ -1,4 +1,8 @@
import { Fragment, useMemo } from 'react'
import {
Fragment,
useMemo,
memo,
} from 'react'
import { T9n } from 'features/T9n'
import { InfiniteScroll } from 'features/InfiniteScroll'
@ -12,7 +16,7 @@ import { Loading } from './styled'
export type { Match } from './hooks'
export const Matches = (props: Props) => {
export const Matches = memo((props: Props) => {
const {
fetchMoreMatches,
isFetching,
@ -72,4 +76,4 @@ export const Matches = (props: Props) => {
{isMobileDevice ? mobileView : desktopView}
</InfiniteScroll>
)
}
})

@ -56,7 +56,7 @@ export const Arrows = styled.span<PropsArrows>`
${({ active }) => (
active
? css`
transform: translate(-50%, -50%) rotate(135deg);
transform: translate(-50%) rotate(135deg);
`
: css`
transform: translate(-50%, -50%) rotate(315deg);

@ -21,6 +21,8 @@ import { useToggle } from 'hooks/useToggle'
import { ProfileTypes, SportTypes } from 'config'
import { useAuthStore } from '../../AuthStore'
type ProfileType = {
profile: ObjectWithName & {
additionalInfo: ObjectWithName & {
@ -40,6 +42,7 @@ export type SuperTournament = ObjectWithName & {
type Args = Parameters<typeof modifyUserFavorites>[0]
export const useUserFavorites = () => {
const { userInfo } = useAuthStore()
const [userFavorites, setUserFavorites] = useState<UserFavorites>([])
const [playerHighlight, setPlayerHighlight] = useState<ProfileType>({} as ProfileType)
@ -78,7 +81,8 @@ export const useUserFavorites = () => {
setUserFavorites(value)
}
})
}, [])
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [userInfo?.email])
const removeSuperTournament = (id: number) => {
forEach(userFavorites, (item) => {

@ -10,9 +10,9 @@ import map from 'lodash/map'
import { FavoritesActions } from 'requests'
import { Modal } from 'features/Modal'
import { ProfileLink } from 'features/ProfileLink'
import { Close } from '../../libs/objects/Close'
import { Close } from 'libs/objects/Close'
import { TooltipBlock } from './TooltipBlock'
import { FavoritesToolip } from './FavoritesTooltip'
@ -29,6 +29,8 @@ import {
ScrollWrapper,
} from './styled'
import { useAuthStore } from '../AuthStore'
type Props = {
marginTop?: number,
}
@ -44,9 +46,14 @@ export const UserFavorites = ({ marginTop }: Props) => {
userFavorites,
} = useUserFavoritesStore()
const { user } = useAuthStore()
const [position, setPosition] = useState(0)
useEffect(fetchFavorites, [fetchFavorites])
useEffect(() => {
if (!user) return
fetchFavorites()
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [fetchFavorites])
const getPosition = (event: MouseEvent<HTMLDivElement> | FocusEvent<HTMLDivElement>) => {
if (event.currentTarget) {

@ -1,9 +1,6 @@
import { removeToken } from '../token'
export const logoutIfUnauthorized = async (response: Response) => {
/* отключили из-за доступа без авторизации */
if (response.status === 401 || response.status === 403) {
removeToken()
window.dispatchEvent(new Event('FORBIDDEN_REQUEST'))
}

Loading…
Cancel
Save