mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-17 19:26:23 +00:00
57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
const { toSerialize } = require('./methods')
|
|
|
|
class FlowClass {
|
|
allCallbacks = []
|
|
flowSerialize = []
|
|
flowRaw = []
|
|
constructor(_flow) {
|
|
if (!Array.isArray(_flow)) throw new Error('Esto debe ser un ARRAY')
|
|
this.flowRaw = _flow
|
|
|
|
this.allCallbacks = _flow
|
|
.map((cbIn) => cbIn.ctx.callbacks)
|
|
.flat(2)
|
|
.map((c, i) => ({ callback: c?.callback, index: i }))
|
|
|
|
const mergeToJsonSerialize = Object.keys(_flow)
|
|
.map((indexObjectFlow) => _flow[indexObjectFlow].toJson())
|
|
.flat(2)
|
|
|
|
this.flowSerialize = toSerialize(mergeToJsonSerialize)
|
|
}
|
|
|
|
find = (keyOrWord, symbol = false) => {
|
|
let capture = false
|
|
let messages = []
|
|
let refSymbol = null
|
|
|
|
const findIn = (
|
|
keyOrWord,
|
|
symbol = false,
|
|
flow = this.flowSerialize
|
|
) => {
|
|
capture = refSymbol?.options?.capture || false
|
|
if (capture) return messages
|
|
|
|
if (symbol) {
|
|
refSymbol = flow.find((c) => c.keyword === keyOrWord)
|
|
if (refSymbol?.answer) messages.push(refSymbol)
|
|
if (refSymbol?.ref) findIn(refSymbol.ref, true)
|
|
} else {
|
|
refSymbol = flow.find((c) => c.keyword.includes(keyOrWord))
|
|
if (refSymbol?.ref) findIn(refSymbol.ref, true)
|
|
return messages
|
|
}
|
|
}
|
|
findIn(keyOrWord, symbol)
|
|
return messages
|
|
}
|
|
|
|
findBySerialize = (refSerialize) =>
|
|
this.flowSerialize.find((r) => r.refSerialize === refSerialize)
|
|
|
|
findIndexByRef = (ref) => this.flowSerialize.findIndex((r) => r.ref === ref)
|
|
}
|
|
|
|
module.exports = FlowClass
|