Navbar.tsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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, printPdf } from '../helpers/utility';
  10. import { delay } from '../helpers/time';
  11. const Navbar: React.FC = () => {
  12. const [{ navbarState, displayMode, info, totalPage }, dispatch] = useStore();
  13. const { setNavbar, setLoading } = useActions(dispatch);
  14. const onClick = (state: string): void => {
  15. switch (state) {
  16. case 'export': {
  17. const parsed = queryString.parse(window.location.search);
  18. const fileName = atob(info.token as string);
  19. let outputPath = `/api/v1/output.pdf?f=${info.token}`;
  20. if (parsed.watermark) {
  21. outputPath = `/api/v1/output.pdf?f=${info.token}&user_id=${parsed.watermark}&pages=0-${totalPage}`;
  22. }
  23. setLoading(true);
  24. downloadFileWithUri(fileName, outputPath);
  25. // downloadFileWithUri(fileName, `http://127.0.0.1:3000${outputPath}`);
  26. delay(1000).then(() => {
  27. setLoading(false);
  28. });
  29. break;
  30. }
  31. case 'print': {
  32. const parsed = queryString.parse(window.location.search);
  33. let outputPath = `/api/v1/output.pdf?f=${info.token}`;
  34. if (parsed.watermark) {
  35. outputPath = `/api/v1/output.pdf?f=${info.token}&user_id=${parsed.watermark}&pages=0-${totalPage}`;
  36. }
  37. setLoading(true);
  38. printPdf(outputPath).then(() => {
  39. setLoading(false);
  40. });
  41. // printPdf(`http://127.0.0.1:3000${outputPath}`).then(() => {
  42. // setLoading(false);
  43. // });
  44. break;
  45. }
  46. case navbarState:
  47. setNavbar('');
  48. break;
  49. default:
  50. setNavbar(state);
  51. break;
  52. }
  53. };
  54. return (
  55. <NavbarComponent
  56. onClick={onClick}
  57. navbarState={navbarState}
  58. displayMode={displayMode}
  59. fileName={
  60. info.token ? decodeURIComponent(escape(window.atob(info.token))) : ''
  61. }
  62. >
  63. <Search />
  64. <AnnotationList />
  65. <Thumbnails />
  66. </NavbarComponent>
  67. );
  68. };
  69. export default Navbar;