this repo has no description
1import React from "@moonlight-mod/wp/react";
2import Dispatcher from "@moonlight-mod/wp/discord/Dispatcher";
3import { Notice, NoticeCloseButton, PrimaryCTANoticeButton } from "@moonlight-mod/wp/discord/components/common/index";
4import { useStateFromStoresObject } from "@moonlight-mod/wp/discord/packages/flux";
5import NoticesStore from "@moonlight-mod/wp/notices_notices";
6import type { Notice as NoticeType } from "@moonlight-mod/types/coreExtensions/notices";
7
8function popAndDismiss(notice: NoticeType) {
9 NoticesStore.popNotice();
10 if (notice?.onDismiss) {
11 notice.onDismiss();
12 }
13 if (!NoticesStore.shouldShowNotice()) {
14 Dispatcher.dispatch({
15 type: "NOTICE_DISMISS"
16 });
17 }
18}
19
20export default function UpdateNotice() {
21 const { notice } = useStateFromStoresObject([NoticesStore], () => ({
22 notice: NoticesStore.getCurrentNotice()
23 }));
24
25 if (notice == null) return <></>;
26
27 return (
28 <Notice color={notice.color}>
29 {notice.element}
30
31 {(notice.showClose ?? true) && (
32 <NoticeCloseButton onClick={() => popAndDismiss(notice)} noticeType="__moonlight_notice" />
33 )}
34
35 {(notice.buttons ?? []).map((button) => (
36 <PrimaryCTANoticeButton
37 key={button.name}
38 onClick={() => {
39 if (button.onClick()) {
40 popAndDismiss(notice);
41 }
42 }}
43 noticeType="__moonlight_notice"
44 >
45 {button.name}
46 </PrimaryCTANoticeButton>
47 ))}
48 </Notice>
49 );
50}