ShowPageAccessoriesModal.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import React, { useEffect, useState } from 'react';
  2. import { usePageAccessoriesModal, PageAccessoriesModalContents } from '~/stores/modal';
  3. function getURLQueryParamValue(key: string) {
  4. // window.location.href is page URL;
  5. const queryStr: URLSearchParams = new URL(window.location.href).searchParams;
  6. return queryStr.get(key);
  7. }
  8. const queryCompareFormat = new RegExp(/([a-z0-9]){24}...([a-z0-9]){24}/);
  9. const ShowPageAccessoriesModal = (): JSX.Element => {
  10. const { data: status, open: openPageAccessories } = usePageAccessoriesModal();
  11. const [isArleadyMounted, setIsArleadyMounted] = useState(false);
  12. useEffect(() => {
  13. const pageIdParams = getURLQueryParamValue('compare');
  14. if (status == null || status.isOpened === true) {
  15. return;
  16. }
  17. if (isArleadyMounted === true) {
  18. return;
  19. }
  20. if (pageIdParams != null) {
  21. if (queryCompareFormat.test(pageIdParams)) {
  22. openPageAccessories(PageAccessoriesModalContents.PageHistory);
  23. }
  24. }
  25. setIsArleadyMounted(true);
  26. }, [openPageAccessories, status, isArleadyMounted]);
  27. return <></>;
  28. };
  29. export default ShowPageAccessoriesModal;