74 lines
2.3 kB
1
import spacepack from "@moonlight-mod/wp/spacepack_spacepack";
2
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
3
import Notices from "@moonlight-mod/wp/notices_notices";
4
import { MoonlightBranch } from "@moonlight-mod/types";
5
import React from "@moonlight-mod/wp/react";
6
import { ThemeDarkIcon } from "@moonlight-mod/wp/discord/components/common/index";
7
8
function plural(str: string, num: number) {
9
return `${str}${num > 1 ? "s" : ""}`;
10
}
11
12
function 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
74
MoonbaseSettingsStore.addChangeListener(listener);
75