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 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.
if (player.sourceFiles.length > 0) player.giveExploit(Exploit.N00dles);
if (player.sourceFileLvl(5) > 0 || player.bitNodeN === 5) {

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

@ -26,7 +26,11 @@ import { Locations } from "../../Locations/Locations";
import { CityName } from "../../Locations/data/CityNames";
import { LocationName } from "../../Locations/data/LocationNames";
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 {
getHackingWorkRepGain,
@ -1648,7 +1652,7 @@ export function regenerateHp(this: IPlayer, amt: number): void {
export function hospitalize(this: IPlayer): number {
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.hp = this.max_hp;
@ -2591,7 +2595,7 @@ export function canAccessResleeving(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!", "success");
SnackbarEvents.emit("SF -1 acquired!", "success", 2000);
}
}

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

@ -5296,8 +5296,9 @@ export interface NS extends Singularity {
* Queue a toast (bottom-right notification).
* @param msg - Message in the toast.
* @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.

@ -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 {
const { enqueueSnackbar } = useSnackbar();
useEffect(() =>
SnackbarEvents.subscribe((s, variant) =>
SnackbarEvents.subscribe((s, variant, duration) =>
enqueueSnackbar(<Alert severity={variant}>{s}</Alert>, {
content: (k, m) => <Paper key={k}>{m}</Paper>,
variant: variant,
autoHideDuration: duration,
}),
),
);