import { hashHistory } from 'react-router'
import dataApi from 'browser/main/lib/dataApi'
import ee from 'browser/main/lib/eventEmitter'
import AwsMobileAnalyticsConfig from 'browser/main/lib/AwsMobileAnalyticsConfig'

export function createMarkdownNote (storage, folder, dispatch, location, params, config) {
  AwsMobileAnalyticsConfig.recordDynamicCustomEvent('ADD_MARKDOWN')
  AwsMobileAnalyticsConfig.recordDynamicCustomEvent('ADD_ALLNOTE')

  let tags = []
  if (config.ui.tagNewNoteWithFilteringTags && location.pathname.match(/\/tags/)) {
    tags = params.tagname.split(' ')
  }

  return dataApi
    .createNote(storage, {
      type: 'MARKDOWN_NOTE',
      folder: folder,
      title: '',
      tags,
      content: '',
      linesHighlighted: []
    })
    .then(note => {
      const noteHash = note.key
      dispatch({
        type: 'UPDATE_NOTE',
        note: note
      })

      hashHistory.push({
        pathname: location.pathname,
        query: { key: noteHash }
      })
      ee.emit('list:jump', noteHash)
      ee.emit('detail:focus')
    })
}

export function createSnippetNote (storage, folder, dispatch, location, params, config) {
  AwsMobileAnalyticsConfig.recordDynamicCustomEvent('ADD_SNIPPET')
  AwsMobileAnalyticsConfig.recordDynamicCustomEvent('ADD_ALLNOTE')

  let tags = []
  if (config.ui.tagNewNoteWithFilteringTags && location.pathname.match(/\/tags/)) {
    tags = params.tagname.split(' ')
  }

  const defaultLanguage = config.editor.snippetDefaultLanguage === 'Auto Detect' ? null : config.editor.snippetDefaultLanguage

  return dataApi
    .createNote(storage, {
      type: 'SNIPPET_NOTE',
      folder: folder,
      title: '',
      tags,
      description: '',
      snippets: [
        {
          name: '',
          mode: defaultLanguage,
          content: '',
          linesHighlighted: []
        }
      ]
    })
    .then(note => {
      const noteHash = note.key
      dispatch({
        type: 'UPDATE_NOTE',
        note: note
      })
      hashHistory.push({
        pathname: location.pathname,
        query: { key: noteHash }
      })
      ee.emit('list:jump', noteHash)
      ee.emit('detail:focus')
    })
}
