Navbar.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import React from 'react';
  2. import queryString from 'query-string';
  3. import useStore from '../store';
  4. import useActions from '../actions';
  5. import NavbarComponent from '../components/Navbar';
  6. import Search from './Search';
  7. import Thumbnails from './Thumbnails';
  8. import AnnotationList from './AnnotationList';
  9. import { downloadFileWithUri } from '../helpers/utility';
  10. const Navbar: React.FC = () => {
  11. const [{
  12. navbarState,
  13. displayMode,
  14. info,
  15. annotations,
  16. totalPage,
  17. }, dispatch] = useStore();
  18. const { setNavbar } = useActions(dispatch);
  19. const onClick = (state: string): void => {
  20. switch (state) {
  21. case 'export': {
  22. const parsed = queryString.parse(window.location.search);
  23. const fileName = atob(info.token as string);
  24. const outputPath = `/api/v1/output.pdf?f=${info.token}&user_id=${parsed.watermark}&pages=0-${totalPage}`;
  25. const originalPath = `/api/v1/original.pdf?transaction_id=${info.id}`;
  26. if (annotations.length) {
  27. downloadFileWithUri(fileName, outputPath);
  28. } else {
  29. downloadFileWithUri(fileName, originalPath);
  30. }
  31. break;
  32. }
  33. case navbarState:
  34. setNavbar('');
  35. break;
  36. default:
  37. setNavbar(state);
  38. break;
  39. }
  40. };
  41. return (
  42. <NavbarComponent
  43. onClick={onClick}
  44. navbarState={navbarState}
  45. displayMode={displayMode}
  46. fileName={info.token ? atob(info.token) : ''}
  47. >
  48. <Search />
  49. <AnnotationList />
  50. <Thumbnails />
  51. </NavbarComponent>
  52. );
  53. };
  54. export default Navbar;