1.0.1 • Published 6 years ago

redux-beacon-electron v1.0.1

Weekly downloads
2
License
MIT
Repository
-
Last release
6 years ago

redux-beacon-electron

Integrate Google Analytics with Electron apps, using Redux Beacon.

Electron and Google Analytics aren't really friends anymore because the standard GA library expects:

  • A non-file protocol (and electron loads with file://)
  • Cookie storage for sessions and identifying current user
  • Each page view should have a website-like URL
  • Traffic isn't going through fetch and so you can't monitor it through devtools
  • +probably more.

This library ensures great integration using electron-ga and redux-beacon.

Quick Start

Install:

$ yarn add redux-beacon-electron

Integrate with Redux Beacon

import { 
  createElectronGoogleAnalyticsTarget, 
  actionMetaEventMapper as eventsMapper
} from 'redux-beacon-electron'

const electronTarget = createElectronGoogleAnalyticsTarget({ua: 'UA-XXXX'})
const gaMiddleware = createMiddleware(eventsMapper, electronTarget)

Then, somewhere in your Redux actions (I'm using redux-actions but it doesn't really matter):

// a page view action
const onMounted = createAction('settings/VIEW', x => x, track(() => ({ hit: 'pageview' })))

// a custom event (default hit type)
const setMuteState = createAction('app/SET_MUTE_STATE', x => x, track(action => ({ label: 'toggleMute', value: action.payload ? 1 : 0 })))

Meta Events Mapper

You can use the actionMetaEventMapper if you believe (as I do) that actions should say how they map themselves to analytics events (as opposed to having a big switch case or mapping dictionary in a centralized place).

This means that the form of a Flux Standard Action that is tracked is now:

{
    type:...,
    action: ...,
    meta: {
        track: action=>({hit: "event"|"pageview", category, action, label, value})
    }
}

The track helper function creates the meta structure given a mapping function.

Contributing

Fork, implement, add tests, pull request, get my everlasting thanks and a respectable place here :).

Thanks:

To all Contributors - you make this happen, thanks!

Copyright

Copyright (c) 2018 Dotan Nahum @jondot. See LICENSE for further details.