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

updated load data count progress updates #36

Merged
merged 1 commit into from
Mar 9, 2025
Merged

Conversation

MaryKilewe
Copy link
Contributor

No description provided.

Copy link
Contributor

sourcery-ai bot commented Mar 9, 2025

Reviewer's Guide by Sourcery

This pull request updates the data loading process in the DataExtraction component to use a WebSocket connection. This allows for real-time progress updates and more efficient data retrieval. The previous REST API call implementation was removed and replaced with WebSocket logic.

Sequence diagram for data loading with WebSocket

sequenceDiagram
    participant User
    participant DataExtraction Component
    participant WebSocket Server

    User->>DataExtraction Component: Initiates data loading
    DataExtraction Component->>WebSocket Server: Establishes WebSocket connection
    activate WebSocket Server
    WebSocket Server-->>DataExtraction Component: Sends progress updates and data
    loop Receive updates
        DataExtraction Component->>DataExtraction Component: Updates data loaded count or displays data
    end
    alt Error received
        WebSocket Server-->>DataExtraction Component: Sends error message
        DataExtraction Component->>DataExtraction Component: Displays error message to User
    end
    deactivate WebSocket Server
Loading

File-Level Changes

Change Details Files
Updated the data loading process to use a WebSocket connection for real-time progress updates and data retrieval.
  • Replaced the previous REST API call with a WebSocket connection to receive data loading progress.
  • Implemented error handling for WebSocket messages, including displaying error alerts.
  • Added logic to parse JSON data received through the WebSocket and update the loaded repository data.
  • Configured alerts for success and failure scenarios based on the data received via WebSocket.
src/pages/data-extraction/DataExtraction.js
Removed the previous REST API call implementation.
  • Removed the REST API call.
  • Removed the conditional logic based on the REST API response status.
src/pages/data-extraction/DataExtraction.js

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!
  • Generate a plan of action for an issue: Comment @sourcery-ai plan on
    an issue to generate a plan of action for it.

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@MaryKilewe MaryKilewe merged commit 69add61 into master Mar 9, 2025
Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @MaryKilewe - I've reviewed your changes - here's some feedback:

Overall Comments:

  • Consider removing the commented-out code to reduce confusion.
  • Ensure that the websocket error messages are user-friendly.
Here's what I looked at during the review
  • 🟢 General issues: all looks good
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟡 Complexity: 1 issue found
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@@ -184,15 +183,37 @@ const DataExtraction = ({baseRepo}) =>{
};
// Set up the WebSocket connection
newProgressSocket.onmessage = function (event) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (complexity): Consider extracting the JSON handling and progress update logic into separate helper functions to reduce nesting and improve readability of the onmessage handler function

Consider extracting the JSON handling and progress update logic into separate helper functions. For example:

function handleJsonData(jsonData, baseRepo) {
  if (Array.isArray(jsonData)) {
    if (jsonData.length > 0) {
      setLoadedRepoData(jsonData);
      setAlertType("success");
      setLoadSuccessAlert(true);
      setLoadMessage("Successfully loaded " + baseRepo + " data");
    } else {
      setAlertType("error");
      setLoadSuccessAlert(true);
      setLoadMessage(
        "Failed to load " + baseRepo + " data. Check the Site Configured and make sure the data in the source that matches this site is available to extract"
      );
    }
    setSpinner(false);
  }
}

function handleProgress(data) {
  setDataLoadedCount(Number(data.replace("%", "")));
}

And then simplify the onmessage handler:

newProgressSocket.onmessage = function (event) {
  const data = event.data;
  if (data.includes("Error")) {
    newProgressSocket.close();
    setAlertType("error");
    setLoadSuccessAlert(true);
    setLoadMessage("Failed to load : ERROR -->" + data);
    return;
  }

  try {
    const jsonData = JSON.parse(data);
    handleJsonData(jsonData, baseRepo);
  } catch (e) {
    // If parsing fails, try to handle it as a progress update.
    handleProgress(data);
  }
};

This refactoring reduces nesting by clearly separating JSON handling and progress updates while keeping the functionality unchanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant