1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 05:09:38 +02:00

Handle ITEM_NOT_FOUND errors on Plaid deletions

This commit is contained in:
Zach Gollwitzer 2025-05-25 11:52:29 -04:00
parent d21e385962
commit 854a21993a
2 changed files with 11 additions and 0 deletions

View file

@ -3,5 +3,7 @@ class DestroyJob < ApplicationJob
def perform(model) def perform(model)
model.destroy model.destroy
rescue => e
model.update!(scheduled_for_deletion: false) # Let's the user try again by resetting the state
end end
end end

View file

@ -108,6 +108,15 @@ class PlaidItem < ApplicationRecord
private private
def remove_plaid_item def remove_plaid_item
plaid_provider.remove_item(access_token) plaid_provider.remove_item(access_token)
rescue Plaid::ApiError => e
json_response = JSON.parse(e.response_body)
# If the item is not found, that means it was already deleted by the user on their
# Plaid portal OR by Plaid support. Either way, we're not being billed, so continue
# with the deletion of our internal record.
unless json_response["error_code"] == "ITEM_NOT_FOUND"
raise e
end
end end
# Plaid returns mutually exclusive arrays here. If the item has made a request for a product, # Plaid returns mutually exclusive arrays here. If the item has made a request for a product,