Commit Graph

1979 Commits

Author SHA1 Message Date
Thomas Piccirello
29f0adf215 WebUI: Restore search tabs on load
This PR restores searches previously performed in the same browser (via local storage).

PR #20637.
2024-04-15 12:07:15 +08:00
Thomas Piccirello
e697d40382 WebUI: Improve table scrolling and selection on mobile
This PR improves touch interaction with table rows that have a context menu. Previously, those rows couldn't be selected or scrolled on mobile. Additionally, this PR modifies the context menu to appear when the user removes their finger/touch, rather than the current behavior of appearing mid-touch. This allows us to only display the context menu if the user's finger remains on the same element, which should significantly reduce erroneous context menu triggering.

Closes #19819.
Closes #19820,
Closes #19823.
PR #20639.
2024-04-09 14:33:10 +08:00
Chocobo1
d407e954d1 GHA CI: lock to ESLint v8
For unknown reasons, ESLint v9 doesn't work correctly. Migration to ESLint v9 will be done
later when it is stable enough.

PR #20665.
2024-04-09 14:12:30 +08:00
Chocobo1
92ce507151 WebUI: Allow to specify login page language via query parameter
There were a few reports that the user has messed up their browser's language and this PR gives an escape hatch in case the user is unable to configure the browser's language for various reasons.
Example for choosing French: http://127.0.0.1:8080/?lang=fr

PR #20591.
2024-04-06 15:13:58 +08:00
Vladimir Golovnev
67dfce7437 WebAPI: return correct value for queued uploading state
PR #20651.
Closes #20648.
2024-04-04 08:41:25 +03:00
Aliaksei Urbanski
f37d0c486c Add the Popularity metric
PR #20180.
2024-04-01 21:23:08 +03:00
Thomas Piccirello
8e6515be2c WebUI: Fix error when category doesn't exist
This prevents hitting a TypeError when the category stored in localstorage does not exist. The behavior for a nonexistent category now mirrors that of a nonexistent tag or filter - no option is selected and no torrents are shown.

Closes #20623.
PR #20638.
2024-04-01 20:15:30 +08:00
Chocobo1
90383567b2 Revise Tracker related classes
And also rename them.

PR #20489.
2024-04-01 19:17:35 +08:00
Thomas Piccirello
4967f977c5 WebUI: Improve accuracy of trackers list
This PR fixes various accounting issues with the trackers list. Removing a torrent would not update the trackers list, nor would removing a tracker from a torrent. And removing a tracker with a shared host but unique url (e.g. example.com/1 and example.com/2) would erroneously remove the tracker's host from the list.

Closes #20053.
Closes #20054.
PR  #20601.
2024-03-29 15:43:49 +08:00
Thomas Piccirello
eb9e98a4b3 WebUI: Add support for running concurrent searches
This PR adds support for running multiple concurrent searches in the Web UI. This is already supported in the GUI as well as by the Web API. Behavior mimics the GUI as closely as possible.

All filters and sorting are preserved per-tab, allowing you to apply unique filters and sorts to each of your searches. Row selection is also preserved across tab navigation.

Closes #12840.
PR #20593.
2024-03-29 15:05:43 +08:00
Thomas Piccirello
489bacd766 WebUI: Conditionally show filters sidebar
This fixes a bug where the filters sidebar would always be displayed when switching back to the Transfers tab.

Closes #19257.
PR #20600.
2024-03-26 12:41:47 +08:00
thalieht
5d1c249606 Use Start/Stop instead of Resume/Pause
PR #20532.

---------

Co-authored-by: Vladimir Golovnev (Glassez) <glassez@yandex.ru>
2024-03-25 19:11:04 +03:00
Chocobo1
f2d6129db3 Merge pull request #20590 from Chocobo1/py
GHA CI: check python scripts
2024-03-25 13:42:09 +08:00
HamletDuFromage
5c67c5a77d Add regex toggle for WebUI torrent filtering
PR #20566.
2024-03-24 13:44:57 +08:00
Chocobo1
47c38e8d91 Apply formatting 2024-03-23 13:55:58 +08:00
Chocobo1
931de85ab5 Merge pull request #20520 from Chocobo1/i18n
Use client side translation for public login page
2024-03-18 13:23:44 +08:00
sledgehammer999
6a82cb1af6 Update WebUI translations from old format 2024-03-16 01:20:11 +08:00
sledgehammer999
f8ae8f419d Add helper scripts to manage WebUI translations 2024-03-16 01:20:11 +08:00
Chocobo1
ac91c1348b Use client side translation for public login page
The translation strings are meant to be synced from Transifex.
2024-03-16 01:20:11 +08:00
Vladimir Golovnev
d5e41bf679 Allow torrents to override default share limit action
PR #20528.
2024-03-12 14:08:59 +03:00
Thomas Piccirello
c06817f4eb Add button for sending test email
This allows for easily testing whether the provided email configuration is correct.

PR #20488.
2024-03-08 21:51:44 +08:00
sledgehammer999
8a1bc8e5fd Bump copyright year 2024-03-03 06:02:40 +02:00
sledgehammer999
6964132475 Sync translations from Transifex and run lupdate 2024-03-03 05:53:09 +02:00
JayRet
f265eb0166 Improve WebUI login behavior
Closes #20441.
PR #20442.
---------

Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2024-03-02 14:47:02 +08:00
Vladimir Golovnev
0114610a40 Provide torrent creation feature via WebAPI
PR #20366.
Closes #5614.

Co-authored-by: Radu Carpa <radu.carpa@cern.ch>
2024-02-27 15:57:16 +03:00
Chocobo1
15697f904d Add a small delay before processing the key input of search boxes
PR #20465.
Closes #20025.
Closes #20235.
2024-02-27 12:57:55 +08:00
Chocobo1
46e8ee50c8 Allow to set custom suffix to window title
This is to allow users to differentiate qbt instances when there are multiple running.
PR #20429.
Closes #17905.
2024-02-27 12:41:12 +08:00
Chocobo1
364bcf73ee Write format result directly to file
And not print to stdout.
2024-02-25 20:17:56 +08:00
Chocobo1
031fa6183c Add viewport meta tag
This helps displaying WebUI on mobile devices. Note that WebUI aren't
optimized for mobile yet.
2024-02-25 20:17:56 +08:00
Chocobo1
66c34ddb6e Avoid leaking user locale preference to the web 2024-02-25 20:17:56 +08:00
Chocobo1
3f2b4afc21 Add description meta tag 2024-02-25 20:17:56 +08:00
Chocobo1
e1fa7e01c6 Remove unneeded polyfill
All browsers already have native support for it.
2024-02-25 20:17:56 +08:00
Chocobo1
9192c988ed Warp script in anonymous scope (IIFE)
It was erroneously removed in 9b64d50660.
2024-02-25 20:17:56 +08:00
Chocobo1
cffd74b62a Add support for SSL torrents
The 'SSL torrent' feature is not standardized. I.e. there are no BEP (BitTorrent Enhancement Proposals) associated with it, so we do not greatly encourage its usage as it will only work with libtorrent clients and derivatives. It will not work with other torrent clients that do not support the libtorrent specific implementation.
This PR aims to provide minimal support for those who need SSL torrents. Furthermore, it is intended that there will be no UI support (nor indication) of adding/creating SSL torrents.

* Prerequisites:
  I omit the instructions of creating those files as the intended audience (experts & advanced users) should have no problem with it. All files are as follow:
  1. Root (torrent publisher) certificate
  2. Root private key
  3. A .torrent file created with root certificate 
  5. Peer certificate (signed by the root certificate)
  6. Peer private key
  7. Diffie-Hellman parameters file
  
  All files are stored in .pem format.

* Enable SSL torrent protocol in qbt
  There are 2 hidden keys to put in qbt config file, under `[BitTorrent]` section:
  1. `Session\SSL\Enabled`: set it to `true`.
  2. `Session\SSL\Port`: set it to some unused port or omit the key entirely to let qbt pick one for you.
* Add an SSL torrent to qbt
  The only way of adding an SSL torrent is via WebAPI. The `/api/v2/torrents/add` endpoint will support 3 additional parameters. You must provide them for an SSL torrent.
  1. `ssl_certificate`: Contents of the peer certificate file (in PEM format).
  2. `ssl_private_key`: Contents of the peer private key file.
  3. `ssl_dh_params`: Contents of the Diffie-Hellman parameters file.

* Change the SSL parameters to a torrent
  In case you provided wrong SSL parameters when adding a torrent, there is a new endpoint `/api/v2/torrents/setSSLParameters` that you can update the SSL parameters. The parameters (`ssl_*`) are the same as `/api/v2/torrents/add` endpoint.

* Query the SSL parameters of a torrent
  There is a new endpoint `/api/v2/torrents/SSLParameters` that you can query the SSL parameters of a torrent.

References:
* https://www.libtorrent.org/manual-ref.html#ssl-torrents
* https://blog.libtorrent.org/2012/01/bittorrent-over-ssl/

PR #20338.
---------

Co-authored-by: Radu Carpa <radu.carpa@cern.ch>
2024-02-25 19:58:58 +08:00
Chocobo1
bb8a012b1c Revise cache internals
Now cache initialization and `get()` is less costly to use and it shifts the weight to `set()`.

PR #20430.
2024-02-18 14:16:00 +08:00
Chocobo1
63c9b6388e Rename to WebUI
PR #20428.
2024-02-18 13:58:44 +08:00
Chocobo1
e31b553807 Stop sync requests after qbt has been shutdown 2024-02-14 03:38:09 +08:00
Chocobo1
a9741bb203 Defer loading of js code on landing pages
So that DOM tree can be processed earlier.
2024-02-14 03:38:09 +08:00
Chocobo1
67e0a2de44 Combine script tags 2024-02-14 03:38:09 +08:00
Chocobo1
1afb3ff433 Add support for dark theme 2024-02-14 03:38:09 +08:00
Chocobo1
16a91f26fb Simplify code 2024-02-14 03:38:09 +08:00
Chocobo1
963a7faab8 Migrate to Cache for commonly used data
Previously it was abusing the `localStorage` and now it is storing data in memory (per session).
2024-02-14 03:38:09 +08:00
Chocobo1
d06d5b923a Cache program preferences
So that qbt can just use the data from memory which is vastly faster than waiting for a response
over the net.
2024-02-14 03:38:09 +08:00
Vladimir Golovnev
60bb819e2e Allow WebAPI to specify filename and mime type for result data
PR #20377.
2024-02-12 09:07:09 +03:00
Chocobo1
8ef99b336c Remove 'no cache' directive for POST requests
The response for POST request is only cachable under a specific condition and
qbt doesn't use it.
https://developer.mozilla.org/en-US/docs/Glossary/Cacheable
2024-02-11 23:28:44 +08:00
Chocobo1
f7e9ff0fb0 Clean up functions in global scope 2024-02-11 23:28:44 +08:00
Chocobo1
9b64d50660 Conditionally hide settings in Advanced Options 2024-02-11 23:28:44 +08:00
Chocobo1
5fe5c333b5 Rename file 2024-02-11 23:28:44 +08:00
Chocobo1
49f819ef78 Use correct type for each option 2024-02-11 23:28:44 +08:00
Chocobo1
f87ea1b5d3 Sort languages combobox by language code
* Avoid creating redundant file lists
* Sort languages combobox by language code

PR #20365.
2024-02-05 13:44:18 +08:00