Hey is a decentralized and permissionless social media app built with Lens Protocol 馃尶
1import NewPublication from "@/components/Composer/NewPublication";
2import SuperFollow from "@/components/Shared/Account/SuperFollow";
3import SwitchAccounts from "@/components/Shared/Account/SwitchAccounts";
4import TopUp from "@/components/Shared/Account/TopUp";
5import { useSignupStore } from "@/components/Shared/Auth/Signup";
6import SuperJoin from "@/components/Shared/Group/SuperJoin";
7import ReportAccount from "@/components/Shared/Modal/ReportAccount";
8import ReportPost from "@/components/Shared/Modal/ReportPost";
9import Subscribe from "@/components/Shared/Modal/Subscribe";
10import { Modal } from "@/components/Shared/UI";
11import { useAuthModalStore } from "@/store/non-persisted/modal/useAuthModalStore";
12import { useFundModalStore } from "@/store/non-persisted/modal/useFundModalStore";
13import { useNewPostModalStore } from "@/store/non-persisted/modal/useNewPostModalStore";
14import { useProModalStore } from "@/store/non-persisted/modal/useProModalStore";
15import { useReportAccountModalStore } from "@/store/non-persisted/modal/useReportAccountModalStore";
16import { useReportPostModalStore } from "@/store/non-persisted/modal/useReportPostModalStore";
17import { useSuperFollowModalStore } from "@/store/non-persisted/modal/useSuperFollowModalStore";
18import { useSuperJoinModalStore } from "@/store/non-persisted/modal/useSuperJoinModalStore";
19import { useSwitchAccountModalStore } from "@/store/non-persisted/modal/useSwitchAccountModalStore";
20import { usePostAttachmentStore } from "@/store/non-persisted/post/usePostAttachmentStore";
21import { usePostStore } from "@/store/non-persisted/post/usePostStore";
22import Auth from "./Auth";
23
24const GlobalModals = () => {
25 const { setShow: setShowSwitchAccountModal, show: showSwitchAccountModal } =
26 useSwitchAccountModalStore();
27 const { show: showNewPostModal, setShow: setShowNewPostModal } =
28 useNewPostModalStore();
29 const { editingPost, setEditingPost, setQuotedPost, setPostContent } =
30 usePostStore();
31 const { setAttachments } = usePostAttachmentStore();
32 const { authModalType, showAuthModal, setShowAuthModal } =
33 useAuthModalStore();
34 const {
35 reportingAccount,
36 showReportAccountModal,
37 setShowReportAccountModal
38 } = useReportAccountModalStore();
39 const { reportingPostId, showReportPostModal, setShowReportPostModal } =
40 useReportPostModalStore();
41 const { showFundModal, setShowFundModal } = useFundModalStore();
42 const { showSuperJoinModal, setShowSuperJoinModal, superJoiningGroup } =
43 useSuperJoinModalStore();
44 const {
45 showSuperFollowModal,
46 setShowSuperFollowModal,
47 superFollowingAccount
48 } = useSuperFollowModalStore();
49 const { show: showProModal, setShow: setShowProModal } = useProModalStore();
50 const { screen: signupScreen } = useSignupStore();
51
52 const authModalTitle =
53 authModalType === "signup"
54 ? signupScreen === "choose"
55 ? "Signup"
56 : null
57 : "Login";
58
59 return (
60 <>
61 <Modal
62 onClose={() => setShowReportPostModal(false, reportingPostId)}
63 show={showReportPostModal}
64 title="Report Post"
65 >
66 <ReportPost postId={reportingPostId} />
67 </Modal>
68 <Modal
69 onClose={() => setShowReportAccountModal(false, reportingAccount)}
70 show={showReportAccountModal}
71 title="Report account"
72 >
73 <ReportAccount account={reportingAccount} />
74 </Modal>
75 <Modal
76 onClose={() => setShowSwitchAccountModal(false)}
77 show={showSwitchAccountModal}
78 size="xs"
79 title="Switch Account"
80 >
81 <SwitchAccounts />
82 </Modal>
83 <Modal
84 onClose={() => setShowAuthModal(false, authModalType)}
85 show={showAuthModal}
86 title={authModalTitle}
87 >
88 <Auth />
89 </Modal>
90 <Modal
91 onClose={() => {
92 setShowNewPostModal(false);
93 setPostContent("");
94 setEditingPost(undefined);
95 setQuotedPost(undefined);
96 setAttachments([]);
97 }}
98 show={showNewPostModal}
99 size="md"
100 title={editingPost ? "Edit post" : "Create post"}
101 >
102 <NewPublication className="!rounded-b-xl !rounded-t-none border-none" />
103 </Modal>
104 <Modal
105 onClose={() => setShowFundModal({ showFundModal: false })}
106 show={showFundModal}
107 title="Top-up your account"
108 >
109 <TopUp />
110 </Modal>
111 <Modal
112 onClose={() => setShowSuperJoinModal(false, superJoiningGroup)}
113 show={showSuperJoinModal}
114 title="Super Join"
115 >
116 <SuperJoin />
117 </Modal>
118 <Modal
119 onClose={() => setShowSuperFollowModal(false, superFollowingAccount)}
120 show={showSuperFollowModal}
121 title="Super Follow"
122 >
123 <SuperFollow />
124 </Modal>
125 <Modal
126 onClose={() => setShowProModal(false)}
127 show={showProModal}
128 size="md"
129 >
130 <Subscribe />
131 </Modal>
132 </>
133 );
134};
135
136export default GlobalModals;