Advertisement
Guest User

Untitled

a guest
Apr 18th, 2022
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. import React, { useState, useEffect, useRef } from "react";
  2. import { useParams } from "react-router";
  3. import { useStoreState, useStoreActions } from "easy-peasy";
  4. import { setDoc } from "firebase/firestore";
  5. import BiggerImageModal from "../components/modals/BiggerImageModal";
  6. import "./snippetPartDetailedPage.css";
  7. import { getDownloadURL, ref } from "firebase/storage";
  8. import { storage } from "../firebase/fireInit";
  9.  
  10. const SnippetPartDetailedPage = ({ from }) => {
  11. const { spid } = useParams();
  12. const [item, setItem] = useState(null);
  13. const [modalOpen, setModalOpen] = useState(false);
  14. const image = useRef();
  15. const { characters, locations, items, events } = useStoreState(
  16. (store) => store
  17. );
  18.  
  19. useEffect(() => {
  20. if (item != null) {
  21. if (item.storageUrl != "" && item.storageUrl != null) {
  22. getDownloadURL(ref(storage, item.storageUrl)).then((url) => {
  23. image.current.setAttribute("src", url);
  24. });
  25. } else {
  26. image.current.setAttribute(
  27. "src",
  28. "/images/drawable/icon_description.png"
  29. );
  30. }
  31. }
  32. }, [image, item]);
  33.  
  34. useEffect(() => {
  35. var foundItem = null;
  36. switch (from) {
  37. case "Characters":
  38. foundItem = characters.find((i) => i.id == spid);
  39. break;
  40. case "Locations":
  41. foundItem = locations.find((i) => i.id == spid);
  42. break;
  43. case "Items":
  44. foundItem = items.find((i) => i.id == spid);
  45. break;
  46. case "Events":
  47. foundItem = events.find((i) => i.id == spid);
  48. break;
  49. }
  50. setItem(foundItem);
  51. });
  52.  
  53. return (
  54. <div className="detailedContainer">
  55. <div className="imageNameDiv">
  56. <img
  57. className="detailedImage"
  58. id="portrait"
  59. ref={image}
  60. src={"/images/drawable/icon_description.png"}
  61. onClick={() => setModalOpen(true)}
  62. />
  63. <div className="detailedName">{item ? item.name : ""}</div>
  64. </div>
  65. {modalOpen && (
  66. <BiggerImageModal
  67. storageUrl={item ? item.storageUrl : ""}
  68. setModalOpen={setModalOpen}
  69. item={item}
  70. type={item.type}
  71. detailedImage={image}
  72. />
  73. )}
  74. </div>
  75. );
  76. };
  77.  
  78. export default SnippetPartDetailedPage;
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement