Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: skip track/status endpoints [OTE-354] #719

Merged
merged 6 commits into from
Jun 25, 2024

Conversation

yogurtandjam
Copy link
Contributor

@yogurtandjam yogurtandjam commented Jun 25, 2024

Blocked by: https://github.com/dydxprotocol/v4-abacus/pull/471/files

This PR adds functionality for skip's track and status endpoints.
We unfortunately need a lot of code in order to make the skip payload consumable and swappable with the existing squid code. We decided to go this route to ensure we localize all the logic into one area.

Once we remove squid completely, we can begin refactoring our skip code to be more 'true' to its API. This will likely come hand in hand with 2 other things:

  • skip is going to make their API more easily consumable (likely a v3 thing)
  • redesign of our status tracking widget. it's not designed to display transaction-by-transaction granularity which skip offers.

This PR also adds a lot of test code. The tests are there to ensure that through various payloads, we transform the skip payload to look functionally identical to the squid code. The doc describing the payload transformation is here: https://www.notion.so/dydx/Squid-Skip-Status-endpoint-1a15bd2cb45c4ccfbc0b095986ef4f09


Constants/Types

  • public/configs/v1/env.json
    • adds skip endpoint param

Hooks

  • src/hooks/useLocalNotifications.tsx

    • Swapped out fetchSquidStatus for fetchTransactionStatus
  • src/hooks/useEndpointsConfig.ts

    • Added skip to endpoints config to allow DOS to plugin proxy server url override
  • src/hooks/useNotificationTypes.tsx

    • The only place we did 'shotgun surgery'. The estimated route duration from squid is a number but skip doesn't provide one yet. So for now we're using a standard piece of text '<30 minutes' for the route duration which means we need to typecheck when rendering the notifications.

Functions

  • lib/squid
    • This is where all the heavy lifting happens. We convert the payload from skip to look nearly identical to the payload from squid.
    • fetchSkipStatus - retrieves tx status from skip endpoint
    • trackSkipTx - posts to skip track endpoint to track a tx
    • fetchTransferStatus - retrieves either transfer status using either skip or squid endpoint
    • class TransactionData - consumes all relevant data necessary to create either a route status entry or a from/toChain entry. the reason why we do this
      • both objects share a good amount of data
      • why use 2 functions to retrieve 2 data forms when you can have one. why use many function when few function do same trick
      • yes, this can be a function - but i think it feels nicer having it a data class since it represents an entity of transfer data. either way this will be removed once we transition out of this dual squid/skip state.

Packages

  • jsdom
    • adds jsdom package
    • necessary for testing util methods that use window

Copy link

vercel bot commented Jun 25, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
v4-staging ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 25, 2024 10:07pm
v4-testnet ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 25, 2024 10:07pm

Copy link

linear bot commented Jun 25, 2024

@yogurtandjam yogurtandjam force-pushed the jerms/OTE-354_track-skip branch 2 times, most recently from 7ef21af to db7a97a Compare June 25, 2024 17:10
@yogurtandjam yogurtandjam reopened this Jun 25, 2024
@yogurtandjam yogurtandjam merged commit 60a70d0 into main Jun 25, 2024
6 checks passed
@yogurtandjam yogurtandjam deleted the jerms/OTE-354_track-skip branch June 25, 2024 22:21
DavideSegullo added a commit to nabla-studio/v4-web that referenced this pull request Jun 26, 2024
* feat: ➕ add export-to-csv dep

* feat: ✨ add download icon

* feat: ✨ add navigation menu slots

* feat: ✨ add csv utility

* feat: 🏷️ improve dropdown menu types

* refactor: ♻️ refactor Output component

refactored Output component to export formatting utils.

* feat: ✨ add ExportHistoryDropdown component

* feat: ✨ add export inside History page

added ExportHistoryDropdown component inside History page layout.

* feat: 🚸 disable csv export on empty data

* feat: 📈 add export history analytics

* fix: 🐛 fix export history download

* fix: 🐛 fix post merge errors

* feat: ✨ add reusable format number function

* refactor: ♻️ add better style declaration

* fix: 🐛 fix post merge errors

* fix: 🐛 fix react errors

* fix: 🐛 fix empty export

* feat: ⬆️ upgrade @dydxprotocol/v4-client-js

* feat: ✨ add history export all services

* feat: ✨ add export loading states

* refactor: 🎨 improve format of the code

* style: 🚨 fix lint errors

* style: 🚨 add default case

* feat: ✨ add export sorting in decreasing order

* feat: ✨ add price column inside csv

* fix: add back precision to earned by stakers (dydxprotocol#692)

* fix(sparklines): bump abacus and fix output component (dydxprotocol#695)

* feat(staking): ui of validator selection (dydxprotocol#691)

* chore: replace spread row with mid market price row (dydxprotocol#696)

* chore(hide-gasToggle): temp hide gas toggle (dydxprotocol#700)

* chore: improve order statuses (dydxprotocol#693)

* fix(subaccount-transfer): enforce senderAddress matches localWallet (dydxprotocol#703)

* feat: update to use proxy for staking apr (dydxprotocol#702)

* chore: remove deprecated params [OTE-353] (dydxprotocol#698)

* feat: add ZK, ZRO, NCAT to the widget (dydxprotocol#704)

* feat(staking): polishes (dydxprotocol#701)

* feat: improve markets page style (dydxprotocol#699)

* feat: ⬆️ upgrade @dydxprotocol/v4-client-js

* feat: ✨ add parentSubaccount export

* feat: ✨ disable export on disconnection state

* feat(staking): add staking live notif (dydxprotocol#708)

* feat(new market): have other market validation run on diff only (dydxprotocol#705)

* feat: redirect other reward pages after staking is turned on (dydxprotocol#711)

* docs: 📝 improve comment format

* fix: 🐛 fix merge error

* style: 🚨 fix lint errors

* feat: fix invert tag for certain raydium markets (dydxprotocol#709)

Co-authored-by: jaredvu <jaredvu@gmail.com>

* chore(default-page): change default page to /markets (dydxprotocol#713)

* chore(staking): remove last faq question (dydxprotocol#712)

* feat: add tracking to staking (dydxprotocol#710)

* fix: polishes for staking (dydxprotocol#716)

* fix: nonzero rewards (dydxprotocol#653)

* chore: fully type dialogs, fix some more any types, redo analytics (dydxprotocol#671)

* fix: fix validator url icon (dydxprotocol#720)

* chore(new-market): update header copy (dydxprotocol#718)

* feat(mobile-download): Add mobile app store download links (dydxprotocol#717)

* feat: preload metadata for all markets in otherMarketData.json (dydxprotocol#646)

Co-authored-by: jaredvu <jaredvu@gmail.com>

* fix: isolated positions bug fixes + auto-open (dydxprotocol#721)

* feat: orderbook refresh + updates (dydxprotocol#647)

* chore: install-local-l10n command (dydxprotocol#697)

* chore: use FormMaxInputToggleButton in transfer/deposit/withdraw forms (dydxprotocol#715)

* fix: fix updated terms of use link (dydxprotocol#724)

* fix: orderbook bugs (dydxprotocol#725)

* style(nits): update exchange billboards and stats, assetIcons (dydxprotocol#726)

* feat: update zk logo and zro zk logo data (dydxprotocol#727)

* feat: skip track/status endpoints [OTE-354] (dydxprotocol#719)

* fix(disconnect-cleanup): set localWallet and hdKey to undefined when disconnecting (dydxprotocol#728)

* fix: analytics property names (dydxprotocol#730)

* style(tables): update table header styling (dydxprotocol#729)

* feat: ✨ add new analytics api

---------

Co-authored-by: moo-onthelawn <70078372+moo-onthelawn@users.noreply.github.com>
Co-authored-by: Jared Vu <jaredvu@gmail.com>
Co-authored-by: aleka <aforaleka@gmail.com>
Co-authored-by: Bill <bill@dydx.exchange>
Co-authored-by: Jeremy Lee <37092291+yogurtandjam@users.noreply.github.com>
Co-authored-by: yujin512 <yujin@dydx.exchange>
Co-authored-by: Tian <tian@dydx.exchange>
Co-authored-by: tyleroooo <tyler@dydx.exchange>
DavideSegullo pushed a commit to nabla-studio/v4-web that referenced this pull request Jun 26, 2024
DavideSegullo pushed a commit to nabla-studio/v4-web that referenced this pull request Jun 26, 2024
DavideSegullo added a commit to nabla-studio/v4-web that referenced this pull request Jun 28, 2024
feat: fix invert tag for certain raydium markets (dydxprotocol#709)

Co-authored-by: jaredvu <jaredvu@gmail.com>

chore(default-page): change default page to /markets (dydxprotocol#713)

chore(staking): remove last faq question (dydxprotocol#712)

feat: add tracking to staking (dydxprotocol#710)

fix: polishes for staking (dydxprotocol#716)

fix: nonzero rewards (dydxprotocol#653)

chore: fully type dialogs, fix some more any types, redo analytics (dydxprotocol#671)

fix: fix validator url icon (dydxprotocol#720)

chore(new-market): update header copy (dydxprotocol#718)

feat(mobile-download): Add mobile app store download links (dydxprotocol#717)

feat: preload metadata for all markets in otherMarketData.json (dydxprotocol#646)

Co-authored-by: jaredvu <jaredvu@gmail.com>

fix: isolated positions bug fixes + auto-open (dydxprotocol#721)

feat: orderbook refresh + updates (dydxprotocol#647)

chore: install-local-l10n command (dydxprotocol#697)

chore: use FormMaxInputToggleButton in transfer/deposit/withdraw forms (dydxprotocol#715)

fix: fix updated terms of use link (dydxprotocol#724)

fix: orderbook bugs (dydxprotocol#725)

style(nits): update exchange billboards and stats, assetIcons (dydxprotocol#726)

feat: update zk logo and zro zk logo data (dydxprotocol#727)

feat: skip track/status endpoints [OTE-354] (dydxprotocol#719)

fix(disconnect-cleanup): set localWallet and hdKey to undefined when disconnecting (dydxprotocol#728)

fix: analytics property names (dydxprotocol#730)

style(tables): update table header styling (dydxprotocol#729)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants