toast time config

This commit is contained in:
Olivier Gagnon 2021-12-20 13:29:04 -05:00
parent 25f78f2b30
commit 5dc9ac040a
6 changed files with 16 additions and 10 deletions

@ -86,7 +86,7 @@ export function SpecialLocation(props: IProps): React.ReactElement {
function renderNoodleBar(): React.ReactElement { function renderNoodleBar(): React.ReactElement {
function EatNoodles(): void { function EatNoodles(): void {
SnackbarEvents.emit("You ate some delicious noodles and feel refreshed", "success"); SnackbarEvents.emit("You ate some delicious noodles and feel refreshed", "success", 2000);
N00dles(); // This is the true power of the noodles. N00dles(); // This is the true power of the noodles.
if (player.sourceFiles.length > 0) player.giveExploit(Exploit.N00dles); if (player.sourceFiles.length > 0) player.giveExploit(Exploit.N00dles);
if (player.sourceFileLvl(5) > 0 || player.bitNodeN === 5) { if (player.sourceFileLvl(5) > 0 || player.bitNodeN === 5) {

@ -2134,12 +2134,12 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
message = argsToString([message]); message = argsToString([message]);
dialogBoxCreate(message); dialogBoxCreate(message);
}, },
toast: function (message: any, variant: any = "success"): void { toast: function (message: any, variant: any = "success", duration: any = 2000): void {
if (!["success", "info", "warning", "error"].includes(variant)) if (!["success", "info", "warning", "error"].includes(variant))
throw new Error(`variant must be one of "success", "info", "warning", or "error"`); throw new Error(`variant must be one of "success", "info", "warning", or "error"`);
message = argsToString([message]); message = argsToString([message]);
SnackbarEvents.emit(message, variant); SnackbarEvents.emit(message, variant, duration);
}, },
prompt: function (txt: any): any { prompt: function (txt: any): any {
if (!isString(txt)) { if (!isString(txt)) {

@ -26,7 +26,11 @@ import { Locations } from "../../Locations/Locations";
import { CityName } from "../../Locations/data/CityNames"; import { CityName } from "../../Locations/data/CityNames";
import { LocationName } from "../../Locations/data/LocationNames"; import { LocationName } from "../../Locations/data/LocationNames";
import { Sleeve } from "../../PersonObjects/Sleeve/Sleeve"; import { Sleeve } from "../../PersonObjects/Sleeve/Sleeve";
import { calculateSkill as calculateSkillF, calculateSkillProgress as calculateSkillProgressF, ISkillProgress } from "../formulas/skill"; import {
calculateSkill as calculateSkillF,
calculateSkillProgress as calculateSkillProgressF,
ISkillProgress,
} from "../formulas/skill";
import { calculateIntelligenceBonus } from "../formulas/intelligence"; import { calculateIntelligenceBonus } from "../formulas/intelligence";
import { import {
getHackingWorkRepGain, getHackingWorkRepGain,
@ -1648,7 +1652,7 @@ export function regenerateHp(this: IPlayer, amt: number): void {
export function hospitalize(this: IPlayer): number { export function hospitalize(this: IPlayer): number {
const cost = getHospitalizationCost(this); const cost = getHospitalizationCost(this);
SnackbarEvents.emit(`You've been Hospitalized for ${numeralWrapper.formatMoney(cost)}`, "warning"); SnackbarEvents.emit(`You've been Hospitalized for ${numeralWrapper.formatMoney(cost)}`, "warning", 2000);
this.loseMoney(cost, "hospitalization"); this.loseMoney(cost, "hospitalization");
this.hp = this.max_hp; this.hp = this.max_hp;
@ -2591,7 +2595,7 @@ export function canAccessResleeving(this: IPlayer): boolean {
export function giveExploit(this: IPlayer, exploit: Exploit): void { export function giveExploit(this: IPlayer, exploit: Exploit): void {
if (!this.exploits.includes(exploit)) { if (!this.exploits.includes(exploit)) {
this.exploits.push(exploit); this.exploits.push(exploit);
SnackbarEvents.emit("SF -1 acquired!", "success"); SnackbarEvents.emit("SF -1 acquired!", "success", 2000);
} }
} }

@ -69,7 +69,7 @@ class BitburnerSaveObject {
save(saveString) save(saveString)
.then(() => { .then(() => {
if (!Settings.SuppressSavedGameToast) { if (!Settings.SuppressSavedGameToast) {
SnackbarEvents.emit("Game Saved!", "info") SnackbarEvents.emit("Game Saved!", "info", 2000);
} }
}) })
.catch((err) => console.error(err)); .catch((err) => console.error(err));

@ -5296,8 +5296,9 @@ export interface NS extends Singularity {
* Queue a toast (bottom-right notification). * Queue a toast (bottom-right notification).
* @param msg - Message in the toast. * @param msg - Message in the toast.
* @param variant - Type of toast, must be one of success, info, warning, error. Defaults to success. * @param variant - Type of toast, must be one of success, info, warning, error. Defaults to success.
* @param duration - Duration of toast in ms, defaults to 2000
*/ */
toast(msg: any, variant?: string): void; toast(msg: any, variant?: string, duration?: number): void;
/** /**
* Download a file from the internet. * Download a file from the internet.

@ -16,16 +16,17 @@ export function SnackbarProvider(props: IProps): React.ReactElement {
); );
} }
export const SnackbarEvents = new EventEmitter<[string, "success" | "warning" | "error" | "info"]>(); export const SnackbarEvents = new EventEmitter<[string, "success" | "warning" | "error" | "info", number]>();
export function Snackbar(): React.ReactElement { export function Snackbar(): React.ReactElement {
const { enqueueSnackbar } = useSnackbar(); const { enqueueSnackbar } = useSnackbar();
useEffect(() => useEffect(() =>
SnackbarEvents.subscribe((s, variant) => SnackbarEvents.subscribe((s, variant, duration) =>
enqueueSnackbar(<Alert severity={variant}>{s}</Alert>, { enqueueSnackbar(<Alert severity={variant}>{s}</Alert>, {
content: (k, m) => <Paper key={k}>{m}</Paper>, content: (k, m) => <Paper key={k}>{m}</Paper>,
variant: variant, variant: variant,
autoHideDuration: duration,
}), }),
), ),
); );