user = params[:user_id].present? ? User.find(params[:user_id]) : nil
WeeklyBookmarksDigestJob.perform_later(user)
flash[:notice] = user ? "Weekly bookmarks digest job queued for #{user.email}" : "Weekly bookmarks digest job queued for all users"
- else
+ else
flash[:alert] = "Invalid job selection"
- end
+ end
redirect_to job_runner_path
end
end
end
def join
-
end
def post
end
private
-
+
def create_portal_session
Stripe::BillingPortal::Session.create({
customer: current_user.stripe_customer_id,
- return_url: subscriptions_url,
+ return_url: subscriptions_url
})
end
price = Stripe::Price.create({
unit_amount: amount_cents,
currency: 'aud',
- recurring: {interval: 'year'},
- product: product.id,
+ recurring: { interval: 'year' },
+ product: product.id
})
subscription = Stripe::Subscription.create({
customer: customer.id,
- items: [{price: price.id}],
+ items: [ { price: price.id } ]
})
current_user.update(subscription_status: 'active', buttondown_status: 'premium', support_type: 'ongoing')
else
customer: customer.id,
payment_method_types: ['card'],
description: 'One-time donation',
- confirm: true,
+ confirm: true
})
current_user.update(subscription_status: 'one_time', buttondown_status: 'premium', support_type: 'one_time')
end
current_user.update(last_payment_at: Time.current, payment_amount: amount)
end
-end
\ No newline at end of file
+end
recurring: { interval: 'year' },
product: 'prod_your_product_id_here' # Replace with your actual product ID
}
- }],
+ }]
})
user.update(subscription_status: 'active', buttondown_status: 'premium')
else
base_uri 'https://api.buttondown.email/v1'
def initialize
- @options = {
- headers: {
+ @options = {
+ headers: {
'Authorization' => "Token #{ENV['BUTTONDOWN_API_KEY']}",
'Content-Type' => 'application/json',
'Accept' => 'application/json'
user.update(buttondown_status: 'unactivated') if response.success?
response.success?
end
-
+
def resync_user(user)
response = self.class.get("/subscribers/#{user.email}", @options)
-
+
if response.success?
subscriber_data = JSON.parse(response.body)
update_user_from_buttondown(user, subscriber_data)
user.buttondown_status
end
end
-
+
def update_user_from_buttondown(user, subscriber_data)
user.update(
- buttondown_status: subscriber_data['type'],
- # Add any other fields you want to sync from Buttondown
- # For example:
- # last_buttondown_sync: Time.current,
- # buttondown_notes: subscriber_data['notes'],
- # etc.
+ buttondown_status: subscriber_data['type']
)
end
buttondown_data = JSON.parse(response.body)
user.update(buttondown_status: buttondown_data['type'])
end
-end
\ No newline at end of file
+end