diff options
author | jessib <jessib@riseup.net> | 2014-01-07 12:57:01 -0800 |
---|---|---|
committer | jessib <jessib@riseup.net> | 2014-01-07 12:57:01 -0800 |
commit | c7e66852324714a166dd35dc3d5873a0053dcb9b (patch) | |
tree | 4d306a960fbf1491510573640643f91af8fc208c /users/app | |
parent | b920c144ef70613414a702e468ab7889659a03da (diff) |
Some refactoring, to simplify user model, optimize, and allow messages to be sorted by date (although are not now.)
Also, rather than use whenever gem, will have cron job created to call task.
Diffstat (limited to 'users/app')
-rw-r--r-- | users/app/controllers/v1/messages_controller.rb | 29 | ||||
-rw-r--r-- | users/app/designs/message/by_user_ids_to_show.js | 7 | ||||
-rw-r--r-- | users/app/designs/message/by_user_ids_to_show_and_created_at.js | 8 | ||||
-rw-r--r-- | users/app/models/message.rb | 4 | ||||
-rw-r--r-- | users/app/models/user.rb | 14 |
5 files changed, 38 insertions, 24 deletions
diff --git a/users/app/controllers/v1/messages_controller.rb b/users/app/controllers/v1/messages_controller.rb index b58dfe9..371b83e 100644 --- a/users/app/controllers/v1/messages_controller.rb +++ b/users/app/controllers/v1/messages_controller.rb @@ -1,30 +1,27 @@ module V1 class MessagesController < ApplicationController - before_filter :authorize_admin # not sure this is best way + skip_before_filter :verify_authenticity_token + before_filter :authorize + respond_to :json - # for now, will not pass unseen, so unseen will always be true - def user_messages(unseen = true) - user = User.find(params[:user_id]) - render json: (user ? user.messages : [] ) + def index + render json: (current_user ? current_user.messages : [] ) end - # routes ensure this is only for PUT - def mark_read - - # make sure user and message exist - if (user = User.find(params[:user_id])) && Message.find(params[:message_id]) - - user.message_ids_seen << params[:message_id] if !user.message_ids_seen.include?(params[:message_id]) #TODO: is it quicker to instead call uniq! after adding? - user.message_ids_to_see.delete(params[:message_id]) - user.save + def update + message = Message.find(params[:id]) + if (message and current_user) + message.user_ids_to_show.delete(current_user.id) + # is it necessary to keep track of what users have already seen it?: + message.user_ids_have_shown << current_user.id if !message.user_ids_have_shown.include?(current_user.id) #TODO: is it quicker to instead call uniq! after adding? + message.save render json: true - return else render json: false end - end + end end diff --git a/users/app/designs/message/by_user_ids_to_show.js b/users/app/designs/message/by_user_ids_to_show.js new file mode 100644 index 0000000..95ccd0d --- /dev/null +++ b/users/app/designs/message/by_user_ids_to_show.js @@ -0,0 +1,7 @@ +function (doc) { + if (doc.type === 'Message' && doc.user_ids_to_show && Array.isArray(doc.user_ids_to_show)) { + doc.user_ids_to_show.forEach(function (userIdsToShow) { + emit(userIdsToShow, 1); + }); + } +}
\ No newline at end of file diff --git a/users/app/designs/message/by_user_ids_to_show_and_created_at.js b/users/app/designs/message/by_user_ids_to_show_and_created_at.js new file mode 100644 index 0000000..7bd7c2c --- /dev/null +++ b/users/app/designs/message/by_user_ids_to_show_and_created_at.js @@ -0,0 +1,8 @@ +// not using at moment +function (doc) { + if (doc.type === 'Message' && doc.user_ids_to_show && Array.isArray(doc.user_ids_to_show)) { + doc.user_ids_to_show.forEach(function (userIdsToShow) { + emit([userIdsToShow, doc.created_at], 1); + }); + } +}
\ No newline at end of file diff --git a/users/app/models/message.rb b/users/app/models/message.rb index 38fa71e..16a19f4 100644 --- a/users/app/models/message.rb +++ b/users/app/models/message.rb @@ -3,8 +3,12 @@ class Message < CouchRest::Model::Base use_database :messages property :text, String + property :user_ids_to_show, [String] + property :user_ids_have_shown, [String] # is this necessary to store? design do + own_path = Pathname.new(File.dirname(__FILE__)) + load_views(own_path.join('..', 'designs', 'message')) end end diff --git a/users/app/models/user.rb b/users/app/models/user.rb index 6e445be..71e57f3 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -13,8 +13,6 @@ class User < CouchRest::Model::Base property :desired_service_level_code, Integer, :accessible => true property :effective_service_level_code, Integer, :accessible => true - property :message_ids_to_see, [String] - property :message_ids_seen, [String] property :one_month_warning_sent, TrueClass before_save :update_effective_service_level @@ -77,12 +75,11 @@ class User < CouchRest::Model::Base end def messages(unseen = true) - - message_ids = unseen ? self.message_ids_to_see : self.message_ids_to_see + self.message_ids_seen # TODO check unique? - + #TODO for now this only shows unseen messages. Will we ever want seen ones? Is it necessary to store? + #Message.by_user_ids_to_show.key(self.id).all # we don't want to emit all the userids associated with a message, so looping through to only emit text and id. messages = [] - message_ids.each do |message_id| - messages << Message.find(message_id) + Message.by_user_ids_to_show.key(self.id).each do |message| + messages << [message.id, message.text] end messages @@ -140,7 +137,8 @@ class User < CouchRest::Model::Base @message.save end - user.message_ids_to_see << @message.id + @message.user_ids_to_show << user.id + @message.save user.one_month_warning_sent = true user.save end |