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

Feature to Enable/Disable, Add, Edit and Delete RSS Filters #133

Open
buildwithmalik opened this issue Apr 20, 2021 · 1 comment
Open

Feature to Enable/Disable, Add, Edit and Delete RSS Filters #133

buildwithmalik opened this issue Apr 20, 2021 · 1 comment
Labels
enhancement New feature or request Todo This task needs to be completed

Comments

@buildwithmalik
Copy link
Collaborator

buildwithmalik commented Apr 20, 2021

Current State

In the current state of the application, when the RSS Filter is either enabled or disabled, a message prompting the user to use the ruTorrent web interface to make the changes pops up as shown below.

RSS Filter Enable Disable

Furthermore, the option of adding, deleting or editing (existing) RSS Filters is not present.

Proposed Changes

  1. I would like to implement the feature of enabling and disabling the RSS Filters from the application itself.
  2. I would also like to implement an RSS Filter Edit Screen whose purpose will be to take user-input related to the RSS Filter (name, pattern, labels etc. )

Implementation

Enabling and Disabling RSS Filters

I will be using the RSS Plugin of the ruTorrent Web Interface to implement this feature. Implementing this feature would require changing the enabled integer in the RSS Filter object and making a POST request to the RSS plugin with the JSON form of the RSS Filter object (more on this below).

Add, Edit, Delete RSS Filters

Again the RSS Plugin will be used. A small catch here is, anytime any change is made to any of the filters, ALL (existing) filters have to be sent via the POST network call to the Plugin. If we attempt to send only the filter that has been changed, all other filters are deleted.

Now the issue with this approach is, a JSON object cannot contain two same keys for obvious reasons and the plugin was not accepting different JSON objects for different filters.

So we will use Content-Type: application/x-www-form-urlencoded to send the data after encoding all the existing RSS Filters in the application.

The one function that will implement both network implementations is given below.

/// Sets details of RSS Filters
  static setRSSFilter(Api api, List<RSSFilter> filters) async {

    // Set Headers
    Map<String, String> headers = {
      "Content-Type": "application/x-www-form-urlencoded"
    };
    headers.addAll(api.getAuthHeader());

    // Set mode of Query
    String queryString = "mode=setfilters&";

    // Encode and add all Filters to the query
    for (RSSFilter filter in filters ?? []) {
      queryString += Uri(queryParameters: filter.toJson()).query + "&";
    }

    // Execute the Network Call
    await api.ioClient
        .post(Uri.parse(api.rssPluginUrl), headers: headers, body: queryString);
  }

The video of the complete working of the proposed feature will be added in the feature PR.

PR #134

@buildwithmalik buildwithmalik changed the title Adding feature to Enable/Disable, Add, Edit and Delete RSS Filters Feature to Enable/Disable, Add, Edit and Delete RSS Filters Apr 20, 2021
@buildwithmalik buildwithmalik added the Todo This task needs to be completed label Sep 10, 2022
@buildwithmalik
Copy link
Collaborator Author

The project has been updated extensively in the last 2 years (check wiki for more info). The default branch is now the "main" branch.

If anyone wants to work on this feature you can simply apply this concept on the new "main" branch.

@buildwithmalik buildwithmalik added the enhancement New feature or request label Sep 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Todo This task needs to be completed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant