Skip to content

Commit

Permalink
fix(bot): ⚡ working callback Phase 1
Browse files Browse the repository at this point in the history
  • Loading branch information
leifermendez committed Dec 30, 2022
1 parent c62af73 commit 952ce86
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 43 deletions.
20 changes: 6 additions & 14 deletions packages/bot/core/core.class.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,24 +115,16 @@ class CoreClass {

// 📄 Se encarga de revisar si el contexto del mensaje tiene callback y ejecutarlo
const cbEveryCtx = (inRef) => {
const indexFlow = this.flowClass.findIndexByRef(inRef)
this.flowClass.allCallbacks[indexFlow].callback(
messageCtxInComming,
{
fallBack,
flowDynamic,
}
)
this.flowClass.allCallbacks[inRef](messageCtxInComming, {
fallBack,
flowDynamic,
})
}

// 📄 [options: callback]: Si se tiene un callback se ejecuta
if (!fallBackFlag) {
if (refToContinue && prevMsg?.options?.callback) {
cbEveryCtx(refToContinue?.ref)
} else {
for (const ite of this.flowClass.find(body)) {
cbEveryCtx(ite?.ref)
}
for (const ite of this.flowClass.find(body)) {
cbEveryCtx(ite?.ref)
}
}

Expand Down
14 changes: 3 additions & 11 deletions packages/bot/io/flow.class.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const { toSerialize } = require('./methods/toSerialize')
const { flatObject } = require('../utils/flattener')

class FlowClass {
allCallbacks = []
Expand All @@ -8,7 +9,8 @@ class FlowClass {
if (!Array.isArray(_flow)) throw new Error('Esto debe ser un ARRAY')
this.flowRaw = _flow

this.allCallbacks = this.parseCallBacks(this.flowRaw)
this.allCallbacks = flatObject(_flow)
console.log('[🙌🙌🙌]', this.allCallbacks)

const mergeToJsonSerialize = Object.keys(_flow)
.map((indexObjectFlow) => _flow[indexObjectFlow].toJson())
Expand All @@ -17,16 +19,6 @@ class FlowClass {
this.flowSerialize = toSerialize(mergeToJsonSerialize)
}

/**
* Buscar y aplanar todos los callbacks
* @param {*} inFlow
*/
parseCallBacks = (inFlow) =>
inFlow
.map((cbIn) => cbIn.ctx.callbacks)
.flat(2)
.map((c, i) => ({ callback: c?.callback, index: i }))

find = (keyOrWord, symbol = false, overFlow = null) => {
keyOrWord = `${keyOrWord}`
let capture = false
Expand Down
20 changes: 2 additions & 18 deletions packages/bot/io/methods/addAnswer.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
const { flatObject } = require('../../utils/flattener')
const { generateRef } = require('../../utils/hash')
const { toJson } = require('./toJson')
/**
Expand Down Expand Up @@ -35,24 +36,7 @@ const addAnswer =
* Esta funcion aplana y busca los callback anidados de los hijos
* @returns
*/
const getCbFromNested = () => {
const cbNestedList = Array.isArray(nested) ? nested : []
const cbNestedObj = cbNestedList.map(({ ctx }) => ctx?.callbacks)
const queueCb = cbNestedObj.reduce((acc, current) => {
const getKeys = Object.keys(current)
const parse = getKeys.map((icb, i) => ({
[icb]: Object.values(current)[i],
}))
return [...acc, ...parse]
}, [])

const flatObj = {}
for (const iteration of queueCb) {
const [keyCb] = Object.keys(iteration)
flatObj[keyCb] = iteration[keyCb]
}
return flatObj
}
const getCbFromNested = () => flatObject(nested)

const callback = typeof cb === 'function' ? cb : () => null

Expand Down
25 changes: 25 additions & 0 deletions packages/bot/utils/flattener.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
const flatObject = (listArray = []) => {
const cbNestedList = Array.isArray(listArray) ? listArray : []

if (!listArray.length) return {}

const cbNestedObj = cbNestedList
.map(({ ctx }) => ctx?.callbacks)
.filter((i) => !!i)
const queueCb = cbNestedObj.reduce((acc, current) => {
const getKeys = Object.keys(current)
const parse = getKeys.map((icb, i) => ({
[icb]: Object.values(current)[i],
}))
return [...acc, ...parse]
}, [])

const flatObj = {}
for (const iteration of queueCb) {
const [keyCb] = Object.keys(iteration)
flatObj[keyCb] = iteration[keyCb]
}
return flatObj
}

module.exports = { flatObject }

0 comments on commit 952ce86

Please sign in to comment.