REFACTOR: Use models to store data (#11)

* REFACTOR: Use api to add subscribe link

* FIX: I18n subscribe link

* REFACTOR: Use models to store some data

This enables the plugin to show only subscription information which was
generated on Discourse. Subscription data storage is limited to the
external identifiers Stripe generates so we can interact with the API.

* DEV: Test/linting fixes/rake task
This commit is contained in:
Justin DiRose
2020-05-22 11:20:05 -05:00
committed by GitHub
parent 7ba08ab7da
commit fb4fac197b
47 changed files with 308 additions and 225 deletions
@@ -9,7 +9,13 @@ module DiscourseSubscriptions
def index
begin
subscriptions = ::Stripe::Subscription.list(expand: ['data.plan.product'])
subscription_ids = Subscription.all.pluck(:external_id)
subscriptions = []
if subscription_ids.present?
subscriptions = ::Stripe::Subscription.list(expand: ['data.plan.product'])
subscriptions = subscriptions.select { |sub| subscription_ids.include?(sub[:id]) }
end
render_json_dump subscriptions
rescue ::Stripe::InvalidRequestError => e
@@ -21,15 +27,16 @@ module DiscourseSubscriptions
begin
subscription = ::Stripe::Subscription.delete(params[:id])
customer = DiscourseSubscriptions::Customer.find_by(
customer = Customer.find_by(
product_id: subscription[:plan][:product],
customer_id: subscription[:customer]
)
if customer
customer.delete
Subscription.delete_by(external_id: params[:id])
if customer
user = ::User.find(customer.user_id)
customer.delete
group = plan_group(subscription[:plan])
group.remove(user) if group
end