taf/module/sockets/dataRequest.mjs

51 lines
1.1 KiB
JavaScript

import { DialogManager } from "../utils/DialogManager.mjs";
export async function dataRequest(payload) {
const {
id,
users,
config,
request,
} = payload;
if (!id) {
ui.notifications.error(game.i18n.format(
`taf.notifs.error.malformed-socket-payload`,
{
event: `query.prompt`,
details: `A request ID must be provided`,
}),
);
return;
};
// null/undefined is a special case for "all users but me" by default
if (users != null && !Array.isArray(users)) {
ui.notifications.error(game.i18n.format(
`taf.notifs.error.malformed-socket-payload`,
{
event: `query.prompt`,
details: `A list of users must be provided`,
}),
);
return;
};
if (users != null && !users.includes(game.user.id)) { return };
request.id = id;
const result = await DialogManager.ask(request, config);
if (result.state === `fronted`) {
return;
} else if (result.state === `errored`) {
ui.notifications.error(result.error);
} else if (result.state === `prompted`) {
game.socket.emit(`system.taf`, {
event: `query.submit`,
payload: {
id: request.id,
answers: result.answers,
},
});
};
};