add parent placeholders
This commit is contained in:
parent
e2a1892e6b
commit
d32224041a
|
@ -180,7 +180,7 @@ async function performQuickReply(prompt, index) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function buildContextMenu(qr, chainMes=null, hierarchy=[]) {
|
function buildContextMenu(qr, chainMes=null, hierarchy=[], labelHierarchy=[]) {
|
||||||
const tree = {
|
const tree = {
|
||||||
label: qr.label,
|
label: qr.label,
|
||||||
mes: (chainMes&&qr.mes ? `${chainMes} | ` : '') + qr.mes,
|
mes: (chainMes&&qr.mes ? `${chainMes} | ` : '') + qr.mes,
|
||||||
|
@ -199,15 +199,19 @@ function buildContextMenu(qr, chainMes=null, hierarchy=[]) {
|
||||||
if (sub) {
|
if (sub) {
|
||||||
// prevent circular references
|
// prevent circular references
|
||||||
if (hierarchy.indexOf(sub.name) == -1) {
|
if (hierarchy.indexOf(sub.name) == -1) {
|
||||||
|
const nextHierarchy = [...hierarchy, sub.name];
|
||||||
|
const nextLabelHierarchy = [...labelHierarchy, tree.label];
|
||||||
tree.children.push(new MenuHeader(sub.name));
|
tree.children.push(new MenuHeader(sub.name));
|
||||||
sub.quickReplySlots.forEach(subQr=>{
|
sub.quickReplySlots.forEach(subQr=>{
|
||||||
const subInfo = buildContextMenu(subQr, chain?tree.mes:null, [...hierarchy, sub.name]);
|
const subInfo = buildContextMenu(subQr, chain?tree.mes:null, nextHierarchy, nextLabelHierarchy);
|
||||||
tree.children.push(new MenuItem(
|
tree.children.push(new MenuItem(
|
||||||
subInfo.label,
|
subInfo.label,
|
||||||
subInfo.mes,
|
subInfo.mes,
|
||||||
(evt)=>{
|
(evt)=>{
|
||||||
evt.stopPropagation();
|
evt.stopPropagation();
|
||||||
performQuickReply(subInfo.mes);
|
performQuickReply(subInfo.mes.replace(/%%parent(-\d+)?%%/g, (_, index)=>{
|
||||||
|
return nextLabelHierarchy.slice(parseInt(index ?? '-1'))[0];
|
||||||
|
}));
|
||||||
},
|
},
|
||||||
subInfo.children,
|
subInfo.children,
|
||||||
));
|
));
|
||||||
|
|
Loading…
Reference in New Issue