mirror of
https://github.com/we-promise/sure.git
synced 2026-04-17 11:04:14 +00:00
* Introduce SnapTrade integration with models, migrations, views, and activity processing logic. * Refactor SnapTrade activities processing: improve activity fetching flow, handle pending states, and update UI elements for enhanced user feedback. * Update Brakeman ignore file to include intentional redirect for SnapTrade OAuth portal. * Refactor SnapTrade models, views, and processing logic: add currency extraction helper, improve pending state handling, optimize migration checks, and enhance user feedback in UI. * Remove encryption for SnapTrade `snaptrade_user_id`, as it is an identifier, not a secret. * Introduce `SnaptradeConnectionCleanupJob` to asynchronously handle SnapTrade connection cleanup and improve i18n for SnapTrade item status messages. * Update SnapTrade encryption: make `snaptrade_user_secret` non-deterministic to enhance security. --------- Signed-off-by: Juan José Mata <juanjo.mata@gmail.com> Co-authored-by: luckyPipewrench <luckypipewrench@proton.me> Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
31 lines
780 B
Ruby
31 lines
780 B
Ruby
module Family::SnaptradeConnectable
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
has_many :snaptrade_items, dependent: :destroy
|
|
end
|
|
|
|
def can_connect_snaptrade?
|
|
# Families can configure their own Snaptrade credentials
|
|
true
|
|
end
|
|
|
|
def create_snaptrade_item!(client_id:, consumer_key:, snaptrade_user_secret:, snaptrade_user_id: nil, item_name: nil)
|
|
snaptrade_item = snaptrade_items.create!(
|
|
name: item_name || "Snaptrade Connection",
|
|
client_id: client_id,
|
|
consumer_key: consumer_key,
|
|
snaptrade_user_id: snaptrade_user_id,
|
|
snaptrade_user_secret: snaptrade_user_secret
|
|
)
|
|
|
|
snaptrade_item.sync_later
|
|
|
|
snaptrade_item
|
|
end
|
|
|
|
def has_snaptrade_credentials?
|
|
snaptrade_items.where.not(client_id: nil).exists?
|
|
end
|
|
end
|