Napolean Paced Mischeviously

    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

    Install

    npm i scuttle-poll

    DownloadsWeekly Downloads

    21

    Version

    1.5.1

    License

    MIT

    Unpacked Size

    83.2 kB

    Total Files

    56

    Last publish

    Collaborators

    • mycognosist
    • happy0
    • staltz
    • arj03
    • pfrazee
    • noffle
    • ahdinosaur
    • dominictarr
    • mixmix
    • cel
    • mmckegg
    • pietgeursen
    • christianbundy
    • regular
    • cryp7ix
    • andregarzia
    • aljoscha-meyer
    • luandro
    • blakeakapita