While implementing the resource pack downloader in another branch, I
noticed that most of the code in the success callback was identical in
both cases, safe for a few minute differences in strings. So, this tries
to make it easier to share this piece of code.
However, it still leaves the possibility of extending the methods in
ResourceModel to accomodate for cases where this similarity may not
hold.
Signed-off-by: flow <flowlnlnln@gmail.com>
This allows us to check whether a search request is already on-going, in
which case we don't need to make another one (and shouldn't).
Signed-off-by: flow <flowlnlnln@gmail.com>
This prevents a crash in which the pack list gets updated in a search
request meanwhile a versions / extra info request is being processed.
Previously, this situation would cause the reference in the latter
callbacks to be invalidated by an internal relocation of the pack list.
Signed-off-by: flow <flowlnlnln@gmail.com>
This refactors the sorting methods to join every bit of it into a single
list, easing maintanance. It also removes the weird index contraint on
the list of methods by adding an index field to the DS that holds the
method.
Lastly, it puts the available methods on their respective API, so other
resources on the same API can re-use them later on.
Signed-off-by: flow <flowlnlnln@gmail.com>
This makes it so that we don't need a reference to the parent page in
the model. It will be useful once we change the page from a widget-based
one to a QML page.
It also makes tasks be created in the dialog instead of the page, so
that the dialog can also have the necessary information to mark versions
as selected / deselected easily. It also makes the task pointers into
smart pointers.
Signed-off-by: flow <flowlnlnln@gmail.com>
when i.e. clicking on links or just using the downloader at all, this
prevents some flickering and the widget never getting hidden in some
cases.
Signed-off-by: flow <flowlnlnln@gmail.com>
Puts them all inside the 'ResourceDownload' namespace, so that it's a
bit clearer from the outside that those belong to the same 'module'.
Signed-off-by: flow <flowlnlnln@gmail.com>
Firstly, this abstract away behavior in the mod download models that can
also be applied to other types of resources into a superclass, allowing
other resource types to be implemented without so much code duplication.
For that, this also generalizes the APIs used (currently, ModrinthAPI
and FlameAPI) to be able to make requests to other types of resources.
It also does a general cleanup of both of those. In particular, this
makes use of std::optional instead of invalid values for errors and,
well, optional values :p
This is a squash of some commits that were becoming too interlaced
together to be cleanly separated.
Signed-off-by: flow <flowlnlnln@gmail.com>
fixed by properly converting from a file path and converting to native seperators.
should have known naive handling of file path as a URL would come back to bite us cross platform.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
This system allows us to globally define categories, and control whether
they are shown or not at runtime. It also does some things by it's own,
so we can remove some (uhhh) code.
Lastly, this allows changing the behavior of the logger at runtime via
environment variables that Qt takes care of for us.
Signed-off-by: flow <flowlnlnln@gmail.com>
* Curseforge workarounds
This should allow people to use Curseforge without having to manually
paste a working key into the settings or change the user agent.
Signed-off-by: Lenny McLennington <lenny@sneed.church>
* chore: update cf api key api url
Sascha says the domain name we're using is not gonna be renewed, so I'm
switching it to a domain controlled by me instead so that this won't be
a problem in the future.
Signed-off-by: Lenny McLennington <lenny@sneed.church>
* feat: add ability to disable cf api key fetching
by setting the cf api key api url to a blank string
Signed-off-by: Lenny McLennington <lenny@sneed.church>
* don't ask before fetching key
* change polymc mention to pollymc
Signed-off-by: Lenny McLennington <lenny@sneed.church>
Co-authored-by: Lenny McLennington <lenny@sneed.church>
makes bundles slightly smaller on windows and macos:
- qopensslbackend will not be used neither on macos nor on qt6 windows, so let's just not copy it
- qcertonlybackend won't be used and wouldn't work for prism anyways as it doesn't support some features we use
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
This makes it so that the later call to parse the old manifest doesn't
change the class data, so that the new data con continue there and be
reflected on the component list later.
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: flow <flowlnlnln@gmail.com>
This avoids creating a bunch of threads that fills up the maximum amount
allowed by QThreadPool, and causes a deadlock between the helper threads
and the main thread (main thread tries to create threads in painting
code, but isn't able to, so it keeps waiting for a thread to free up,
but all the threads are waiting on the main thread to process some
events).
Signed-off-by: flow <flowlnlnln@gmail.com>