You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by Sam Ruby <ru...@apache.org> on 2015/12/18 14:31:15 UTC

[whimsy.git] [1/1] Commit b7deb67: initial version of checkmail button

Commit b7deb6714d445bcd6d4ed44cd18d68c9e6d016b4:
    initial version of checkmail button


Branch: refs/heads/secmail
Author: Sam Ruby <ru...@intertwingly.net>
Committer: Sam Ruby <ru...@intertwingly.net>
Pusher: rubys <ru...@apache.org>

------------------------------------------------------------
www/secmail/Gemfile                                          | + -
www/secmail/Rakefile                                         | ++++++ 
www/secmail/server.rb                                        | +++++ 
www/secmail/views/actions/check-mail.json.rb                 | ++++ 
www/secmail/views/index.js.rb                                | +++++++++ --
------------------------------------------------------------
28 changes: 25 additions, 3 deletions.
------------------------------------------------------------


diff --git a/www/secmail/Gemfile b/www/secmail/Gemfile
index 7acaa05..75bdfd5 100644
--- a/www/secmail/Gemfile
+++ b/www/secmail/Gemfile
@@ -6,7 +6,7 @@ gem 'zip'
 gem 'whimsy-asf'
 gem 'sinatra'
 gem 'sanitize'
-gem 'wunderbar', '~> 1.0.10'
+gem 'wunderbar', '~> 1.0.11'
 gem 'ruby2js', '~> 2.0.11'
 gem 'execjs'
 
diff --git a/www/secmail/Rakefile b/www/secmail/Rakefile
index 33e2fc8..fb0d600 100644
--- a/www/secmail/Rakefile
+++ b/www/secmail/Rakefile
@@ -33,6 +33,12 @@ end
 desc 'WebServer that provides an interface to explore emails'
 task :server => :bundle do
   ENV['RACK_ENV']='production'
+
+  require 'wunderbar'
+  module Wunderbar::Listen
+    EXCLUDE = [ARCHIVE, 'public/assets']
+  end
+
   require 'wunderbar/listen'
 end
 
diff --git a/www/secmail/server.rb b/www/secmail/server.rb
index 26b7a6c..a03f32b 100644
--- a/www/secmail/server.rb
+++ b/www/secmail/server.rb
@@ -31,6 +31,11 @@
   _html :message
 end
 
+# posted actions
+post '/actions/:file' do
+  _json :"actions/#{params[:file]}"
+end
+
 # mark a single message as deleted
 delete %r{^/(\d+)/(\w+)/$} do |month, hash|
   success = false
diff --git a/www/secmail/views/actions/check-mail.json.rb b/www/secmail/views/actions/check-mail.json.rb
new file mode 100644
index 0000000..625d557
--- /dev/null
+++ b/www/secmail/views/actions/check-mail.json.rb
@@ -0,0 +1,4 @@
+Mailbox.fetch @mbox
+Mailbox.new(@mbox).parse
+
+{success: true}
diff --git a/www/secmail/views/index.js.rb b/www/secmail/views/index.js.rb
index c9bd1da..a94e0da 100644
--- a/www/secmail/views/index.js.rb
+++ b/www/secmail/views/index.js.rb
@@ -7,6 +7,7 @@ def initialize
     @selected = nil
     @messages = []
     @undoStack = []
+    @checking = false
   end
 
   def render
@@ -45,7 +46,7 @@ def render
     end
 
     _button.btn.btn_success 'check for new mail', onClick: self.refresh,
-      disabled: true
+      disabled: @checking
 
     unless @undoStack.empty?
       _button.btn.btn_info 'undo delete', onClick: self.undo
@@ -81,7 +82,6 @@ def componentDidUpdate()
 
   # fetch a month's worth of messages
   def fetch_month()
-    console.log @nextmbox
     HTTP.get("/#{@nextmbox}", :json) do |response|
       # update latest mbox
       @nextmbox = response.mbox
@@ -121,6 +121,13 @@ def undo(event)
     end
   end
 
+  def refresh(event)
+    @checking = true
+    HTTP.post "actions/check-mail", mbox: @@mbox do |response|
+      location.reload()
+    end
+  end
+
   # handle keyboard events
   def keydown(event)
     if event.keyCode == 38 # up