'use strict'

const express = require('express')
const Slapp = require('slapp')
const ConvoStore = require('slapp-convo-beepboop')
const Context = require('slapp-context-beepboop')

// use `PORT` env var on Beep Boop - default to 3000 locally
var port = process.env.PORT || 3000

var slapp = Slapp({
  //  sets the SLACK_VERIFY_TOKEN env var
  verify_token: process.env.SLACK_VERIFY_TOKEN,
  convo_store: ConvoStore(),
  context: Context()
})


var HELP_TEXT = `
I will respond to the following messages:
\`help\` - to see this message.
\`hi\` - to demonstrate a conversation that tracks state.
\`resetinstagram\` - Delete Instagram account.
\`deleteoauth\` - Delete the customers oAuth Token .
\`tool\` - Provide link to the AuthentiPix oAuth tool.
`

//*********************************************
// Handlers for Messages
//*********************************************

// response to the user typing "help"
slapp.message('help', ['mention', 'direct_message'], (msg) => {
  msg.say(HELP_TEXT)
})

slapp.message('resetinstagram (.*)' ['direct_message'],  (msg, text, account) => {

  msg.say({
    text: 'Are you sure you want to delete the account?',
    attachments:[{
      text: '',
      callback_id: 'delete_confirmation',
      actions:[{
        name:'answer',
        text:':thumbsup:',
        type:'button',
        value:'yes',
        style:'default'
      },
      {
         name:'answer',
        text:':thumbsdown:',
        type:'button',
        value:'No',
        style:'default'
      },
      ]
    }]
  }).route('handleInstagram', {what: account })
})

  .route('handleInstagram', (msg, state)=> {
    msg.say(':smile:' + state.what + 'has been deleted')
  })

// "Conversation" flow that tracks state - kicks off when user says hi, hello or hey
slapp.message('^(hi|hello|hey)$', ['direct_mention', 'direct_message'], (msg, text) => {
    msg
      .say(`${text}, how are you?`)
      // sends next event from user to this route, passing along state
      .route('how-are-you', { greeting: text })
  })
  .route('how-are-you', (msg, state) => {
    var text = (msg.body.event && msg.body.event.text) || ''

    // user may not have typed text as their next action, ask again and re-route
    if (!text) {
      return msg
        .say("Whoops, I'm still waiting to hear how you're doing.")
        .say('How are you?')
        .route('how-are-you', state)
    }

    // add their response to state
    state.status = text

    msg
      .say(`Ok then. What's your favorite color?`)
      .route('color', state)
  })
  .route('color', (msg, state) => {
    var text = (msg.body.event && msg.body.event.text) || ''

    // user may not have typed text as their next action, ask again and re-route
    if (!text) {
      return msg
        .say("I'm eagerly awaiting to hear your favorite color.")
        .route('color', state)
    }

    // add their response to state
    state.color = text

    msg
      .say('Thanks for sharing.')
      .say(`Here's what you've told me so far: \`\`\`${JSON.stringify(state)}\`\`\``)
    // At this point, since we don't route anywhere, the "conversation" is over
  })

// use a regex as well //
slapp.message(/^(thanks|thank you)/i, ['mention', 'direct_message'], (msg) => {
  // You can provide a list of responses, and a random one will be chosen
  // You can also include slack emoji in your responses
  msg.say([
    "You're welcome :smile:",
    'You bet',
    ':+1: Of course',
    'Anytime :sun_with_face: :full_moon_with_face:'
  ])
})

// Return The AuthentiPix oAuth tool//
slapp.message('tool', ['mention', 'direct_message'], (msg) => {
  msg.say({
    text: 'Here is the AuthentiPix Tool ',
    attachments: [{
      text: 'Check AuthentiPix Customers oAuth Status',
      title: 'AuthentiPix oAuth Tool',
      title_link: 'https://aptools.azurewebsites.net/',
      color: '#7CD197'
    }]
  })
})

// Catch-all for any other responses not handled above
slapp.message('.*', ['direct_mention', 'direct_message'], (msg) => {
  // respond only 40% of the time
  if (Math.random() < 0.4) {
    msg.say([':wave:', ':pray:', ':raised_hands:'])
  }
})

// attach Slapp to express server
var server = slapp.attachToExpress(express())

// start http server
server.listen(port, (err) => {
  if (err) {
    return console.error(err)
  }

  console.log(`Listening on port ${port}`)
})

@@ -1030,16 +1030,17 @@
 am (.*)'
+,
  %5B'direc
@@ -1556,18 +1556,17 @@
 am', %7Bwh
-at
+o
 : accoun
@@ -1651,18 +1651,17 @@
 state.wh
-at
+o
  + 'has 

reset instagram command change