summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--users/app/controllers/v1/messages_controller.rb5
-rw-r--r--users/app/designs/message/by_user_ids_to_show.js6
-rw-r--r--users/app/designs/message/by_user_ids_to_show_and_created_at.js6
-rw-r--r--users/app/models/message.rb13
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