2023-10-24 17:59:27 -07:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2023-10-24 17:50:10 -07:00
|
|
|
class SubscriptionsController < ApplicationController
|
|
|
|
include TurboStreamable
|
|
|
|
|
|
|
|
before_action :authenticate_user!
|
|
|
|
|
|
|
|
turbo_stream_actions :create, :destroy
|
|
|
|
|
|
|
|
def create
|
|
|
|
answer = Answer.find(params[:answer])
|
|
|
|
result = Subscription.subscribe(current_user, answer)
|
|
|
|
|
|
|
|
respond_to do |format|
|
|
|
|
format.turbo_stream do
|
|
|
|
render turbo_stream: [
|
|
|
|
turbo_stream.replace("subscription-#{answer.id}", partial: "subscriptions/destroy", locals: { answer: }),
|
|
|
|
render_toast(t(result.present? ? ".success" : ".error"), result.present?)
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
format.html { redirect_to answer_path(username: answer.user.screen_name, id: answer.id) }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def destroy
|
|
|
|
answer = Answer.find(params[:answer])
|
|
|
|
result = Subscription.unsubscribe(current_user, answer)
|
|
|
|
|
|
|
|
respond_to do |format|
|
|
|
|
format.turbo_stream do
|
|
|
|
render turbo_stream: [
|
|
|
|
turbo_stream.replace("subscription-#{answer.id}", partial: "subscriptions/create", locals: { answer: }),
|
|
|
|
render_toast(t(result.present? ? ".success" : ".error"), result.present?)
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
format.html { redirect_to answer_path(username: answer.user.screen_name, id: answer.id) }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|