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