eslint-plugin-rxjs-angular icon indicating copy to clipboard operation
eslint-plugin-rxjs-angular copied to clipboard

prefer-takeuntil Rule Should Not Trigger for HTTP Requests

Open manickam1999 opened this issue 1 year ago • 1 comments

Issue: prefer-takeuntil Rule Should Not Trigger for HTTP Requests

Description: The prefer-takeuntil rule currently triggers when subscribe is called within a component, requiring the use of the takeUntil-destroyed pattern. However, this rule should not be triggered for HTTP requests, since HTTP requests clean up themselves, such as the one shown below:

Example Code:

this.http.post(url, value).subscribe();

Reason: For specific HTTP requests, especially those that are one-time operations and do not need to be unsubscribed from when the component is destroyed, enforcing the takeUntil pattern is unnecessary and adds unnecessary complexity to the code.

Proposed Solution: Modify the prefer-takeuntil rule to allow exceptions for certain HTTP request patterns, such as http.patch, http.post, http.put, etc. This could be controlled through additional rule options or by recognizing common HTTP request patterns that do not require unsubscription.

Example Configuration:

{
  "rxjs-angular/prefer-takeuntil": [
    "error",
    {
      "alias": ["untilDestroyed"],
      "checkComplete": true,
      "checkDecorators": ["Component"],
      "checkDestroy": true,
      "allows": ["http.patch", "http.post", "http.put"]
    }
  ]
}

manickam1999 avatar Jul 01 '24 02:07 manickam1999

No, you are wrong. Example: HTTP request updates globally shared data. The first request was initiated and took 25 seconds to execute. After 10 seconds, the user navigates to another URL, causing a similar request (that updates the same data). This second request takes 14 seconds to execute, and the data is updated. After just 1 second it will be updated by the first request.

The first request had to be canceled on navigation (when the component is destroyed).

e-oz avatar Aug 07 '24 11:08 e-oz