Commit Graph

189 Commits

Author SHA1 Message Date
clickdevin
d4f2059b78 Fix bugs when updating curseforge modpacks
Signed-off-by: clickdevin <git@clickdevin.me>
2023-06-14 10:42:37 -04:00
PandaNinjas
318d11481d
Resolve other switch fallthrough issues 2023-06-07 19:37:54 -04:00
Alexandru Ionut Tripon
1840505a0f
Fix crash when selecting same mod from different providers (#1029) 2023-06-02 18:04:06 -03:00
Trial97
51c39ec681
Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop 2023-05-28 19:16:14 +03:00
Trial97
10436ed70c
Fixed code quality
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 19:15:41 +03:00
Trial97
737fc1a2a4
Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 18:01:39 +03:00
Trial97
27c3775f99
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into Fix_Assert
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 17:44:23 +03:00
Rachel Powers
21cb459899 fix: memory leak NetJob wans't getting cleaned up. ensure lambda capture of job doens;t increase refcount or it will be cyclic
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-21 01:47:54 -07:00
Rachel Powers
1b3ff96ffd fix: memory leak with NetJob and responce not getting cleaned up
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-21 01:46:28 -07:00
Trial97
ffcc58cb3e
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-05-14 14:20:24 +03:00
Rachel Powers
b6452215c1 feat: add details signal to Task
feat: add details to mod pack downloading
feat: add logging rule sloading form `ligging.ini at data path root
feat: add `launcher.task` `launcher.task.net` and `launcher.task.net.[down|up]load` logging categories
fix: add new subtask progress to the end of the lay out not the beginning (cuts down on flickering)

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:47:50 -07:00
Rachel Powers
9d2f0e4dc8 feat: Propogated subtask progress
Oh boy this is big.

> TaskStepProgress struct is now QMetaObject compatabile and can be sent through signals
> Task now has a method to propogates sub task progress it must be signal bound by each task containing a task wishing to report progress of it's children.
> Downloads report speed
> Tasks now have UUIDS to track them
  - use when reporting
  - use when logging
  - use when storeing them or objects related to them

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:47:20 -07:00
Trial97
42bc91463e
Updated links
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 20:37:17 +03:00
Trial97
b4fa6e120a
Fixed tipo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
Trial97
fac33498db
Made some copy by reference
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
Trial97
4fe497cd68
First working version with curseforge mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
Trial97
5655a33515
Added Dependency API
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
Trial97
6d5c629b43
Added dependencies to the APIs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-10 00:04:35 +03:00
flow
c3ea303a37
feat(RD): add resource pack downloader
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-05 17:02:52 -03:00
flow
29f7ea752f
refactor: make shared_qobject_ptr ctor explicit
This turns issues like creating two shared ptrs from a single raw ptr
from popping up at runtime, instead making them a compile error.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-25 16:57:51 -03:00
Sefa Eyeoglu
6e841a3b7e
Merge branch 'develop' into remove-updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-24 14:40:17 +01:00
flow
ea5020e188
fix(license): add/fix my copyright/license headers
*sobbing in messy legal stuff i know nothing about*

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-23 11:12:43 -03:00
flow
ba677a8cb7
refactor: change some ResourceAPI from NetJob to Task
This makes it easier to create resource apis that aren't network-based.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:09 -03:00
flow
36571c5e22
refactor(RD): clear up sorting methods
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>
2023-01-13 16:23:07 -03:00
flow
45d1319891
refactor(RD): decouple ResourceModels from ResourcePages
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>
2023-01-13 16:23:07 -03:00
flow
6a18079953
refactor: generalize mod models and APIs to resources
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>
2023-01-13 16:23:00 -03:00
Rachel Powers
7f438425aa refactor: add an identify function to make easy to reuse
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-29 19:47:19 -07:00
Rachel Powers
c470f05abf refactor: use std::filesystem::rename insted of copy and then moving.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-29 17:21:54 -07:00
Rachel Powers
3691f3a296 fix: cleanup and suggested changes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-26 14:50:15 -07:00
Rachel Powers
b2082bfde7 fix: explicit QFileInfo converison for qt6
fix: validatePath in validateZIPResouces

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-25 17:16:26 -07:00
Rachel Powers
78984eea3a feat: support installing worlds during flame pack import.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-25 16:49:56 -07:00
Rachel Powers
8422e3ac01 feat: zip resource validation check for flame
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 20:43:17 -07:00
flow
5450e0edf3
fix(Inst.Import): don't set managed pack info from imported ZIPs
This prevents the Managed Pack page from showing up even though there's
no way for it to work correctly.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-13 13:43:27 -03:00
flow
4a13d72997
Merge pull request #32 from flowln/modpack_update_page
Closes https://github.com/PrismLauncher/PrismLauncher/issues/180
Closes https://github.com/PrismLauncher/PrismLauncher/issues/170
2022-12-10 06:34:18 -08:00
Rachel Powers
0f48e0fc06 fix(blockedmods): Track and use targetFolder for blocked files
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-08 18:42:51 -07:00
flow
34230bfcf4
fix: don't try updating Flame instance names when updating versions
Since the exact version string is only available in the manifest,
there's no easy way of getting it before commiting to the update, so
there's not much of a good way of showing the updated name in the UI,
and using the displayName is weird and gives some buggy behavior.

We may want to re-enable it in the future if we find a reliable way of
showing the correct info on the UI before starting the update.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-07 18:05:46 -03:00
flow
bb386a1162
fix(ManagedPackPage): only update the current instance exactly
Also carry on the original ID to avoid updating the wrong instance.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:34 -03:00
flow
968366c2ae
feat+fix: allow forwarding extra info to InstanceImportTask
This allows us to pass to the creation instances their actual pack ID
and version ID, that in Flame's case, are only available before starting
to create an instance.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
flow
82699cc297
feat: allow skipping the update confirmation dialog
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
flow
08d008a5aa
refactor: abstract away update confirmation dialog
... so that we can avoid code duplication.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:29 -03:00
Sefa Eyeoglu
c8c3fe1023
chore: add license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 13:18:50 +01:00
Sefa Eyeoglu
85bddbed86
chore: reformat code
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 13:16:27 +01:00
Sefa Eyeoglu
07359865c6
fix: don't allocate BlockedsModsDialog
Fixes temporary memory leak!

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-05 21:39:26 +01:00
flow
386fb28a35
fix(FileResolvingTask): Fail instead of crash when there's API errors
Also remove non-used variable (rip).

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-01 15:33:35 -03:00
Rachel Powers
9af1b00df5 feat: add list of watched folders
move explanation text into dialog class and it's own label

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 18:05:19 -07:00
Rachel Powers
3f6cc17818 properly handle a currently running hashing task
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 15:45:40 -07:00
Rachel Powers
5909af9878 drag&drop + add folder to watch
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 14:17:33 -07:00
Rachel Powers
2f10fa8b61 add some extra debug logs for CF blocked mods
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 05:41:32 -07:00
Rachel Powers
209a1650e4 clang_format and code cleanup
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 07:06:36 -07:00
Rachel Powers
6010ce0dc5 chore(remove FS::copyFile):
Now that #333 is merged and FS::copy works on non directory copyFile can be removed.

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:28:57 -07:00
Rachel Powers
fda2c116be code quality cleanup
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
Rachel Powers
e9d4793b1e minor clean up and add some docs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
Rachel Powers
13c7efa058 copy found mods to instance (FTB and Flame)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
Rachel Powers
028e086960 send blocked mod info to dialog & prototype UI
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
flow
e6e92f2b0e
fix: only allow workarounds for blocked mods from MR when 100% safe
If a version on Modrinth has more than a single mod loader associated,
it means that it's possible we might get the wrong file for download,
since individual files don't really have this kind of metadata in the
API response.

So, in such cases, it's best to let the user take care of it instead.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-28 13:31:21 -03:00
Sefa Eyeoglu
970e4b020e
fix: fix segfault when resolving Flame resources
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-22 14:11:51 +02:00
flow
01b90809e8
fix: memory leak when finishing blocked mods job
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-20 16:55:22 -03:00
flow
dfa220ef02
fix: issues with aborts (again)
i hate it

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-13 15:10:35 -03:00
timoreo
9ff364b0d3
huge nit: added const refs, everywhere
Signed-off-by: timoreo <contact@timoreo.fr>
2022-09-26 11:50:31 +02:00
flow
06019f01e3
feat: add dialog to ask whether to chaneg instance's name
This prevents custom names from being lost when updating, by only
changing the name if the old instance name constains the old version,
so that we can update it if the user whishes to.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:10 -03:00
flow
ddde885084
fix: show warning in case there's no old index when updating
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:10 -03:00
flow
be8c6f218c
refactor: setAbortStatus -> setAbortable
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:10 -03:00
flow
d2fdbec41d
fix: move file deletion to the end of the instance update
This makes it harder for problems in the updating process to affect the
current instance. Network issues, for instance, will no longer put the
instance in an invalid state.

Still, a possible improvement to this would be passing that logic to
InstanceStaging instead, to be handled with the instance commiting
directly. However, as it is now, the code would become very spaguetti-y,
and given that the override operation in the commiting could also put
the instance into an invalid state, it seems to me that, in order to
fully error-proof this, we would need to do a copy operation on the
whole instance, in order to modify the copy, and only in the end
override everything an once with a rename. That also has the possibility
of corrupting the instance if done without super care, however, so I
think we may need to instead create an automatic backup system, with an
undo command of sorts, or something like that. This doesn't seem very
trivial though, so it'll probably need to wait until another PR. In the
meantime, the user is advised to always backup their instances before
doing this kind of action, as always.

What a long commit message o.O

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
2dd372600c
fix: some abort-related issues
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
eda6cf11ef
feat(ui): improve info dialog before updating an instance
Adds a 'Cancel' option, and add a note about doing a backup before
updating.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
87002fb8f8
fix: hook up setAbortStatus in instance import tasks
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
4b0ceea894
fix: correctly set managed pack fields in CF pack
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
8c0816c166
feat: add override awareness to CF modpack updating
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
6131346e2f
refactor: change the way instance names are handled
While working on pack updating, instance naming always gets in the way,
since we need both way of respecting the user's name choice, and a
standarized way of getting the original pack name / version.

This tries to circunvent such problems by abstracting away the naming
schema into it's own struct, holding both the original name / version,
and the user-defined name, so that everyone can be happy and world peace
can be achieved! (at least that's what i'd hope :c).

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
795d6f35ee
feat: add curseforge modpack updating
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
ebd46705d5
refactor: move creation of CF file download task to a separate function
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
72d2ca234e
refactor: move flame modpack import to separate file
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:07 -03:00
flow
2246c3359b
refactor: add throw_on_blocked arg to Flame file parse
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:07 -03:00
flow
242fb156a2
feat: add 'getFiles' by fileIds route in Flame API
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:07 -03:00
flow
6aaf1f4f21
feat: lazy-load CF mod descriptions
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
flow
368a0ddd44
feat: add mod descriptions to CF mods
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
flow
e741cb7f0a
fix: add abort handlign in Flame's FileResolvingTask
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 20:33:33 +02:00
Sefa Eyeoglu
28ae5d710e
fix: fix translations for mod updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-19 18:03:45 +02:00
flow
de9e304236
fix: std::list -> QList
Qt6 removed Qlist::toStdList() 😭

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:45 -03:00
flow
001bbef9ee
fix: don't use shared_ptr for a background task T_T
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
c4316e81e6
change: make Mod a QObject used as a pointer
Prevents problems when copying it around!

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
5f75e531e6
fix: handling around disabled mods
Don't update disabled mods to prevent mod duplication. Also, chop
filename in the metadata with a '.disabled'.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
a7648d60ce
fix: don't require non-essential items in mod index
Also adds slug field.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
52c45c2d32
feat: add some mod api calls
- Get Project: Already existed but required a specific caller type. This
  is more general.
- Get Projects: A single call to multiple of the above

Both providers support these calls.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
4e6978ff6f
feat: improve metadata gen. networking and performance
This makes the metadata generation code a lot messier and harder to use,
but there's not really much else that can be done about it while
preserving all it's capabilities :(

At least we now have speed

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
6e2869834f
feat: add mod update dialog
This subclasses the Review mods dialog to make a "Update review" one.
Also, all the necessary components built until now are put together in a
coherent unity that checks and generates metadata on-the-fly and checks for
mod updates, while giving and receiving feedback to the user.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
b8b71c7dd2
feat: add mod update check tasks
Those tasks take a list of mods and check on the mod providers for
updates. They assume that the mods have metadata already.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
c3f6c3dd82
feat: add changelog to mod providers
The Modrinth changelog is fairly straight-forward, as it's given to us
directly with the API call we already did. Flame, on the other hand,
requires us to do another call to get the changelog, so it can introduce
quite a heavy performance impact. This way, we make it optional to get
such changelog.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
4bcf8e6975
feat: add api call to flame
Call added:
- Get Fingerprints Matches
- Get Mod File Changelog

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
Sefa Eyeoglu
3b4539de79
chore: update license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
984692dc62
refactor: fix deprecation up to Qt 5.15
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:17:52 +02:00
Sefa Eyeoglu
e6fe701727
Merge pull request #808 from Scrumplex/fix-lgtm-warnings 2022-07-09 01:10:59 +02:00
flow
4bfc445cf8
fix: add progress indicator on Flame mod resolution dialog
This code is super :pofat: omg

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03 12:43:04 -03:00
Sefa Eyeoglu
9ec260619b
fix: fix warnings reported by LGTM.com 2022-06-17 16:34:32 +02:00
DioEgizio
1f6cef6f8a
fix https://github.com/PolyMC/PolyMC/issues/798 2022-06-15 09:11:23 +02:00
Ezekiel Smith
27239b2dde
Merge pull request #634 from flowln/donate_links
More links for CF / Modrinth mods / modpacks
2022-06-14 23:52:00 +10:00
Sefa Eyeoglu
1ab00ca8b2
Merge pull request #426 from flowln/mod_perma
Add on-disk mod metadata information
2022-06-04 13:23:38 +02:00
timoreo22
699ad316f0
Rework curseforge download (#611)
* Use the bulk endpoint on mod resolution for faster download
* Search on modrinth for api blocked mods
* Display a dialog for manually downloading blocked mods
2022-05-28 21:53:12 +02:00
Sefa Eyeoglu
938cae1130
revert: remove CurseForge workaround for packs too
Partial revert. Handles missing download URLs.
2022-05-25 23:14:13 +02:00
flow
e644380160
feat: add links to curseforge modpacks 2022-05-24 12:27:32 -03:00