scuttle-poll

1.5.1 • Public • Published

scuttle-poll

Create and vote on polls on ssb

background details relevant to understanding what this module does

repos:

  • git-ssb: ssb://%uUPqduvyGE2mUBIWdVwMg4jYcKUjxN+TF2wG4a7StM8=.sha256
  • github: git@github.com:ssbc/scuttle-poll.git

Usage

Init

var Sbot = require('ssb-client')
Sbot((err, server) => {
  if (err) {
    return console.log(err)
  }
  var ScuttlePoll = require('scuttle-poll')
  var scuttlePoll = ScuttlePoll(server)
})

where server is a scuttlebot instance (or a remote connection provided by ssb-client)

Note - server can also be an observeable which resolves to a scuttlebot instance (this is more experimental, it will turn your sync functions into obs functions)

This returns an object with methods defined in methods.js that looks like:

{
  poll: {
    async: {
      chooseOne:  
      get:
    },
    sync: {
      isPoll:
      isChooseOnePoll:
    } 
  },
  position: {
    async: {
      chooseOne:
      position:
    
    },
    sync: {
      isPosition:
      chooseOneResults:
    } 
  }
}
 

Dependencies

Requires a scuttlebutt server with the following plugins installed:

  • ssb-backlinks

API

var ScuttlePoll = require('scuttle-poll')
var scuttlePoll = ScuttlePoll(server)

Methods

scuttle.poll.sync.isPoll(msg) => Boolean

Takes a msg or the contents of a msg

You can also check for subtypes of poll e.g.

isPoll.chooseOne(msg)
// => Boolean

scuttle.poll.async.get(key, cb)

fetches all the messages associated with a particular poll, and returns a delightfully accessible object:

{
  key:        MessageKey,
  value:      MessageValue,
 
  author:     FeedId,
  title:      String,
  body:       (String|Null),
 
  positions:  Array,
  myPosition: Object,
  results:    Array,
  resolution: Msessage,
  errors:     Object
 
  heads:      Array
}

scuttle.poll.async.publishChooseOne(opts, cb)

// NOT BUILT YET

where opts is an object of form:

{
  title: String,    // required
  choices: Array,   // required
  body: String,
}

and cb is a callback of signature (err, newPollMsg)

Install

With npm installed, run

$ npm install scuttle-poll

Schemas

Poll

Poll message content

{
  type:       'poll',          // required
  details: PollDetails     // required
  title:       String,         // required
  closesAt:    Integer         // required
  body:        String,
  channel,
  mentions,
  recps
}
 

Where PollDetails is an object which has the details needed for each type of poll: Dot, Proposal, Score

Dot vote PollDetails

{
  type: 'dot', // required
  maxStanceScore: 'Integer >= 0', // required
  maxChoiceScore: 'Integer >= 0', //optional
  choices: Array, // required
}

Proposal PollDetails

{
  type: 'proposal', // required
  proposal: String, // required
}

Score PollDetails

{
  type: 'score', // required
  maxChoiceScore: 'Integer >= 0', //required
  choices: Array, // required
}

Position

{
  type:           'position',
  root:            MessageKey,
  details: Object
}

chooseOne details:

{
  choice:
 
}

Acknowledgments

scuttle-poll was inspired by Loomio! Massive thanks to Rob Guthrie and James Kiesel for spending time giving us a brain dump of their data model.

See Also

License

MIT

Package Sidebar

Install

npm i scuttle-poll

Weekly Downloads

13

Version

1.5.1

License

MIT

Unpacked Size

83.2 kB

Total Files

56

Last publish

Collaborators

  • powersource
  • arj03
  • staltz
  • mixmix
  • cel
  • pietgeursen