mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-09 15:35:22 +02:00
Improve account sync performance, handle concurrent market data syncing (#2236)
* PlaidConnectable concern * Remove bad abstraction * Put sync implementations in own concerns * Sync strategies * Move sync orchestration to Sync class * Clean up sync class, add state machine * Basic market data sync cron * Fix price sync * Improve sync window column names, add timestamps * 30 day syncs by default * Clean up market data methods * Report high duplicate sync counts to Sentry * Add sync states throughout app * account tab session * Persistent account tab selections * Remove manual sleep * Add migration to clear stale syncs on self hosted apps * Tweak sync states * Sync completion event broadcasts * Fix timezones in tests * Cleanup * More cleanup * Plaid item UI broadcasts for sync * Fix account ID namespace conflict * Sync broadcasters * Smoother account sync refreshes * Remove test sync delay
This commit is contained in:
parent
9793cc74f9
commit
10dd9e061a
97 changed files with 1837 additions and 949 deletions
|
@ -19,8 +19,13 @@
|
|||
|
||||
<div class="col-span-2 flex justify-end items-center gap-2">
|
||||
<% cash_weight = account.balance.zero? ? 0 : account.cash_balance / account.balance * 100 %>
|
||||
<%= render "shared/progress_circle", progress: cash_weight %>
|
||||
<%= tag.p number_to_percentage(cash_weight, precision: 1) %>
|
||||
|
||||
<% if account.syncing? %>
|
||||
<div class="w-16 h-6 bg-loader rounded-full"></div>
|
||||
<% else %>
|
||||
<%= render "shared/progress_circle", progress: cash_weight %>
|
||||
<%= tag.p number_to_percentage(cash_weight, precision: 1) %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="col-span-2 text-right">
|
||||
|
@ -28,7 +33,13 @@
|
|||
</div>
|
||||
|
||||
<div class="col-span-2 text-right">
|
||||
<%= tag.p format_money account.cash_balance_money %>
|
||||
<% if account.syncing? %>
|
||||
<div class="flex justify-end">
|
||||
<div class="w-16 h-6 bg-loader rounded-full"></div>
|
||||
</div>
|
||||
<% else %>
|
||||
<%= tag.p format_money account.cash_balance_money %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="col-span-2 text-right">
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
</div>
|
||||
|
||||
<div class="col-span-2 flex justify-end items-center gap-2">
|
||||
<% if holding.weight %>
|
||||
<% if holding.account.syncing? %>
|
||||
<div class="w-16 h-6 bg-loader rounded-full"></div>
|
||||
<% elsif holding.weight %>
|
||||
<%= render "shared/progress_circle", progress: holding.weight %>
|
||||
<%= tag.p number_to_percentage(holding.weight, precision: 1) %>
|
||||
<% else %>
|
||||
|
@ -26,21 +28,39 @@
|
|||
</div>
|
||||
|
||||
<div class="col-span-2 text-right">
|
||||
<%= tag.p format_money holding.avg_cost %>
|
||||
<%= tag.p t(".per_share"), class: "font-normal text-secondary" %>
|
||||
</div>
|
||||
|
||||
<div class="col-span-2 text-right">
|
||||
<% if holding.amount_money %>
|
||||
<%= tag.p format_money holding.amount_money %>
|
||||
<% if holding.account.syncing? %>
|
||||
<div class="flex justify-end">
|
||||
<div class="w-16 h-6 bg-loader rounded-full"></div>
|
||||
</div>
|
||||
<% else %>
|
||||
<%= tag.p "--", class: "text-secondary" %>
|
||||
<%= tag.p format_money holding.avg_cost %>
|
||||
<%= tag.p t(".per_share"), class: "font-normal text-secondary" %>
|
||||
<% end %>
|
||||
<%= tag.p t(".shares", qty: number_with_precision(holding.qty, precision: 1)), class: "font-normal text-secondary" %>
|
||||
</div>
|
||||
|
||||
<div class="col-span-2 text-right">
|
||||
<% if holding.trend %>
|
||||
<% if holding.account.syncing? %>
|
||||
<div class="flex flex-col gap-2 items-end">
|
||||
<div class="w-16 h-4 bg-loader rounded-full"></div>
|
||||
<div class="w-16 h-2 bg-loader rounded-full"></div>
|
||||
</div>
|
||||
<% else %>
|
||||
<% if holding.amount_money %>
|
||||
<%= tag.p format_money holding.amount_money %>
|
||||
<% else %>
|
||||
<%= tag.p "--", class: "text-secondary" %>
|
||||
<% end %>
|
||||
<%= tag.p t(".shares", qty: number_with_precision(holding.qty, precision: 1)), class: "font-normal text-secondary" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="col-span-2 text-right">
|
||||
<% if holding.account.syncing? %>
|
||||
<div class="flex flex-col gap-2 items-end">
|
||||
<div class="w-16 h-4 bg-loader rounded-full"></div>
|
||||
<div class="w-16 h-2 bg-loader rounded-full"></div>
|
||||
</div>
|
||||
<% elsif holding.trend %>
|
||||
<%= tag.p format_money(holding.trend.value), style: "color: #{holding.trend.color};" %>
|
||||
<%= tag.p "(#{number_to_percentage(holding.trend.percent, precision: 1)})", style: "color: #{holding.trend.color};" %>
|
||||
<% else %>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue