Skip to content

Commit

Permalink
feat(analytics): refactoring middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
pedroapfilho committed May 28, 2021
1 parent 6f820ec commit 90171ab
Show file tree
Hide file tree
Showing 5 changed files with 294 additions and 241 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import type { AnalyticsPayload } from 'middleware/analyticsMiddleware/types'
import { AnalyticsKey } from 'middleware/analyticsMiddleware/types'
import { generateUniqueUserId } from 'middleware/analyticsMiddleware/utils'
import { v4 } from 'uuid'

import queuevent from 'utils/queuevent'

const analytics = queuevent<AnalyticsKey, AnalyticsPayload>({
queueCallback: async (rawEvents) => {
const res = await fetch('/wallet-options-v4.json')
const options = await res.json()

const analyticsURL = `${options.domains.api}/events/publish`

const id = rawEvents.find((event) => event.payload.id)?.payload.id

const randomId = v4()

const nabuId = rawEvents.find((event) => event.payload.nabuId)?.payload.nabuId || null

const context: { traits: { nabu_id: string | null } } = {
traits: {
nabu_id: nabuId
}
}

const events = rawEvents.map((event) => {
const name = event.key

const { id, nabuId, originalTimestamp, type, ...properties } = event.payload

return {
id: id ? generateUniqueUserId(id) : generateUniqueUserId(randomId),
nabuId,
name,
originalTimestamp,
properties,
type
}
})

await fetch(analyticsURL, {
body: JSON.stringify({
context,
events,
id: id ? generateUniqueUserId(id) : generateUniqueUserId(randomId)
}),
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
method: 'POST'
})
},
queueName: 'analytics'
})

export default analytics

0 comments on commit 90171ab

Please sign in to comment.