Add methods to handle the finishing and cancellation of requests to the API

This commit is contained in:
Oliver 2025-11-20 17:12:03 -07:00
parent 860c8b619a
commit d60448640f

View file

@ -173,6 +173,8 @@ async function maybeResolve(requestID) {
if (query.users.length === finishedUserCount) { if (query.users.length === finishedUserCount) {
query.app?.close(); query.app?.close();
query.resolve(query.responses); query.resolve(query.responses);
queries.delete(requestID);
promises.delete(requestID);
} else { } else {
query.app?.render({ parts: [ `users` ] }); query.app?.render({ parts: [ `users` ] });
}; };
@ -189,10 +191,30 @@ export async function notify(userID, content, { includeGM = false } = {}) {
}); });
}; };
export async function finish(requestID) {
// prevent finishing other people's queries
if (!queries.has(requestID)) { return };
const query = queries.get(requestID);
query.resolve(query.responses);
queries.delete(requestID);
promises.delete(requestID);
game.socket.emit(`system.taf`, {
event: `query.cancel`,
payload: { id: requestID },
});
};
export async function cancel(requestID) { export async function cancel(requestID) {
// prevent cancelling other people's queries // prevent cancelling other people's queries
if (!queries.has(requestID)) { return }; if (!queries.has(requestID)) { return };
const query = queries.get(requestID);
query.resolve(null);
queries.delete(requestID);
promises.delete(requestID);
game.socket.emit(`system.taf`, { game.socket.emit(`system.taf`, {
event: `query.cancel`, event: `query.cancel`,
payload: { id: requestID }, payload: { id: requestID },
@ -234,7 +256,7 @@ export const QueryManager = {
query, requery, query, requery,
addResponse, addResponse,
notify, notify,
cancel, finish, cancel,
setApplication, setApplication,
userActivity, userActivity,
}; };