// License: LGPL-3.0-or-later
const R = require('ramda')
const h = require('snabbdom/h')
const uuid = require('uuid')
const flyd = require('flyd')
const modal = require('ff-core/modal')
const mergeAll = require('flyd/module/mergeall')

// show$ is the stream that shows the confirmation modal
const init = show$ => {
  const state = {
    confirm$: flyd.stream()
  , unconfirm$: flyd.stream()
  , ID: uuid.v1() 
  }

  state.modalID$ = mergeAll([
      flyd.map(R.always(state.ID), show$)
    , flyd.map(R.always(null), state.unconfirm$)
    , flyd.map(R.always(null), state.confirm$)])

  return state
}

// msg is optional
const view = (state, msg) =>
  modal({
    id$: state.modalID$
  , thisID: state.ID 
  , notCloseable: true
  , body: h('div', [
      h('h4', msg || 'Are you sure?')
    , h('div', [
        h('button', {attrs: {'data-ff-confirm': true}, on: {click: state.confirm$}}
        , 'Yes')
      , h('button', {attrs: {'data-ff-confirm': false}, on: {click: state.unconfirm$}}
        , 'No')
      ])
    ])
  })


module.exports = {init, view}