Files
sure/app/views/settings/providers/show.html.erb
LPW dd991fa339 Add Coinbase exchange integration with CDP API support (#704)
* **Add Coinbase integration with item and account management**
- Creates migrations for `coinbase_items` and `coinbase_accounts`.
- Adds models, controllers, views, and background tasks to support account linking, syncing, and transaction handling.
- Implements Coinbase API client and adapter for seamless integration.
- Supports ActiveRecord encryption for secure credential storage.
- Adds UI components for provider setup, account management, and synchronization.

* Localize Coinbase-related UI strings, refine account linking for security, and add timeouts to Coinbase API requests.

* Localize Coinbase account handling to support native currencies (USD, EUR, GBP, etc.) across balances, trades, holdings, and transactions.

* Improve Coinbase processing with timezone-safe parsing, native currency support, and immediate holdings updates.

* Improve trend percentage formatting and enhance race condition handling for Coinbase account linking.

* Fix log message wording for orphan cleanup

* Ensure `selected_accounts` parameter is sanitized by rejecting blank entries.

* Add tests for Coinbase integration: account, item, and controller coverage

- Adds unit tests for `CoinbaseAccount` and `CoinbaseItem` models.
- Adds integration tests for `CoinbaseItemsController`.
- Introduces Stimulus `select-all` controller for UI checkbox handling.
- Localizes UI strings and logging for Coinbase integration.

* Update test fixtures to use consistent placeholder API keys and secrets

* Refine `coinbase_item` tests to ensure deterministic ordering and improve scope assertions.

* Integrate `SyncStats::Collector` into Coinbase syncer to streamline statistics collection and enhance consistency.

* Localize Coinbase sync status messages and improve sync summary test coverage.

* Update `CoinbaseItem` encryption: use deterministic encryption for `api_key` and standard for `api_secret`.

* fix schema drift

* Beta labels to lower expectations

---------

Co-authored-by: luckyPipewrench <luckypipewrench@proton.me>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
2026-01-21 22:56:39 +01:00

47 lines
1.7 KiB
Plaintext

<%= content_for :page_title, "Sync Providers" %>
<div class="space-y-4">
<div>
<p class="text-secondary mb-4">
Configure credentials for third-party sync providers. Settings configured here will override environment variables.
</p>
</div>
<% @provider_configurations.each do |config| %>
<% next if config.provider_key.to_s.casecmp("simplefin").zero? %>
<%= settings_section title: config.provider_key.titleize, collapsible: true, open: false do %>
<%= render "settings/providers/provider_form", configuration: config %>
<% end %>
<% end %>
<%= settings_section title: "Lunch Flow", collapsible: true, open: false do %>
<turbo-frame id="lunchflow-providers-panel">
<%= render "settings/providers/lunchflow_panel" %>
</turbo-frame>
<% end %>
<%= settings_section title: "SimpleFIN", collapsible: true, open: false do %>
<turbo-frame id="simplefin-providers-panel">
<%= render "settings/providers/simplefin_panel" %>
</turbo-frame>
<% end %>
<%= settings_section title: "Enable Banking (beta)", collapsible: true, open: false do %>
<turbo-frame id="enable_banking-providers-panel">
<%= render "settings/providers/enable_banking_panel" %>
</turbo-frame>
<% end %>
<%= settings_section title: "CoinStats (beta)", collapsible: true, open: false do %>
<turbo-frame id="coinstats-providers-panel">
<%= render "settings/providers/coinstats_panel" %>
</turbo-frame>
<% end %>
<%= settings_section title: "#{t('.coinbase_title')} (beta)", collapsible: true, open: false do %>
<turbo-frame id="coinbase-providers-panel">
<%= render "settings/providers/coinbase_panel" %>
</turbo-frame>
<% end %>
</div>