diff options
| -rw-r--r-- | users/app/controllers/v1/messages_controller.rb | 5 | ||||
| -rw-r--r-- | users/app/designs/message/by_user_ids_to_show.js | 6 | ||||
| -rw-r--r-- | users/app/designs/message/by_user_ids_to_show_and_created_at.js | 6 | ||||
| -rw-r--r-- | users/app/models/message.rb | 13 | 
4 files changed, 20 insertions, 10 deletions
| diff --git a/users/app/controllers/v1/messages_controller.rb b/users/app/controllers/v1/messages_controller.rb index 90986e2..f71d0f1 100644 --- a/users/app/controllers/v1/messages_controller.rb +++ b/users/app/controllers/v1/messages_controller.rb @@ -13,10 +13,7 @@ module V1      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 call uniq! after adding rather than check if it is already included? +        message.mark_as_read_by(current_user)          message.save          render json: true        else diff --git a/users/app/designs/message/by_user_ids_to_show.js b/users/app/designs/message/by_user_ids_to_show.js index 95ccd0d..e33566b 100644 --- a/users/app/designs/message/by_user_ids_to_show.js +++ b/users/app/designs/message/by_user_ids_to_show.js @@ -1,7 +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); +    doc.user_ids_to_show.forEach(function (userId) { +      emit(userId, 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 index 18969b8..54e4604 100644 --- 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 @@ -2,8 +2,8 @@  // call with something like Message.by_user_ids_to_show_and_created_at.startkey([user_id, start_date]).endkey([user_id,end_date])  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); +    doc.user_ids_to_show.forEach(function (userId) { +      emit([userId, 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 d9ccee8..424f094 100644 --- a/users/app/models/message.rb +++ b/users/app/models/message.rb @@ -13,4 +13,17 @@ class Message < CouchRest::Model::Base      load_views(own_path.join('..', 'designs', 'message'))    end +  def mark_as_read_by(user) +    user_ids_to_show.delete(user.id) +    # is it necessary to keep track of what users have already seen it? +    user_ids_have_shown << user.id unless read_by?(user) +  end + +  def read_by?(user) +    user_ids_have_shown.include?(user.id) +  end + +  def unread_by?(user) +    user_ids_to_show.include?(user.id) +  end  end | 
