summaryrefslogtreecommitdiff
path: root/users/app
diff options
context:
space:
mode:
authorjessib <jessib@riseup.net>2013-12-24 11:13:28 -0800
committerjessib <jessib@riseup.net>2013-12-24 12:36:24 -0800
commita9ff52501e9c04edacd250dd94ee3f3ad28cd73d (patch)
tree6e461fc9ce1fa9073a80195b9981039b764af6a6 /users/app
parente8032fd9027435c57572fd0d8bab411841859cbc (diff)
API method to mark a user's message as read (will refactor)
Diffstat (limited to 'users/app')
-rw-r--r--users/app/controllers/v1/messages_controller.rb13
-rw-r--r--users/app/models/user_message.rb3
2 files changed, 14 insertions, 2 deletions
diff --git a/users/app/controllers/v1/messages_controller.rb b/users/app/controllers/v1/messages_controller.rb
index e67e2a3..a4e9aec 100644
--- a/users/app/controllers/v1/messages_controller.rb
+++ b/users/app/controllers/v1/messages_controller.rb
@@ -4,6 +4,7 @@ module V1
# TODO need to add authentication
respond_to :json
+ # for now, will not pass unseen, so unseen will always be true
def user_messages(unseen = true)
user_messages = unseen ? UserMessage.by_user_id_and_seen(:key => [params[:user_id], false]).all : UserMessage.by_user_id(:key => params[:user_id]).all
@@ -16,9 +17,17 @@ module V1
end
- # only for PUT
+ # routes ensure this is only for PUT
def mark_read
- # params[:user_id] params[:message_id]
+ user_message = UserMessage.find_by_user_id_and_message_id([params[:user_id], params[:message_id]])
+ user_message.seen = true
+
+ # TODO what to return?
+ if user_message.save
+ render json: true
+ else
+ render json: false
+ end
end
end
diff --git a/users/app/models/user_message.rb b/users/app/models/user_message.rb
index 0b2ce17..37aae0b 100644
--- a/users/app/models/user_message.rb
+++ b/users/app/models/user_message.rb
@@ -7,6 +7,8 @@ class UserMessage < CouchRest::Model::Base
validates :user_id, presence: true
validates :message_id, presence: true
+ # should not have multiple rows connecting one user to particular message:
+ validates_uniqueness_of :user_id, :scope => [:message_id]
property :seen, TrueClass, :default => false
@@ -14,6 +16,7 @@ class UserMessage < CouchRest::Model::Base
view :by_user_id
view :by_message_id
view :by_user_id_and_seen
+ view :by_user_id_and_message_id
own_path = Pathname.new(File.dirname(__FILE__))
load_views(own_path.join('..', 'designs', 'user_message'))