OneKeyHQ / app-monorepo

Secure, open source and community driven crypto wallet runs on all platforms and trusted by millions.
https://onekey.so
Other
2.01k stars 384 forks source link

fix: swap refresh & slippgae opt ok-33435 ok-34099 #6274

Closed ezailWang closed 3 days ago

ezailWang commented 3 days ago

Summary by CodeRabbit

codesandbox[bot] commented 3 days ago

Review or Edit in CodeSandbox

Open the branch in Web EditorVS CodeInsiders
Open Preview

coderabbitai[bot] commented 3 days ago

[!CAUTION]

Review failed

The pull request is closed.

Walkthrough

此次更改涉及多个组件和钩子的修改,主要集中在交换功能的优化和增强。ContentJotaiActionsSwap 类中移除了与报价间隔相关的逻辑,简化了报价获取的控制流程。SwapQuoteResultRate 组件添加了刷新按钮,更新了属性接口。新引入的 SwapRefreshButton 组件负责处理刷新操作。其他组件如 SwapHeaderContainerSwapHeaderRightActionContainer 也进行了相应的调整,以改善用户体验和状态管理。

Changes

文件路径 更改摘要
packages/kit/src/states/jotai/contexts/swap/actions.ts 移除 swapQuoteIntervalMaxCount 常量及相关逻辑,更新 runQuotequoteAction 方法,改进错误处理和警告检查。
packages/kit/src/views/Swap/components/SwapQuoteResultRate.tsx 添加 SwapRefreshButton 导入,更新接口以包含 refreshAction 属性,修改渲染逻辑以集成刷新按钮。
packages/kit/src/views/Swap/components/SwapRefreshButton.tsx 新增组件,处理刷新操作,管理动画和状态,优化性能。
packages/kit/src/views/Swap/hooks/useSwapQuote.ts 评论掉多个与报价间隔相关的逻辑,简化引用逻辑。
packages/kit/src/views/Swap/pages/components/SwapHeaderContainer.tsx 移除 useSwapSlippageActions 钩子及其相关功能,简化组件结构。
packages/kit/src/views/Swap/pages/components/SwapHeaderRightActionContainer.tsx 实现新的状态管理机制,添加 handleSlippageChange 函数,更新组件结构以包含 SwapSlippageCustomContent
packages/kit/src/views/Swap/pages/components/SwapMainLand.tsx 添加 useRef 钩子和 refreshAction 函数,更新 SwapQuoteResult 组件以接受新属性。
packages/kit/src/views/Swap/pages/components/SwapQuoteResult.tsx 更新接口以包含 refreshAction 属性,保持组件结构不变。
packages/kit/src/views/Swap/pages/components/SwapSlippageContentContainer.tsx SlippageInput 组件从局部常量改为导出常量,增强可访问性。
packages/shared/types/swap/SwapProvider.constants.ts 新增常量 swapRefreshInterval,用于管理刷新间隔。

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant SwapQuoteResultRate
    participant SwapRefreshButton
    participant ContentJotaiActionsSwap

    User->>SwapQuoteResultRate: 请求报价
    SwapQuoteResultRate->>SwapRefreshButton: 显示刷新按钮
    User->>SwapRefreshButton: 点击刷新
    SwapRefreshButton->>ContentJotaiActionsSwap: 调用 refreshAction
    ContentJotaiActionsSwap->>ContentJotaiActionsSwap: 执行报价获取逻辑
    ContentJotaiActionsSwap-->>SwapQuoteResultRate: 返回新报价
    SwapQuoteResultRate-->>User: 显示新报价

🪧 Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , please review it.` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` or `Summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.