editor.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import React from "react";
  2. import Head from "next/head";
  3. import { useRouter } from "next/router";
  4. import { AdTest } from "src/components/AdTest";
  5. import { Loading } from "src/components/Loading";
  6. import { Sidebar } from "src/components/Sidebar";
  7. import { BottomBar } from "src/containers/Editor/BottomBar";
  8. import Panes from "src/containers/Editor/Panes";
  9. import useJson from "src/store/useJson";
  10. import useUser from "src/store/useUser";
  11. import styled from "styled-components";
  12. export const StyledPageWrapper = styled.div`
  13. display: flex;
  14. flex-direction: row;
  15. height: calc(100vh - 28px);
  16. width: 100%;
  17. @media only screen and (max-width: 768px) {
  18. position: fixed;
  19. height: -webkit-fill-available;
  20. flex-direction: column;
  21. }
  22. `;
  23. export const StyledEditorWrapper = styled.div`
  24. width: 100%;
  25. height: 100%;
  26. overflow: hidden;
  27. `;
  28. const EditorPage: React.FC = () => {
  29. const { isReady, query } = useRouter();
  30. const checkSession = useUser(state => state.checkSession);
  31. const fetchJson = useJson(state => state.fetchJson);
  32. const loading = useJson(state => state.loading);
  33. React.useEffect(() => {
  34. // Fetch JSON by query
  35. // Check Session User
  36. if (isReady) {
  37. checkSession();
  38. fetchJson(query.json);
  39. }
  40. }, [checkSession, fetchJson, isReady, query.json]);
  41. if (loading) return <Loading message="Fetching JSON from cloud..." />;
  42. return (
  43. <StyledEditorWrapper>
  44. <Head>
  45. <title>Editor | JSON Crack</title>
  46. <meta name="description" content="View your JSON data in graphs instantly." />
  47. </Head>
  48. <StyledPageWrapper>
  49. <Sidebar />
  50. <AdTest />
  51. <StyledEditorWrapper>
  52. <Panes />
  53. </StyledEditorWrapper>
  54. </StyledPageWrapper>
  55. <BottomBar />
  56. </StyledEditorWrapper>
  57. );
  58. };
  59. export default EditorPage;