bitcashorg / smartsale

SmartSale streamlines the auction process on EVM
MIT License
11 stars 3 forks source link

feat: dynamic presale addresses, improve security #373

Closed gaboesquivel closed 1 week ago

gaboesquivel commented 1 week ago

Summary by Sourcery

Add dynamic presale address handling and improve security by introducing new functions for presale processing and token issuance. Refactor code for consistency and enhance the email rendering process. Update build configuration to support new features and remove deprecated files.

New Features:

Enhancements:

Build:

Chores:

Summary by CodeRabbit

vercel[bot] commented 1 week ago

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

Name Status Preview Comments Updated (UTC)
bitlauncher ✅ Ready (Inspect) Visit Preview 💬 Add feedback Sep 10, 2024 6:41pm
smartsale-faucet ✅ Ready (Inspect) Visit Preview 💬 Add feedback Sep 10, 2024 6:41pm
sourcery-ai[bot] commented 1 week ago

Reviewer's Guide by Sourcery

This pull request implements dynamic presale addresses and improves security. It includes changes to the presale deposit process, adds new database fields, updates API endpoints, and refactors various components for better type safety and code organization.

File-Level Changes

Change Details Files
Implemented dynamic presale addresses and improved security in the presale deposit process
  • Added new fields to the presale and project database tables
  • Updated API endpoints to handle dynamic presale addresses
  • Implemented state management for presale deposits
  • Added validation checks for presale deposits
  • Updated components to use dynamic token addresses
apps/web/api/activity/route.ts
apps/web/components/routes/project/presale/presale-deposit-card.tsx
apps/web/components/routes/project/presale/presale-token-balance.tsx
apps/web/app/(routes)/[lang]/[project]/presale/page.tsx
services/supabase/src/supa.schemas.ts
services/supabase/src/supa.types.ts
services/supabase/migrations/20240910163028_remote_schema.sql
services/supabase/migrations/20240910180731_remote_schema.sql
Refactored and improved the token issuance process
  • Created a new presale-issuer module
  • Implemented environment validation for issuer credentials
  • Added error handling and logging for token issuance
  • Updated transaction insertion logic
services/trigger/src/lib/presale-issuer.ts
services/trigger/src/trigger/activity.ts
Updated Supabase service to support new presale functionality
  • Added new functions to handle presale data retrieval and updates
  • Implemented deposit status management
  • Updated types and schemas to reflect new database structure
services/supabase/service.ts
services/supabase/src/supa.schemas.ts
services/supabase/src/supa.types.ts
Refactored and updated React Email components and utilities
  • Updated various React Email components for better type safety and performance
  • Refactored utility functions and constants
  • Updated build and configuration files
services/resend/.react-email/src/components/*
services/resend/.react-email/src/utils/*
services/resend/.react-email/src/app/*
services/resend/.react-email/next.config.js
services/resend/.react-email/tailwind.config.ts
Updated Alchemy webhook configuration
  • Changed the webhook URL for address activity notifications
services/alchemy/webhooks/activity-test.ts

Tips - Trigger a new Sourcery review by commenting `@sourcery-ai review` on the pull request. - Continue your discussion with Sourcery by replying directly to review comments. - You can change your review settings at any time by accessing your [dashboard](https://app.sourcery.ai): - Enable or disable the Sourcery-generated pull request summary or reviewer's guide; - Change the review language; - You can always [contact us](mailto:support@sourcery.ai) if you have any questions or feedback.
coderabbitai[bot] commented 1 week ago

[!CAUTION]

Review failed

The pull request is closed.

Walkthrough

The changes encompass updates to various components, services, and database schemas across the application. Key modifications include the introduction of new validation logic for project data, enhancements to presale deposit processing, and the addition of new properties and functions for better handling of token addresses. The database schema has been updated to improve clarity and integrity, including the introduction of a new enum type for deposit states. Overall, the modifications aim to refine functionality and streamline interactions within the application.

Changes

File Path Change Summary
apps/web/app/(routes)/[lang]/[project]/presale/page.tsx Added validation for projectData.token_address, implementing a redirect if missing and passing tokenAddress to PresaleDepositCard.
apps/web/app/api/activity/route.ts Replaced hardcoded presaleAddress with dynamic retrieval, updated deposit processing logic, and refined error handling for deposit transactions.
apps/web/components/routes/project/presale/presale-deposit-card.tsx Added tokenAddress prop, modified PresaleTokenBalance to accept it, and adjusted available chains filtering logic.
apps/web/components/routes/project/presale/presale-token-balance.tsx Enhanced to accept tokenAddress, updated to use erc20Abi for ERC20 balance retrieval.
apps/web/services/supabase/service.ts Introduced new functions for presale data retrieval and deposit processing, including error handling improvements.
packages/auction/src/types.ts Expanded ChainType to include 'eos' and 'solana'.
packages/chains/package.json Added a description and updated main and types fields for better package clarity.
services/alchemy/webhooks/activity-test.ts Updated webhook URL for address activity notifications.
services/resend/.react-email/.eslintrc.js Introduced ESLint configuration for the React project, extending predefined rulesets.
services/resend/.react-email/.prettierrc.js Minor formatting adjustment in Prettier config.
services/resend/.react-email/build-preview-server.mjs Implemented server-side script for automating the Next.js build process.
services/resend/.react-email/next.config.js Made formatting adjustments to Next.js configuration.
services/resend/.react-email/package-lock.json Updated ansi-regex package version across dependencies.
services/resend/.react-email/package.json Introduced package.json for the preview-server project with necessary configurations and dependencies.
services/supabase/migrations/20240910163028_remote_schema.sql Modified alchemy_events and project tables, renaming columns for clarity and adding a new token_address.
services/supabase/migrations/20240910180731_remote_schema.sql Created a new enum type state and added it to the presale_deposit table for tracking deposit statuses.
services/resend/.react-email/src/components/icons/icon-button.tsx Introduced IconButton component for rendering customizable buttons.
services/resend/.react-email/src/components/icons/icon-folder-open.tsx Added IconFolderOpen component for rendering an open folder icon.
services/resend/.react-email/src/components/icons/icon-hide-sidebar.tsx Added IconHideSidebar component for rendering a sidebar hide icon.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant ProjectPage
    participant PresaleDepositCard
    participant API

    User->>ProjectPage: Request presale page
    ProjectPage->>API: Validate project data
    alt Token address is missing
        ProjectPage->>User: Redirect to '/'
    else Token address is present
        ProjectPage->>PresaleDepositCard: Pass tokenAddress
        PresaleDepositCard->>API: Fetch token balance
    end

🐇 In the garden where changes bloom,
New paths are paved, dispelling gloom.
With tokens bright and deposits clear,
We hop along, spreading cheer!
Each function dances, each line a song,
Together we thrive, where we all belong! 🌼

[!TIP]

Announcements - The review status is no longer posted as a separate comment when there are no actionable or nitpick comments. In such cases, the review status is included in the walkthrough comment. - We have updated our review workflow to use the Anthropic's Claude family of models. Please share any feedback in the [discussion post](https://discordapp.com/channels/1134356397673414807/1279579842131787838) on our Discord. - Possibly related PRs: Walkthrough comment now includes a list of potentially related PRs to help you recall past context. Please share any feedback in the [discussion post](https://discordapp.com/channels/1134356397673414807/1282535539299323995) on our Discord. - Suggested labels: CodeRabbit can now suggest labels by learning from your past PRs in the walkthrough comment. You can also provide custom labeling instructions in the UI or configuration file. - Possibly related PRs, automatic label suggestions based on past PRs, learnings, and possibly related issues require data opt-in (enabled by default).

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
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 .` - `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 generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@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` 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://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.