54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
import { DialogManager } from "../../utils/DialogManager.mjs";
|
|
import { localizer } from "../../utils/localizer.mjs";
|
|
import { respondedToQueries } from "../../utils/QueryManager.mjs";
|
|
|
|
export async function queryPrompt(payload) {
|
|
const {
|
|
id,
|
|
users,
|
|
config,
|
|
request,
|
|
} = payload;
|
|
|
|
if (!id) {
|
|
ui.notifications.error(localizer(
|
|
`taf.notifs.error.malformed-socket-payload`,
|
|
{
|
|
event: `query.cancel`,
|
|
details: `taf.notifs.error.missing-id`,
|
|
},
|
|
));
|
|
return;
|
|
};
|
|
|
|
// null/undefined is a special case for "all users but me" by default
|
|
if (users != null && !Array.isArray(users)) {
|
|
ui.notifications.error(localizer(
|
|
`taf.notifs.error.malformed-socket-payload`,
|
|
{
|
|
event: `query.cancel`,
|
|
details: `taf.sockets.user-list-required`,
|
|
},
|
|
));
|
|
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`) {
|
|
respondedToQueries.add(request.id);
|
|
game.socket.emit(`system.taf`, {
|
|
event: `query.submit`,
|
|
payload: {
|
|
id: request.id,
|
|
answers: result.answers,
|
|
},
|
|
});
|
|
};
|
|
};
|