Skip to content

suggestion for improvement of script file #801

@SophiaLi20

Description

@SophiaLi20

The current implementation of Boston.js provides several helper functions but lacks proper documentation and some necessary enhancements. This issue aims to:

  • Improve Code Readability – Adding detailed comments to explain function purposes and parameters.
  • Enhance Error Handling – Prevent duplicate error messages in invalidateField.
  • Better Data Handling in request – Ensure JSON data is handled properly.
  • Refactor for Maintainability – Improve variable naming and function robustness

Proposed Changes:

  • Add comments for each function to explain its usage and parameters.
  • Modify invalidateField to remove existing errors before appending a new one.
  • Update request to automatically stringify object data when sending a request.
  • Ensure better error handling to prevent function execution on undefined values.
`Code examples for fixes 
/**
 * Displays an error message below an input field, ensuring no duplicates.
 * @param {HTMLElement} field - The input field.
 * @param {string} message - The error message to display.
 */
function invalidateField(field, message) {
  var existingErrors = field.parentElement.querySelector(".t--err");
  if (existingErrors) existingErrors.remove();

  var errors = document.createElement("div");
  errors.className = "t--subinfo t--err m-t100";
  errors.innerHTML = message;
  field.parentElement.appendChild(errors);
}`

/**
 * Sends an HTTP request with proper error handling and JSON data support.
 */
function request(obj, token) {
  var request = new XMLHttpRequest();
  request.open(obj.method, obj.url, true);

  request.onload = function () {
    if (request.status >= 200 && request.status < 400) {
      if (typeof obj.success === "function") obj.success(request);
    } else {
      if (typeof obj.error === "function") obj.error(request);
    }
  };

  if (token) {
    request.setRequestHeader("Authorization", "Token " + token);
  }

  request.onerror = function () {
    if (typeof obj.error === "function") obj.error(request);
  };

  if (obj.data) {
    if (typeof obj.data === "object") {
      request.setRequestHeader("Content-Type", "application/json");
      request.send(JSON.stringify(obj.data));
    } else {
      request.send(obj.data);
    }
  } else {
    request.send();
  }
}


Impact of the Changes:

  • Better Maintainability – Makes it easier for new contributors to understand the code.
  • Improved Error Handling – Reduces redundant error messages and unexpected behavior.
  • More Robust HTTP Requests – Ensures correct data handling in request.

Would love to hear feedback from maintainers on this proposal!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions