Skip to content

Commit

Permalink
fix: remove side effects from .on and .one methods #44
Browse files Browse the repository at this point in the history
  • Loading branch information
gr2m committed Jul 6, 2015
1 parent 3aec0b5 commit 75393d7
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
'use strict'
module.exports = startListenToChanges

var toObject = require('../utils/to-object')

module.exports = addListenerToOneOrMany

function addListenerToOneOrMany (state, eventName, one, handler) {
if (!state.pouchDBChangesFeedEmitter) {
state.pouchDBChangesFeedEmitter = this.changes({
function startListenToChanges (state) {
this.changes({
since: 'now',
live: true,
include_docs: true
Expand All @@ -26,13 +23,4 @@ function addListenerToOneOrMany (state, eventName, one, handler) {
state.emitter.emit('remove', toObject(doc))
state.emitter.emit('change', 'remove', toObject(doc))
})
}

if (one) {
state.emitter.once(eventName, handler)
} else {
state.emitter.on(eventName, handler)
}

return this
}
3 changes: 3 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@
var exports = module.exports = { hoodieApi: hoodieApi }

var EventEmitter = require('events').EventEmitter
var startListenToChanges = require('./helpers/start-listen-to-changes')

function hoodieApi (options) {
var state = {
emitter: options && options.emitter || new EventEmitter(),
pouchDBChangesFeedEmitter: undefined
}

state.emitter.once('newListener', startListenToChanges.bind(this, state))

return {
db: this,
add: require('./add').bind(this),
Expand Down
6 changes: 3 additions & 3 deletions lib/on.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
'use strict'

var addListenerToOneOrMany = require('../helpers/add-listener-to-one-or-many')

module.exports = on

/**
Expand All @@ -20,5 +18,7 @@ module.exports = on
* callback for event
*/
function on (state, eventName, handler) {
return addListenerToOneOrMany.call(this, state, eventName, false, handler)
state.emitter.on(eventName, handler)

return this
}
6 changes: 3 additions & 3 deletions lib/one.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
'use strict'

var addListenerToOneOrMany = require('../helpers/add-listener-to-one-or-many')

module.exports = one

/**
Expand All @@ -20,5 +18,7 @@ module.exports = one
* callback for event
*/
function one (state, eventName, handler) {
return addListenerToOneOrMany.call(this, state, eventName, true, handler)
state.emitter.once(eventName, handler)

return this
}

0 comments on commit 75393d7

Please sign in to comment.