this repo has no description
1import spacepack from "@moonlight-mod/wp/spacepack_spacepack";
2import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
3import Notices from "@moonlight-mod/wp/notices_notices";
4import { MoonlightBranch } from "@moonlight-mod/types";
5import React from "@moonlight-mod/wp/react";
6import { ThemeDarkIcon } from "@moonlight-mod/wp/discord/components/common/index";
7
8function plural(str: string, num: number) {
9 return `${str}${num > 1 ? "s" : ""}`;
10}
11
12function listener() {
13 if (
14 MoonbaseSettingsStore.shouldShowNotice &&
15 MoonbaseSettingsStore.getExtensionConfigRaw("moonbase", "updateBanner", true)
16 ) {
17 MoonbaseSettingsStore.removeChangeListener(listener);
18
19 const version = MoonbaseSettingsStore.newVersion;
20 const extensionUpdateCount = Object.keys(MoonbaseSettingsStore.updates).length;
21 const hasExtensionUpdates = extensionUpdateCount > 0;
22
23 let message;
24
25 if (version != null) {
26 message =
27 moonlightNode.branch === MoonlightBranch.NIGHTLY
28 ? `A new version of moonlight is available`
29 : `moonlight ${version} is available`;
30 }
31
32 if (hasExtensionUpdates) {
33 let concat = false;
34 if (message == null) {
35 message = "";
36 } else {
37 concat = true;
38 message += ", and ";
39 }
40 message += `${extensionUpdateCount} ${concat ? "" : "moonlight "}${plural(
41 "extension",
42 extensionUpdateCount
43 )} can be updated`;
44 }
45
46 if (message != null) message += ".";
47
48 Notices.addNotice({
49 element: (
50 <div className="moonbase-updates-notice_text-wrapper">
51 <ThemeDarkIcon size="sm" color="currentColor" />
52 {message}
53 </div>
54 ),
55 color: "moonbase-updates-notice",
56 buttons: [
57 {
58 name: "Open Moonbase",
59 onClick: () => {
60 const { open } = spacepack.require("discord/actions/UserSettingsModalActionCreators").default;
61 if (MoonbaseSettingsStore.getExtensionConfigRaw<boolean>("moonbase", "sections", false)) {
62 open("moonbase-extensions");
63 } else {
64 open("moonbase", "0");
65 }
66 return true;
67 }
68 }
69 ]
70 });
71 }
72}
73
74MoonbaseSettingsStore.addChangeListener(listener);