Merge pull request #3423 from HeinousTugboat/htugboat/toast-part-deux

Renames SnackbarVariant to ToastVariant, adds enum to ns
This commit is contained in:
hydroflame
2022-04-13 01:57:31 -04:00
committed by GitHub
10 changed files with 36 additions and 30 deletions

View File

@@ -2,7 +2,7 @@ import { Player } from "./Player";
import { Router } from "./ui/GameRoot";
import { removeLeadingSlash } from "./Terminal/DirectoryHelpers";
import { Terminal } from "./Terminal";
import { SnackbarEvents, SnackbarVariant } from "./ui/React/Snackbar";
import { SnackbarEvents, ToastVariant } from "./ui/React/Snackbar";
import { IMap, IReturnStatus } from "./types";
import { GetServer } from "./Server/AllServers";
import { ImportPlayerData, SaveData, saveObject } from "./SaveObject";
@@ -111,7 +111,7 @@ function initAppNotifier(): void {
if (!fn) fn = Terminal.print;
fn.bind(Terminal)(message);
},
toast: (message: string, type: SnackbarVariant, duration = 2000) => SnackbarEvents.emit(message, type, duration),
toast: (message: string, type: ToastVariant, duration = 2000) => SnackbarEvents.emit(message, type, duration),
};
// Will be consumud by the electron wrapper.
@@ -126,7 +126,7 @@ function initSaveFunctions(): void {
saveObject.exportGame();
} catch (error) {
console.log(error);
SnackbarEvents.emit("Could not export game.", SnackbarVariant.ERROR, 2000);
SnackbarEvents.emit("Could not export game.", ToastVariant.ERROR, 2000);
}
},
triggerScriptsExport: (): void => exportScripts("*", Player.getHomeComputer()),
@@ -175,7 +175,7 @@ function initElectronBridge(): void {
})
.catch((error: any) => {
console.log(error);
SnackbarEvents.emit("Could not save game.", SnackbarVariant.ERROR, 2000);
SnackbarEvents.emit("Could not save game.", ToastVariant.ERROR, 2000);
});
});
bridge.receive("trigger-game-export", () => {
@@ -183,7 +183,7 @@ function initElectronBridge(): void {
(window as any).appSaveFns.triggerGameExport();
} catch (error) {
console.log(error);
SnackbarEvents.emit("Could not export game.", SnackbarVariant.ERROR, 2000);
SnackbarEvents.emit("Could not export game.", ToastVariant.ERROR, 2000);
}
});
bridge.receive("trigger-scripts-export", () => {
@@ -191,7 +191,7 @@ function initElectronBridge(): void {
(window as any).appSaveFns.triggerScriptsExport();
} catch (error) {
console.log(error);
SnackbarEvents.emit("Could not export scripts.", SnackbarVariant.ERROR, 2000);
SnackbarEvents.emit("Could not export scripts.", ToastVariant.ERROR, 2000);
}
});
}

View File

@@ -24,7 +24,7 @@ import { joinFaction } from "../../Faction/FactionHelpers";
import { use } from "../../ui/Context";
import { dialogBoxCreate } from "../../ui/React/DialogBox";
import { SnackbarEvents, SnackbarVariant } from "../../ui/React/Snackbar";
import { SnackbarEvents, ToastVariant } from "../../ui/React/Snackbar";
import { N00dles } from "../../utils/helpers/N00dles";
import { Exploit } from "../../Exploits/Exploit";
import { applyAugmentation } from "../../Augmentation/AugmentationHelpers";
@@ -91,7 +91,7 @@ export function SpecialLocation(props: IProps): React.ReactElement {
function renderNoodleBar(): React.ReactElement {
function EatNoodles(): void {
SnackbarEvents.emit("You ate some delicious noodles and feel refreshed", SnackbarVariant.SUCCESS, 2000);
SnackbarEvents.emit("You ate some delicious noodles and feel refreshed", ToastVariant.SUCCESS, 2000);
N00dles(); // This is the true power of the noodles.
if (player.sourceFiles.length > 0) player.giveExploit(Exploit.N00dles);
if (player.sourceFileLvl(5) > 0 || player.bitNodeN === 5) {

View File

@@ -90,13 +90,14 @@ import {
BitNodeMultipliers as IBNMults,
Server as IServerDef,
RunningScript as IRunningScriptDef,
// ToastVariant,
} from "./ScriptEditor/NetscriptDefinitions";
import { NetscriptSingularity } from "./NetscriptFunctions/Singularity";
import { toNative } from "./NetscriptFunctions/toNative";
import { dialogBoxCreate } from "./ui/React/DialogBox";
import { SnackbarEvents, SnackbarVariant } from "./ui/React/Snackbar";
import { SnackbarEvents, ToastVariant } from "./ui/React/Snackbar";
import { checkEnum } from "./utils/helpers/checkEnum";
import { Flags } from "./NetscriptFunctions/Flags";
@@ -2305,12 +2306,12 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
const message = helper.string("alert", "message", _message);
dialogBoxCreate(message);
},
toast: function (_message: unknown, _variant: unknown = SnackbarVariant.SUCCESS, duration: any = 2000): void {
toast: function (_message: unknown, _variant: unknown = ToastVariant.SUCCESS, duration: any = 2000): void {
updateDynamicRam("toast", getRamCost(Player, "toast"));
const message = helper.string("toast", "message", _message);
const variant = helper.string("toast", "variant", _variant);
if (!checkEnum(SnackbarVariant, variant))
throw new Error(`variant must be one of ${Object.values(SnackbarVariant).join(", ")}`);
if (!checkEnum(ToastVariant, variant))
throw new Error(`variant must be one of ${Object.values(ToastVariant).join(", ")}`);
SnackbarEvents.emit(message, variant, duration);
},
prompt: function (_txt: unknown, options?: { type?: string; options?: string[] }): Promise<boolean | string> {
@@ -2554,6 +2555,9 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
}
},
flags: Flags(workerScript.args),
enum: {
toast: ToastVariant,
},
};
// add undocumented functions

View File

@@ -62,7 +62,7 @@ import { Money } from "../../ui/React/Money";
import React from "react";
import { serverMetadata } from "../../Server/data/servers";
import { SnackbarEvents, SnackbarVariant } from "../../ui/React/Snackbar";
import { SnackbarEvents, ToastVariant } from "../../ui/React/Snackbar";
import { calculateClassEarnings } from "../formulas/work";
import { achievements } from "../../Achievements/Achievements";
import { FactionNames } from "../../Faction/data/FactionNames";
@@ -1737,7 +1737,7 @@ export function hospitalize(this: IPlayer): number {
const cost = getHospitalizationCost(this);
SnackbarEvents.emit(
`You've been Hospitalized for ${numeralWrapper.formatMoney(cost)}`,
SnackbarVariant.WARNING,
ToastVariant.WARNING,
2000,
);
@@ -2714,7 +2714,7 @@ export function canAccessGrafting(this: IPlayer): boolean {
export function giveExploit(this: IPlayer, exploit: Exploit): void {
if (!this.exploits.includes(exploit)) {
this.exploits.push(exploit);
SnackbarEvents.emit("SF -1 acquired!", SnackbarVariant.SUCCESS, 2000);
SnackbarEvents.emit("SF -1 acquired!", ToastVariant.SUCCESS, 2000);
}
}
@@ -2723,7 +2723,7 @@ export function giveAchievement(this: IPlayer, achievementId: string): void {
if (!achievement) return;
if (!this.achievements.map((a) => a.ID).includes(achievementId)) {
this.achievements.push({ ID: achievementId, unlockedOn: new Date().getTime() });
SnackbarEvents.emit(`Unlocked Achievement: "${achievement.Name}"`, SnackbarVariant.SUCCESS, 2000);
SnackbarEvents.emit(`Unlocked Achievement: "${achievement.Name}"`, ToastVariant.SUCCESS, 2000);
}
}

View File

@@ -11,7 +11,7 @@ import { SourceFileFlags } from "./SourceFile/SourceFileFlags";
import { loadStockMarket, StockMarket } from "./StockMarket/StockMarket";
import { staneksGift, loadStaneksGift } from "./CotMG/Helper";
import { SnackbarEvents, SnackbarVariant } from "./ui/React/Snackbar";
import { SnackbarEvents, ToastVariant } from "./ui/React/Snackbar";
import * as ExportBonus from "./ExportBonus";
@@ -114,7 +114,7 @@ class BitburnerSaveObject {
pushGameSaved(saveData);
if (emitToastEvent) {
SnackbarEvents.emit("Game Saved!", SnackbarVariant.INFO, 2000);
SnackbarEvents.emit("Game Saved!", ToastVariant.INFO, 2000);
}
return resolve();
})

View File

@@ -6227,7 +6227,7 @@ export interface NS {
* @param variant - Type of toast, must be one of success, info, warning, error. Defaults to success.
* @param duration - Duration of toast in ms. Can also be `null` to create a persistent toast. Defaults to 2000
*/
toast(msg: any, variant?: "success" | "info" | "warning" | "error", duration?: number | null): void;
toast(msg: any, variant?: ToastVariantValues, duration?: number | null): void;
/**
* Download a file from the internet.
@@ -6423,7 +6423,7 @@ export interface NS {
*/
getSharePower(): number;
// enum: NSEnums;
enum: NSEnums;
}
/** @public */
@@ -6434,9 +6434,11 @@ export enum ToastVariant {
INFO = "info",
}
export type ToastVariantValues = `${ToastVariant}`;
/** @public */
export interface NSEnums {
toast: ToastVariant;
toast: typeof ToastVariant;
}
/**

View File

@@ -11,7 +11,7 @@ import { StyleEditorButton } from "./StyleEditorButton";
import { ThemeEntry } from "./ThemeEntry";
import { ThemeCollaborate } from "./ThemeCollaborate";
import { Modal } from "../../ui/React/Modal";
import { SnackbarEvents, SnackbarVariant } from "../../ui/React/Snackbar";
import { SnackbarEvents, ToastVariant } from "../../ui/React/Snackbar";
interface IProps {
router: IRouter;
@@ -54,7 +54,7 @@ export function ThemeBrowser({ router }: IProps): React.ReactElement {
UNDO
</Button>
</>,
SnackbarVariant.INFO,
ToastVariant.INFO,
30000,
);
}

View File

@@ -50,7 +50,7 @@ import { calculateAchievements } from "./Achievements/Achievements";
import React from "react";
import { setupUncaughtPromiseHandler } from "./UncaughtPromiseHandler";
import { Button, Typography } from "@mui/material";
import { SnackbarEvents, SnackbarVariant } from "./ui/React/Snackbar";
import { SnackbarEvents, ToastVariant } from "./ui/React/Snackbar";
const Engine: {
_lastUpdate: number;
@@ -495,7 +495,7 @@ function warnAutosaveDisabled(): void {
</Button>
</>
);
SnackbarEvents.emit(warningToast, SnackbarVariant.WARNING, 5000);
SnackbarEvents.emit(warningToast, ToastVariant.WARNING, 5000);
}
export { Engine };

View File

@@ -27,7 +27,7 @@ import PaletteIcon from "@mui/icons-material/Palette";
import { FileDiagnosticModal } from "../../Diagnostic/FileDiagnosticModal";
import { ConfirmationModal } from "./ConfirmationModal";
import { SnackbarEvents, SnackbarVariant } from "./Snackbar";
import { SnackbarEvents, ToastVariant } from "./Snackbar";
import { Settings } from "../../Settings/Settings";
import { DeleteGameButton } from "./DeleteGameButton";
@@ -129,7 +129,7 @@ export function GameOptionsRoot(props: IProps): React.ReactElement {
setImportData(data);
setImportSaveOpen(true);
} catch (ex: any) {
SnackbarEvents.emit(ex.toString(), SnackbarVariant.ERROR, 5000);
SnackbarEvents.emit(ex.toString(), ToastVariant.ERROR, 5000);
}
}
@@ -139,7 +139,7 @@ export function GameOptionsRoot(props: IProps): React.ReactElement {
try {
await saveObject.importGame(importData.base64);
} catch (ex: any) {
SnackbarEvents.emit(ex.toString(), SnackbarVariant.ERROR, 5000);
SnackbarEvents.emit(ex.toString(), ToastVariant.ERROR, 5000);
}
setImportSaveOpen(false);

View File

@@ -10,7 +10,7 @@ interface IProps {
children: React.ReactNode | React.ReactNode[];
}
export enum SnackbarVariant {
export enum ToastVariant {
SUCCESS = "success",
WARNING = "warning",
ERROR = "error",
@@ -43,7 +43,7 @@ export function SnackbarProvider(props: IProps): React.ReactElement {
);
}
export const SnackbarEvents = new EventEmitter<[string | React.ReactNode, SnackbarVariant, number]>();
export const SnackbarEvents = new EventEmitter<[string | React.ReactNode, ToastVariant, number]>();
export function Snackbar(): React.ReactElement {
const { enqueueSnackbar, closeSnackbar } = useSnackbar();