diff --git a/lib/atom-slack-snippets.coffee b/lib/atom-slack-snippets.coffee
index 823fe28..3f5137d 100644
--- a/lib/atom-slack-snippets.coffee
+++ b/lib/atom-slack-snippets.coffee
@@ -1,6 +1,5 @@
-request = require 'request-promise'
{CompositeDisposable} = require 'atom'
-AtomSlackSnippetsView = require './select-token-view'
+SelectTokenView = require './select-token-view'
module.exports =
@@ -10,15 +9,8 @@ module.exports =
type: 'array'
default: []
items:
- type: 'object'
- properties:
- name:
- type: 'string'
- default: ''
- token:
- type: 'string'
- default: ''
-
+ type: 'string'
+ default: ''
activate: (state) ->
@subscriptions = new CompositeDisposable
diff --git a/lib/post-view.coffee b/lib/post-view.coffee
index 1db5692..569e512 100644
--- a/lib/post-view.coffee
+++ b/lib/post-view.coffee
@@ -4,7 +4,7 @@ request = require 'request-promise'
module.exports =
-class PostView extends View
+class PostView extends SelectListView
# fetches the selected text and posts to the channel (item)
# using token
initialize: (item, token)->
@@ -32,9 +32,10 @@ class PostView extends View
json: true })
.then( (body)=>
if body['ok'] == false
+ # handle error message
console.log body['error']
else
- @panel.hide()
+ # handle success message
)
.catch( (err) => console.log err )
@@ -45,6 +46,7 @@ class PostView extends View
json: true })
.then( (body)=>
if body['ok'] == false
+ # handle error message
console.log body['error']
else
@_postToChannel(body['channel']['id'])
diff --git a/lib/select-channel-view.coffee b/lib/select-channel-view.coffee
index 6e804b5..83f28ec 100644
--- a/lib/select-channel-view.coffee
+++ b/lib/select-channel-view.coffee
@@ -15,11 +15,8 @@ class SelectChannelView extends SelectListView
@channels = []
@users = []
- @addClass 'overlay from-top'
- @setItems @_createItems()
- @panel ?= atom.workspace.addModalPanel(item: @)
- @panel.show()
- @focusFilterEditor()
+ @_create()
+
viewForItem: (item) -> "
#{ item.name }"
@@ -30,13 +27,21 @@ class SelectChannelView extends SelectListView
cancelled: -> @panel.hide()
# PRIVATE METHODS
- _createItems: ->
+ _create: ->
@_getAllItems()
items = []
- for i in [channels..., users...]
+ [ch, u] = [null, null]
+ while not ch? and not u?
+ [ch, u] = [@channels, @users]
+ for i in [ch..., u...]
[v, t] = if i.profile? then [i.profile.real_name, 'user'] else [i.name, 'channel']
items.push({id:i.id, name:v, type:t})
- items
+ @setItems items
+
+ @addClass 'overlay from-top'
+ @panel ?= atom.workspace.addModalPanel(item: @)
+ @panel.show()
+ @focusFilterEditor()
_getAllItems: ->
# loops till we have channels and users to post to,
@@ -44,10 +49,11 @@ class SelectChannelView extends SelectListView
# needs improvement or better logic elsewhere, otherwise blocks
# atom's loading for a bit too much
if @channels.length == 0 and @users.length == 0
- console.log('fetching')
@_getChannels()
@_getUsers()
- setTimeout @_getAllItems.bind(@), 5 * 1000
+ timer = setTimeout @_getAllItems.bind(@), 5 * 1000
+ else
+ clearTimeout timer
_getChannels: ->
request({
@@ -56,8 +62,10 @@ class SelectChannelView extends SelectListView
json: true })
.then( (body)=>
if body['ok'] == false
+ # handle error message
console.log(body['error'])
else
+ console.log('got the chans')
@channels = body['channels']
)
.catch( (err) => console.log(err) )
@@ -69,8 +77,10 @@ class SelectChannelView extends SelectListView
json: true })
.then( (body)=>
if body['ok'] == false
+ # handle error message
console.log(body['error'])
else
+ console.log('got the users')
@users = body['members']
)
.catch( (err) => console.log(err) )
diff --git a/lib/select-token-view.coffee b/lib/select-token-view.coffee
index 7e5e4ec..5c47664 100644
--- a/lib/select-token-view.coffee
+++ b/lib/select-token-view.coffee
@@ -1,4 +1,3 @@
-request = require 'request-promise'
{SelectListView} = require 'atom-space-pen-views'
SelectChannelView = require './select-channel-view'
@@ -26,4 +25,10 @@ class SelectTokenView extends SelectListView
cancelled: -> @panel.hide()
- _createItems: -> atom.config.get('atom-slack-snippets.tokens')
+ _createItems: ->
+ tokens = atom.config.get('atom-slack-snippets.tokens')
+ items = []
+ for item in tokens
+ [n, t] = item.split "|"
+ items.push({'name': n, 'token': t})
+ items