baseQuery: fetchBaseQuery({
baseUrl: API_URL,
prepareHeaders: async headers => {
const token = Cookies.get('accessToken')
if (token) {
return headers.set('Authorization', `Bearer ${token}`)
} else {
try {
const { data } = await refreshToken()
refreshTokens({
refreshToken: data.refreshToken,
accessToken: data.accessToken,
})
headers.set('Authorization', `Bearer ${data.accessToken}`)
return headers
} catch (error) {
return headers
}
}
},
}),
import en from '../../locales/en.json'
import ru from '../../locales/ru.json'
const translations = {
en,
ru,
}
export type LanguageCode = 'en' | 'ru'
export const useTranslation = (initialLanguage: LanguageCode = 'en') => {
const [language, setLanguage] = useState<LanguageCode>(initialLanguage)
const [texts, setTexts] = useState<(typeof translations)[LanguageCode]>(
translations[initialLanguage]
)
useEffect(() => {
setTexts(translations[language])
}, [language])
const t = useCallback(
(key: string): any => {
const value = key.split('.').reduce((obj, keyPart) => {
if (obj && typeof obj === 'object') {
return obj[keyPart]
}
return undefined
}, texts as Record<string, any>)
return value
},
[texts]
)
return { t, setLanguage, language }
}
Чтобы реализовать вращение на 3 полных круга + случайный индекс, нужно учитывать поведение с loop, а также использовать slideToLoop, который корректно обрабатывает циклическую прокрутку