56 lines
1.1 KiB
JavaScript
56 lines
1.1 KiB
JavaScript
import { localizer } from "../utils/Localizer.mjs";
|
|
|
|
export function notify(payload) {
|
|
// #region Payload Validity
|
|
const {
|
|
message,
|
|
users = [],
|
|
type = `info`,
|
|
permanent = false,
|
|
} = payload;
|
|
|
|
if (!message) {
|
|
ui.notifications.error(localizer(
|
|
`RipCrypt.notifs.error.malformed-socket-payload`,
|
|
{
|
|
event: `notify`,
|
|
details: `A message must be provided`,
|
|
},
|
|
));
|
|
return;
|
|
};
|
|
|
|
if (users && !Array.isArray(users)) {
|
|
ui.notifications.error(localizer(
|
|
`RipCrypt.notifs.error.malformed-socket-payload`,
|
|
{
|
|
event: `notify`,
|
|
details: `"users" must be an array of user IDs`,
|
|
},
|
|
));
|
|
return;
|
|
};
|
|
|
|
if (![`info`, `error`, `success`].includes(type)) {
|
|
ui.notifications.error(localizer(
|
|
`RipCrypt.notifs.error.malformed-socket-payload`,
|
|
{
|
|
event: `notify`,
|
|
details: `An invalid notification type was provided.`,
|
|
},
|
|
));
|
|
return;
|
|
}
|
|
// #endregion Payload Validity
|
|
|
|
// Act
|
|
if (users.length === 0 || users.includes(game.user.id)) {
|
|
ui.notifications[type]?.(
|
|
localizer(message),
|
|
{
|
|
console: false,
|
|
permanent,
|
|
},
|
|
);
|
|
};
|
|
};
|