Commit Graph

818 Commits

Author SHA1 Message Date
flow
ae2ef324f2
feat: add remaining links to modrinth mods 2022-05-24 11:58:11 -03:00
flow
d0337da8ea
feat: add remaining links to modrinth modpacks 2022-05-24 11:52:27 -03:00
flow
5e17d53c7f
fix: missing tr() and update donate message 2022-05-24 11:11:40 -03:00
flow
22e0527502
feat: add donate info to modrinth modpacks 2022-05-24 09:46:58 -03:00
flow
ca3c6c5e8a
feat: add donate links for modrinth mods 2022-05-24 09:38:48 -03:00
Ryan Cao
9673dac22b
add more #ifdefs 2022-05-24 16:18:02 +08:00
Ryan Cao
0426149580
standard macOS app behavior 2022-05-24 13:35:01 +08:00
Jamie Mansfield
4ee5264e24
ATLauncher: Delete files from configs if they conflict with a mod 2022-05-23 21:44:01 +01:00
Jamie Mansfield
101ca60b2b
ATLauncher: Handle extra arguments depends 2022-05-23 20:57:15 +01:00
Jamie Mansfield
f28a0aa666
ATLauncher: Handle main class depends 2022-05-23 20:57:14 +01:00
flow
5a1de15332
fix: use a more robust method of finding metadata indexes
Often times, mods can have their name in different forms, changing one
letter to caps or the other way (e.g. JourneyMaps -> Journeymaps).
This makes it possible to find those as well, which is not perfect by
any means, but should suffice for the majority of cases.
2022-05-23 14:58:15 -03:00
flow
42f8ec5b14
fix: do modrinth changes on flame too
Also fix a dumb moment
2022-05-23 14:58:14 -03:00
flow
2fc1b99911
chore: add license headers
Prevents a massive inload of Scrumplex ditto's :)

I didn't add it to every file modified in this PR because the other
changes are pretty minor, and would explode the diff of the PR. I hope
that's not a problem O_O
2022-05-23 14:58:14 -03:00
flow
3a923060ce
fix: use correct hash_type when creating metadata
also fix: wrong parameter name in LocalModUpdateTask's constructor
also fix: correct hash_format in CF
2022-05-23 14:58:14 -03:00
flow
0985adfd74
change: support newest changes with packwiz regarding CF 2022-05-23 14:58:08 -03:00
flow
59d628208b
feat: allow trying to use multiple hash types 2022-05-23 14:43:31 -03:00
flow
5c5699bba5
refactor: move individual pack version parsing to its own function 2022-05-23 14:43:31 -03:00
flow
67e0214fa5
fix: don't try to delete mods multiple times
Shows a more helpful message if there's a parsing error when reading the
index file.

Also fixes a clazy warning with using the `.data()` method in a
temporary QByteArray object.
2022-05-23 14:43:10 -03:00
flow
e17b6804a7
fix: implement PR suggestions
Some stylistic changes, and get hashes from the mod providers when
building the metadata.
2022-05-23 14:43:09 -03:00
flow
96e36f0604
refactor: make mod metadata presence (or lack of) easier to find out 2022-05-23 14:43:09 -03:00
flow
a99858c64d
refactor: move code out of ModIndex.h
Now it's in ModIndex.cpp
2022-05-23 14:43:07 -03:00
flow
ba50765c30
tidy: apply clang-tidy to some files
Mostly the ones created in this PR + Mod.h / Mod.cpp / ModDetails.h
2022-05-23 14:42:28 -03:00
flow
d7f6b36990
test+fix: add basic tests and fix issues with it 2022-05-23 14:42:28 -03:00
flow
4439666e67
feat: allow disabling mod metadata usage 2022-05-23 14:42:28 -03:00
flow
23febc6d94
feat: cache metadata in ModDetails
Allows for more easy access to the metadata by outside entities
2022-05-23 14:42:28 -03:00
flow
fab4a7a602
refactor: abstract metadata handling and clarify names 2022-05-23 14:42:28 -03:00
flow
092d2f8917
feat: add support for converting builtin -> packwiz mod formats
Also adds more documentation.
2022-05-23 14:42:28 -03:00
flow
e9fb566c07
refactor: remove unused mod info and organize some stuff 2022-05-23 14:42:27 -03:00
flow
5a34e8fd7c
refactor: move mod tasks to their own subfolder
Makes the launcher/minecraft/mod/ folder a little more organized.
2022-05-23 14:42:27 -03:00
flow
fcfb2cfc3d
feat: use mod metadata for getting mod information
For now this doesn't mean much, but it will help when we need data
exclusive from the metadata, such as addon id and mod provider.

Also removes the metadata when the mod is deleted, and make the Mod.h
file a little more pleasing to look at :)
2022-05-23 14:42:27 -03:00
flow
e93b9560b5
feat: add method to delete mod metadata
Also moves indexDir setting from LocalModUpdateTask -> ModFolderModel
2022-05-23 14:42:27 -03:00
flow
8e4438b375
feat: add parser for current impl of packwiz mod.toml
This reads a local mod.toml file and extract information from it. Using
C libs in C++ is kind of a pain tho :(
2022-05-23 14:42:27 -03:00
flow
eaa5ce4467
feat(ui): adapt SequentialTask to nested SequentialTasks 2022-05-23 14:42:27 -03:00
flow
c86c719e1a
feat: add mod index updating to ModDownloadTask
This makes ModDownloadTask into a SequentialTask with 2 subtasks:
Downloading the mod files and updating the index with the new
information.

The index updating is done first so that, in the future, we
can prompt the user before download if, for instance, we discover
there's another version already installed.
2022-05-23 14:42:27 -03:00
flow
b30b88716e
feat: add very early mod.toml packwiz support
Also use it as a on-disk format for storing mod metadata. This will be
used later on to make better mod managment.
2022-05-23 14:42:22 -03:00
Ryan Cao
6d0ea13f97
make JVM args PlainTextEdit 2022-05-23 16:52:12 +08:00
Sefa Eyeoglu
dca4ea5cea
Merge pull request #621 from Scrumplex/remove-curseforge-workarounds 2022-05-23 10:47:30 +02:00
flow
ac4497a1f2
Merge pull request #605 from jamierocks/h-atl-improv
ATLauncher: Various work to improve the platform support
2022-05-22 20:09:13 -03:00
Sefa Eyeoglu
cb69869836
revert: remove CurseForge workaround
We have been asked by CurseForge to remove this workaround as it
violates their terms of service. This is just a partial revert, as the
UI changes were otherwise unrelated.

This reverts commit 92e8aaf36f, reversing
changes made to 88a93945d4.
2022-05-22 22:07:03 +02:00
Sefa Eyeoglu
f2e2053134
feat: add trailing slash to meta URL if it is missing 2022-05-22 21:36:31 +02:00
Sefa Eyeoglu
b181f4bc30
fix: improve spacing in APIPage 2022-05-22 21:36:30 +02:00
dada513
f00dbdc215
Make Metaserver changable in settings
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Co-authored-by: flow <flowlnlnln@gmail.com>
2022-05-22 21:35:20 +02:00
Sefa Eyeoglu
7d91db607f
Merge pull request #554 from PolyMC/more_paste_services 2022-05-22 20:49:11 +02:00
Sefa Eyeoglu
b191291737
Merge pull request #577 from PolyMC/fix/toolbar_🦀_fix 2022-05-22 18:11:00 +02:00
Sefa Eyeoglu
29ef1e2c4b
Merge pull request #597 from Scrumplex/refactor-modloader-modapi 2022-05-22 13:17:53 +02:00
Ezekiel Smith
bc450e4cee
Merge pull request #612 from DioEgizio/update-cf-logo-real
change cf icon to a more fancy one
2022-05-21 09:53:31 -07:00
LennyMcLennington
de02deac98
Make if statement condition more readable
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-05-21 17:30:54 +01:00
Lenny McLennington
e2ad3b0183
Add migration wizard, fix migration from custom paste instance
- Very basic wizard just to allow the user to choose whether to keep
  their old paste settings or use the new default settings.

- People who used custom 0x0 instances would just be kept on those
  settings and won't see the wizard.
2022-05-21 17:30:19 +01:00
Lenny McLennington
caf6d02728
Change paste settings and add copyright headers
- There's now a notice reminding people to change the base URL if they
  had a custom base URL and change the paste type (that was something I
  personally had problems with when I was testing, so a reminder was
  helpful for me).

- Broke down some of the long lines on APIPage.cpp to be more readable.

- Added copyright headers where they were missing.

- Changed the paste service display names to the names they are more
  commonly known by.

- Changed the default hastebin base URL to https://hst.sh due to the
  acquisition of https://hastebin.com by Toptal.
2022-05-21 17:30:09 +01:00
Lenny McLennington
35f71f5793
Support paste.gg, hastebin, and mclo.gs 2022-05-21 17:28:22 +01:00
DioEgizio
b2a89ee4b9 change cf icon to a more fancy one
taken from QuiltMC/art in the emoji folder, so it's licensed under CC0
2022-05-21 17:49:52 +02:00
Jamie Mansfield
b84d52be3d
ATLauncher: Display warnings when selecting optional mods 2022-05-21 15:20:38 +01:00
Jamie Mansfield
305973c0e7
ATLauncher: Display install messages if applicable 2022-05-21 15:19:55 +01:00
Jamie Mansfield
7c251efc47
ATLauncher: Display mod colours in optional mod dialog 2022-05-21 15:18:50 +01:00
flow
166f872712
fix: various issues with ProgressDialog and SequentialTasks
- Fix aborting sequential tasks
- Fix displaying wrong number of tasks concluded
- Fix text cutting when the URL is too big
2022-05-21 08:36:36 -03:00
flow
8f2c485c92
feat(ui): make selected mods in downloader bold with underline
Makes it easier to find which mods are selected in case you want to
change those.
2022-05-21 08:04:26 -03:00
flow
613f2fc447
feat: allow deselecting mods from the mod confirmation dialog
This adds a checkbox to each mod on the dialog that shows up when
confirming the mods to download, so you can deselect some of those if
you want to.
2022-05-21 08:02:27 -03:00
dada513
9a0d6124f3
Merge pull request #609 from timoreo22/feature/fix-blocked-modpacks 2022-05-21 12:22:45 +02:00
Sefa Eyeoglu
b4707f46ad
Merge pull request #500 from flowln/net_refactor
Refactor a little the code in `launcher/net/` files
2022-05-21 12:06:34 +02:00
Sefa Eyeoglu
482e049ac7
Merge pull request #606 from jamierocks/h-launch-version 2022-05-21 11:43:19 +02:00
timoreo
c04adf7452
Do the url trick on initial modpack download too 2022-05-21 08:31:07 +02:00
timoreo22
92e8aaf36f
Merge pull request #608 from timoreo22/feature/curseforge-fix
Very Temporary Fix for curseforge
2022-05-21 06:34:43 +02:00
Sefa Eyeoglu
3b4b34b369
fix(ui): make CF and MR modpack dialogs more consistent 2022-05-20 22:48:42 +02:00
timoreo
6542f5f15a
Apply suggestions 2022-05-20 22:06:36 +02:00
timoreo
30b56dbcbd
Port temp fix to mods too 2022-05-20 22:00:38 +02:00
timoreo
6afe59e76b
Very Temporary Fix for curseforge 2022-05-20 21:19:19 +02:00
dada513
2847cefff7
Add cursefrog key override 2022-05-20 19:56:27 +02:00
Jamie Mansfield
96f16069a9
Launch: Apply the Minecraft version correctly
It was previously using a deprecated field.
2022-05-20 18:47:11 +01:00
Jamie Mansfield
188c5aaa35
Launch: Match Vanilla launcher version string behaviour
This removes a means of profiling users.
2022-05-20 18:43:47 +01:00
Jamie Mansfield
f5f59203a2
ATLauncher: Reduce boilerplate code for fetching versions 2022-05-20 18:05:58 +01:00
Jamie Mansfield
c329730de8
ATLauncher: Install LiteLoader as a component where possible 2022-05-20 18:03:32 +01:00
Jamie Mansfield
97a83c9b7a
ATLauncher: Avoid downloading Forge twice for older packs
This resolves a quirk where Forge would still be downloaded for use as
a jarmod, even when we detected Forge as a component.
2022-05-20 17:58:00 +01:00
timoreo22
1e6df7eec0
Merge pull request #592 from flowln/technic
Use empty string when version is null in the Technic pack manifest
2022-05-20 10:56:42 +02:00
Sefa Eyeoglu
36045a8b0a
chore: improve readability
Co-authored-by: flow <thiagodonato300@gmail.com>
2022-05-19 12:37:20 +02:00
Sefa Eyeoglu
943090db98
refactor: allow tracking multiple mod loaders 2022-05-19 08:49:27 +02:00
Sefa Eyeoglu
77caaca50d
fix: only consider enabled mod loaders 2022-05-19 08:09:37 +02:00
Sefa Eyeoglu
f66e0fa0e8
fix: support split natives
Mojang introduced a new structure for natives, notably for LWJGL.
Now instead of using the `natives` structure of the version format, Mojang
chose to create a seperate library entry for each platform, which uses
the `rules` structure to specify the platform. These new split natives
carry the same groupId and artifactId, as the main library, but have an
additional classifier, like `natives-linux`.

When comparing GradleSpecifiers we don't look at the classifier, so when
the launcher sees an artifact called `org.lwjgl:lwjgl:3.3.1` and right
after that an artifact called `org.lwjgl:lwjgl:3.3.1:natives-linux`, it
will treat it as "already added" and forget it.

This change will include the classifier in that comparison.
2022-05-18 22:51:15 +02:00
flow
441075f610
fix: version field in technic pack manifest being null
Sometimes, the version field, that is supposed to be a string, was a
null instead. Inspecting other entries, seems like the default for not
having a version should be "", so I made it like that in case the
version was null.

I hope this fixes the issue :^)
2022-05-18 17:17:16 -03:00
timoreo22
b2878dca1d
Merge pull request #590 from DioEgizio/fix-qmj-over-fmj
fix(quilt) always prefer qmj over fmj
2022-05-18 19:18:18 +02:00
DioEgizio
127dfadc6c
fix(quilt) always prefer qmj over fmj
this fixes Quilt-only mods like ok zoomer showing wrong metadata
2022-05-18 14:33:58 +02:00
flow
ff9f3cb31f
fix conflicts with develop 2022-05-17 18:25:08 -03:00
Sefa Eyeoglu
8e9f1bcf18
fix: remove unnecessary Qt version checks 2022-05-17 22:25:50 +02:00
Sefa Eyeoglu
cc27bb3231
fix(updater): remove Windows version check
Qt 5.12 doesn't support anything older than Windows 7 anyway, so we
can't really check if we are on an older platform.
2022-05-17 22:25:50 +02:00
Sefa Eyeoglu
c1700054f4
fix: replace deprecated stuff as of Qt 5.12 2022-05-17 22:25:50 +02:00
Sefa Eyeoglu
cc13310083
Merge pull request #565 from Scrumplex/modrinth-packs
Initial Modrinth modpack support
2022-05-17 16:09:22 +02:00
Sefa Eyeoglu
1012912272
Merge pull request #567 from Scrumplex/quilt-metadata
Support `quilt.mod.json` metadata
2022-05-17 16:08:59 +02:00
Sefa Eyeoglu
edbd90a4e6
fix: update links for Quilt metadata format 2022-05-17 15:17:20 +02:00
Sefa Eyeoglu
ddc3b5eb0b
Update launcher/ui/pages/modplatform/modrinth/ModrinthPage.ui
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-05-17 15:14:53 +02:00
flow
17bbfe8d89
fix: virtual signal in Task.h 2022-05-17 06:47:00 -03:00
flow
96deb5b09d
chore: remove copyright from files i didnt mess with
This is what happens when you auto-pilot stuff xdd
2022-05-17 06:36:30 -03:00
txtsd
9b387d73e5
Merge pull request #529 from flowln/vertical_toolbar
Set right orientation for instance toolbar when moving it around
2022-05-17 12:14:34 +05:30
txtsd
c02a6780b0
Merge pull request #540 from kthchew/fix/executable-screenshot
Show "executable" screenshots in the screenshot manager
2022-05-17 10:59:55 +05:30
Lenny McLennington
6dfec4db40
Fix toolbar disappearing in a certain circumstance. 2022-05-17 00:21:57 +01:00
flow
2e9d7f5c3d
fix: mod skipping between pages and remove dead code 2022-05-16 19:17:37 -03:00
flow
696a711e39
fix: missed change to metacache entry lookup 2022-05-16 19:10:31 -03:00
flow
887246a66b
fix: typo and useless code 2022-05-16 17:09:14 -03:00
Sefa Eyeoglu
cd9e0e0cc0
fix: use own metacache base for modrinth icons 2022-05-16 20:17:19 +02:00
Sefa Eyeoglu
f66598db8a
Merge pull request #564 from flowln/cf_icon 2022-05-16 20:06:59 +02:00
flow
a6d2c5e181
fix: better hack for icons that cant be natively scaled to 48x48 2022-05-16 14:35:01 -03:00
flow
82760f4b91
fix: import modrinth packs with weird overrides structure
Probably because of Packwiz limitations, or an space optimizer that did
this :)
2022-05-16 12:11:50 -03:00
flow
62e099ace5
feat: better handling of optional mods
This disables the optional mods by default and tell the user about it.
Pretty hackish, but a better solution would involve the modrinth
metadata to have the mod names...

Also sorry for the diffs, my clangd went rogue x.x
2022-05-15 22:16:52 -03:00
flow
e92b7bd25e
change: switch to modrinth production servers 2022-05-15 21:50:42 -03:00
flow
e7bb3b2776
fix: macos compilation
i forgor macos is cringe with static arrays 💀

edit: WHY DONT MAC LET ME USE STD::ARRAY ;----;
2022-05-15 21:18:29 -03:00
flow
ec3c882a44
change: add alpha note to modrinth page 2022-05-15 20:52:57 -03:00
flow
66ce5a4a2d
fix: pack sorting and other search parameters 2022-05-15 20:45:27 -03:00
Sefa Eyeoglu
a110d445ac
feat: support quilt.mod.json metadata 2022-05-15 23:00:09 +02:00
flow
a67f3131e7
Merge pull request #560 from kthchew/feature/close-pmc-override
Add instance overrides for miscellaneous settings
2022-05-15 17:40:53 -03:00
Sefa Eyeoglu
e5d0097116
Merge pull request #531 from Ozynt/patch-1
Remove reference to legacy Minecraft accounts
2022-05-15 22:18:34 +02:00
flow
6d78ea5a45
Merge pull request #539 from kthchew/fix/translation-switch
Fix untranslated strings after changing language
2022-05-15 17:11:21 -03:00
dada513
550d6a6a9b
Merge pull request #547 from kthchew/feature/hidden-temp 2022-05-15 21:54:46 +02:00
dada513
9be8160bf2
Merge pull request #546 from kthchew/feature/scrollable-accounts 2022-05-15 21:43:34 +02:00
dada513
3070565fa3
Merge pull request #545 from DioEgizio/patch-4 2022-05-15 21:42:51 +02:00
flow
7194bb1b81
fix: validate whitelisted download urls 2022-05-15 16:06:49 -03:00
Sefa Eyeoglu
78cf0c73c8
fix: always show project url, if available 2022-05-15 20:38:27 +02:00
flow
4adc61bda9
change: update modrinth icon
Updates to the version at https://github.com/modrinth/docs/blob/master/static/img/logo.svg
2022-05-15 11:26:15 -03:00
flow
93e0041d0e
change: use modrinth icon as default on modrinth packs 2022-05-15 11:09:45 -03:00
Sefa Eyeoglu
682a7fb6ba
feat: add version of Modrinth modpack to instance name 2022-05-15 13:36:55 +02:00
flow
5f2398fe59
chore: license headers 2 2022-05-15 08:26:34 -03:00
Sefa Eyeoglu
3abf466632
chore: add/update license headers 2022-05-15 13:20:05 +02:00
flow
4bb429a0fb
change: use build variables for the modrinth API URLs
Make it more consistent with the others
2022-05-15 07:43:02 -03:00
flow
4a0e4fdb85 fix: add author page url 2022-05-15 07:15:56 -03:00
Sefa Eyeoglu
a43f882d48
feat: add support for Quilt Loader in Modrinth packs 2022-05-15 12:06:01 +02:00
Sefa Eyeoglu
9731e06728
fix: fix build on Qt 5.12 2022-05-15 11:49:27 +02:00
flow
4745ed2818
fix: choose valid download url even if it's not the primary one
It seems to be possible to have modpack versions that have to primary
file. In those cases, we pick a valid one "at random".
2022-05-14 22:50:04 -03:00
flow
49de5d9b07
change: list what file types can be entered in the importer 2022-05-14 22:04:40 -03:00
flow
365cc198ba
refactor: some random improvements 2022-05-14 21:50:54 -03:00
flow
9899a0e098
fix: Have the URL be the project URL itself
(I think, doesn't seem to work for the waffle though, probably because
of the staging API :/)
2022-05-14 21:47:35 -03:00
flow
5ea8cec16f
fix: make all modrinth modpacks have the same icon size 2022-05-14 21:29:48 -03:00
flow
9dd70ca9ae
fix: download icon as well when importing modrinth modpacks 2022-05-14 20:26:20 -03:00
flow
4fda35b466
feat: add modrinth pack downloading
Things that don't work / work poorly (there's more for sure but those
are the evident ones):
    - Icons are broken in the import dialog
    - No way to search for private packs
    - Icons are not downloaded when downloading a mod
    - No support for multiple download URLs
    - Probably a lot more...
2022-05-14 20:19:26 -03:00
Sefa Eyeoglu
31988f0529
fix: adapt upstream Modrinth code to our codebase 2022-05-14 20:27:45 +02:00
kb1000
db03846358
Add support for importing Modrinth packs from files 2022-05-14 20:01:09 +02:00
Sefa Eyeoglu
c6b3eccbdf
refactor: rename Modrinth classes to ModrinthMod 2022-05-14 20:00:54 +02:00
flow
84b962f256
fix: Handle icons with a dot in their names
E.g. some FTB modpacks.
Also fixes an issue with the name viewing on the Icon Chooser dialog
when the name was too big.
2022-05-13 17:21:35 -03:00
Sefa Eyeoglu
8dd68580a6
Merge pull request #528 from flowln/guo_ext 2022-05-13 18:17:40 +02:00
flow
dd2b324d8f
chore: add license header to remaining files
Also remove some unused imports
2022-05-12 18:11:55 -03:00
flow
0bce08d30f
chore: add polymc license headers to launcher/net files 2022-05-12 18:11:55 -03:00
flow
57d65177c8
fix: abort and fail logic in tasks
Also sets up correctly the status connections
2022-05-12 18:11:55 -03:00
flow
040ee919e5
refactor: more net cleanup
This runs clang-tidy on some other files in launcher/net/.

This also makes use of some JSON wrappers in HttpMetaCache, instead of
using the Qt stuff directly.

Lastly, this removes useless null checks (crashes don't occur because of
this, but because of concurrent usage / free of the QByteArray pointer),
and fix a fixme in Download.h
2022-05-12 18:11:55 -03:00
flow
efa3fbff39
refactor: remove some superfluous signals
Since now we're inheriting from Task, some signals can be reused.
2022-05-12 18:11:55 -03:00
flow
8c8eabf7ac
refactor: organize a little more the code in launcher/net/
This also reduces some code duplication by using some Task logic in
NetAction.
2022-05-12 18:11:49 -03:00
Kenneth Chew
3aea639fe4
Add UI for miscellaneous instance setting overrides 2022-05-12 17:11:06 -04:00
Kenneth Chew
046f1e6e58
Add instance overrides for miscellaneous settings 2022-05-12 17:08:06 -04:00
Kenneth Chew
527fa7ba9c
Hide temporary directory in instances folder 2022-05-09 18:34:47 -04:00
Kenneth Chew
288e7bc9c5
Make profile menu scrollable 2022-05-09 15:37:56 -04:00
timoreo22
649b8ac7c6
Merge pull request #537 from PolyMC/stable
Merge stable into develop
2022-05-09 18:06:56 +02:00
DioEgizio
96b2758169
fix websiteurl in curseforge modpacks 2022-05-09 17:42:17 +02:00
Kenneth Chew
40e0252d7d
Show "executable" screenshots in the screenshot manager
Since the readable/writable filter was removed to do this, extra code was added to enable/disable certain buttons based on whether the screenshot is readable or writable.
2022-05-09 00:54:47 -04:00
Kenneth Chew
5171d99fe5
Retranslate playtime text immediately when language is changed 2022-05-08 23:42:37 -04:00
Kenneth Chew
ea9d61c21c
Retranslate account actions after switching language 2022-05-08 23:19:23 -04:00