Dialog: Provide hints for the sender name
The dialog form has a simple text input for the sender's name. This can lead to typos or mistakes if the GM wants to send a message using the same sender name as a previous message. Add a new function that goes through all the players' histories and compiles a list of all unique senders, which we can then use to build a list of hints that will be used to show suggestions when the GM fills the sender name in the form. This is currently quite ineficcient as it re-does all the work for every single dialog. A better way would be to cache it or store it explicitly somewhere when we send a message, but this would require a way for the GM to edit it.
This commit is contained in:
parent
30c0324799
commit
d2b14dbe94
3 changed files with 64 additions and 0 deletions
|
@ -50,3 +50,28 @@ export async function create_history_journal(user) {
|
|||
return user.setFlag(module_id, history_flag, journal.id).then(() => journal);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Go through all the user's histories to build a list of existing senders,
|
||||
* so that they can be displayed or re-used.
|
||||
* The final list is sorted and does not contain duplicates, as one sender
|
||||
* can send messages to multiple players at once.
|
||||
* @returns {String[]} A sorted array of the sender names, if any
|
||||
*/
|
||||
export function get_existing_senders() {
|
||||
/** @type {String[]} */
|
||||
let senders = []
|
||||
for (let user of game.users.players) {
|
||||
/** @type {JournalEntry} */
|
||||
let history = game.journal.get(user.getFlag(module_id, history_flag))
|
||||
if (!history) {
|
||||
continue;
|
||||
}
|
||||
for (let page of history.pages) {
|
||||
if (!senders.includes(page.name)) {
|
||||
senders.push(page.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
return senders.sort();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue