Send push notifications on question create
This commit is contained in:
parent
bae227be76
commit
8b98c278da
|
@ -10,6 +10,7 @@ class QuestionWorker
|
||||||
def perform(user_id, question_id)
|
def perform(user_id, question_id)
|
||||||
user = User.find(user_id)
|
user = User.find(user_id)
|
||||||
question = Question.find(question_id)
|
question = Question.find(question_id)
|
||||||
|
webpush_app = Rpush::App.find_by(name: "webpush")
|
||||||
|
|
||||||
user.followers.each do |f|
|
user.followers.each do |f|
|
||||||
next if f.inbox_locked?
|
next if f.inbox_locked?
|
||||||
|
@ -18,6 +19,14 @@ class QuestionWorker
|
||||||
next if user.muting?(question.user)
|
next if user.muting?(question.user)
|
||||||
|
|
||||||
Inbox.create(user_id: f.id, question_id: question_id, new: true)
|
Inbox.create(user_id: f.id, question_id: question_id, new: true)
|
||||||
|
|
||||||
|
f.web_push_subscriptions.each do |s|
|
||||||
|
n = Rpush::Webpush::Notification.new
|
||||||
|
n.app = webpush_app
|
||||||
|
n.registration_ids = [s.subscription.symbolize_keys]
|
||||||
|
n.data = { message: { title: "New question notif title", body: question.content }.to_json }
|
||||||
|
n.save!
|
||||||
|
end
|
||||||
end
|
end
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
logger.info "failed to ask question: #{e.message}"
|
logger.info "failed to ask question: #{e.message}"
|
||||||
|
|
|
@ -134,3 +134,5 @@ Rpush.reflect do |on|
|
||||||
# on.error do |error|
|
# on.error do |error|
|
||||||
# end
|
# end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Rails.application.config.active_record.yaml_column_permitted_classes = [Symbol, Hash]
|
||||||
|
|
|
@ -30,6 +30,15 @@ module UseCase
|
||||||
|
|
||||||
inbox = ::Inbox.create!(user: target_user, question: question, new: true)
|
inbox = ::Inbox.create!(user: target_user, question: question, new: true)
|
||||||
|
|
||||||
|
webpush_app = Rpush::App.find_by(name: "webpush")
|
||||||
|
target_user.web_push_subscriptions.each do |s|
|
||||||
|
n = Rpush::Webpush::Notification.new
|
||||||
|
n.app = webpush_app
|
||||||
|
n.registration_ids = [s.subscription.symbolize_keys]
|
||||||
|
n.data = { message: { title: "New question notif title", body: question.content }.to_json }
|
||||||
|
n.save!
|
||||||
|
end
|
||||||
|
|
||||||
{
|
{
|
||||||
status: 201,
|
status: 201,
|
||||||
resource: question,
|
resource: question,
|
||||||
|
|
Loading…
Reference in New Issue