index.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import Icon from '@ant-design/icons';
  2. import { useEffect } from 'react';
  3. import { connect } from 'react-redux';
  4. import { Route } from 'react-router-dom';
  5. export const backURL = 'http://hipstagram.asmer.fs.a-level.com.ua'
  6. export const propsUploadFile = {
  7. name: 'photo',
  8. action: `${backURL}/upload`,
  9. headers: localStorage.authToken || sessionStorage.authToken ? { Authorization: 'Bearer ' + (localStorage.authToken || sessionStorage.authToken) } : {}
  10. }
  11. export const jwtDecode = (token) => {
  12. try {
  13. let arrToken = token.split('.')
  14. let base64Token = atob(arrToken[1])
  15. return JSON.parse(base64Token)
  16. }
  17. catch (e) {
  18. console.log('Ой, ошибочка вышла ' + e);
  19. }
  20. }
  21. const getGQL = url =>
  22. async (query, variables = {}) => {
  23. let obj = await fetch(url, {
  24. method: 'POST',
  25. headers: {
  26. "Content-Type": "application/json",
  27. ...(localStorage.authToken
  28. ? { Authorization: 'Bearer ' + localStorage.authToken }
  29. : sessionStorage.authToken
  30. ? { Authorization: 'Bearer ' + sessionStorage.authToken }
  31. : {})
  32. },
  33. body: JSON.stringify({ query, variables })
  34. })
  35. let a = await obj.json()
  36. if (!a.data && a.errors)
  37. throw new Error(JSON.stringify(a.errors))
  38. return a.data[Object.keys(a.data)[0]]
  39. }
  40. export const gql = getGQL(backURL + '/graphql');
  41. const CircularGallerySvg = () =>
  42. <svg aria-label="Кольцевая галерея" color="#ffffff" fill="#ffffff" height="22" role="img" viewBox="0 0 48 48" width="22">
  43. <path d="M34.8 29.7V11c0-2.9-2.3-5.2-5.2-5.2H11c-2.9 0-5.2 2.3-5.2 5.2v18.7c0 2.9 2.3 5.2 5.2 5.2h18.7c2.8-.1 5.1-2.4 5.1-5.2zM39.2 15v16.1c0 4.5-3.7 8.2-8.2 8.2H14.9c-.6 0-.9.7-.5 1.1 1 1.1 2.4 1.8 4.1 1.8h13.4c5.7 0 10.3-4.6 10.3-10.3V18.5c0-1.6-.7-3.1-1.8-4.1-.5-.4-1.2 0-1.2.6z"></path>
  44. </svg>
  45. export const CircularGalleryIcon = props =>
  46. <Icon component={CircularGallerySvg} {...props}/>
  47. const RRoute = ({ action, component: Component, ...routeProps }) => {
  48. const WrapperComponent = (componentProps) => {
  49. useEffect(() => {
  50. action(componentProps.match)
  51. })
  52. return <Component {...componentProps} />
  53. }
  54. return <Route {...routeProps} component={WrapperComponent} />
  55. }
  56. export const CRRoute = connect(null, { action: match => ({ type: 'ROUTE', match }) })(RRoute)