Don't refresh page when transaction details are edited #1479

Merged
zachgoll merged 2 commits from 1415-bug-editing-any-part-of-a-date-causes-a-page-reload-before-another-edit-can-be-done into main 2024-11-21 00:01:52 +08:00
zachgoll commented 2024-11-20 05:35:24 +08:00 (Migrated from github.com)

When users edit transactions or trades, we trigger an "account sync" so that the historical graph and other account details reflect the updates that were made.

The sync process previously triggered a global page refresh when it completed to ensure the user is seeing updated data.

While this PR is not a perfect solution (some parts of the page will require a refresh after editing), it offers a much better user experience while editing individual transactions (while preserving the sync trigger).

Additionally, this provides a more flexible interface for different types of syncs to run code after the sync has succeeded/failed:

  def perform
    start!

    begin
      syncable.sync_data(start_date: start_date)
      complete!
    rescue StandardError => error
      fail! error
      raise error if Rails.env.development?
    ensure
       # Syncable can optionally implement this method to run code after the sync regardless of the sync's outcome
       syncable.post_sync
    end
  end
When users edit transactions or trades, we trigger an "account sync" so that the historical graph and other account details reflect the updates that were made. The sync process previously triggered a global page refresh when it completed to ensure the user is seeing updated data. While this PR is not a perfect solution (some parts of the page will require a refresh after editing), it offers a much better user experience while editing individual transactions (while preserving the sync trigger). Additionally, this provides a more flexible interface for different _types_ of syncs to run code after the sync has succeeded/failed: ```rb def perform start! begin syncable.sync_data(start_date: start_date) complete! rescue StandardError => error fail! error raise error if Rails.env.development? ensure # Syncable can optionally implement this method to run code after the sync regardless of the sync's outcome syncable.post_sync end end ```
Sign in to join this conversation.