91 Commits

Author SHA1 Message Date
16e3a67efd
Query Optimization
- Download counts were taking too long to calculate dynamically, so we're keeping track of a total count with observers and queued job.
- Optimized the SQL used to order a mod listing by mod version update times.
2024-08-31 01:19:22 -04:00
09771d233a
Mod Filter Page - SPT Versions
Updated the mod filter page to only show SPT versions that have been tagged by mod versions.
2024-08-30 23:13:46 -04:00
4b3d04ff54
Mod Filter - Redirect To Last Page
If the page you're on doesn't have any results, then redirect to the last page that does.
2024-08-29 16:45:11 -04:00
1783a683ed
Semvar & Automatic Resolution - Remix
- Updated the SptVersion and ModVersion dependancies to resolve *all* compatible versions and introduced new relationships to pull just the latest compatible version. Had to rewrite a *bunch*, but it should be much more capable now. It can be expensive to resolve these properties when iterated over, so *make sure they're eager loaded using the `with` method when you're building the queries*.
- Updated the mod listing Livewire component to save the filter options within the PHP session instead of in browser local storage. *Much* cleaner.
- Removed caching from homepage queries to see how they preform on production. Will add back later.
- Updated ModVersion factory to create SptVersions if there are none specified.
- Probably lots of other changes too... I need to make smaller commits. :(
2024-08-29 15:46:10 -04:00
db578071e4
SPT Semvar & Automatic Resolution
This update gives mod versions a supported SPT version field that accepts a semantic version. The latest supported SPT version will be automatically resolved based on the semvar.

Next up: I need to update the ModVersion to SptVersion relationship to be a many-to-many and expand the resolution to resolve multiple versions.
2024-08-22 17:04:07 -04:00
e3d1e74901
Featured Ribbon
Adds a featured ribbon to featured mods so that they can be visually distinct within the listing.
2024-08-16 00:11:47 -04:00
189275fb0c
Saves Filters to Local Storage
The filters on the mod listing page are now also saved to the browser's local storage system. This means you can set a bunch of filters and a sort order, browse away (or close the browser), and the next time you visit the page the site will remember the filters that you had set.
2024-08-15 23:45:17 -04:00
41714f337f
Filter Count
A count of the number of filters currently applied is now displayed.
2024-08-15 23:05:48 -04:00
7fe1fad01b
Mod Listing Page Changes
- Updated visual look of the listing to include all filters at the top of the page
- Updated SPT version filter to be able to filter more than one version at a time (defaults to current minor version)
- Moved location of Livewire components into subfolder
- Moved query building methods for the listing into a `ModFilter` class
- Adds a `isLatestMinor` method on the SptVersion model that checks if the current version number is of the latest minor version release
- Livewire filter properties are now saved to the URL when changed
- Updated the top navigation link to include a "Mods" menu item.

TODO:
- Search codebase for "TODO". I've left notes. :|
2024-08-15 17:57:35 -04:00
cc3cdddce3 display filtered spt version 2024-08-12 11:20:03 -04:00
651979ccea Merge remote-tracking branch 'upstream/develop' into impl/mod-listing-page 2024-08-10 14:15:11 -04:00
a679cec98d wire up spt version filter
this isn't working correctly from what I can tell, but it's a start.
2024-08-10 14:04:00 -04:00
3d5697e04b
Mod Teaser Updates
- Updates the import script to import the full mod teaser text, up to 255 characters.
- Updates mod detail page to show teaser in the main detail card.
- Updates mod listing component to show the first 100 characters of the teaser.
- Adjusts padding on the mod listing component.

Resolves #22
2024-08-09 15:22:42 -04:00
593b44150c
Resolves Mod Detail Page Version Issue
The latest version on the mod detail page was being selected by created date instead of highest version number. This has been resolved. Also adds a test for this issue.
2024-08-09 12:35:46 -04:00
5c02d237e3 add featured section filter 2024-08-09 11:45:53 -04:00
c1e73dc73b Merge remote-tracking branch 'upstream/develop' into impl/mod-listing-page 2024-08-09 11:31:00 -04:00
9244d48713 wire up search and section filters 2024-08-09 11:21:46 -04:00
7acdee1b6c switch to using livewire 2024-08-09 10:15:05 -04:00
713ea7e076
Download Number Macro
Adds a `Number:downloads()` macro to format the number of downloads depending on how many there are. Example: 1259000 is converted into 1.25M, 125900 is converted into 125.9K.

Updated the views to use this macro. Also included a title tag with the exact number so they can be viewed on hover.
2024-08-09 00:35:18 -04:00
23a9cabf99
Implements API Sorting
You can now sort mod and user data by whitelisted attributes.
2024-08-08 18:18:05 -04:00
3a334033fe
API Updates
Brings the API in close sync to the rest of the site.
- Adds resources for License, UserRole, and ModVersion models
- Adds filtering on attribute data
- The `includes` data is now disabled by default and available conditionally
2024-08-08 16:11:50 -04:00
0ed25fec03
User API Updates
Adds user profile links to the user API resource.
Fixes structure of relationship data and link sections.
Adds parameter to include related user data when requesting mod data.
2024-08-07 23:30:09 -04:00
35cd00e39d
Adds Cover Photo Field
Adds the cover photo field to the Jetstream edit profile form.
2024-08-07 16:23:55 -04:00
b868b5a75c setup mod index pagination 2024-08-07 14:33:11 -04:00
632799cb44 Merge remote-tracking branch 'upstream/develop' into impl/mod-listing-page 2024-08-05 09:31:20 -04:00
55273e5a90
Hub Imports of User Avatars and Cover Photos
TODO: Cover photos need to be added to the profile page so users can edit them.
2024-08-03 17:36:33 -04:00
11453db596
Model Comments, Yay! 2024-08-03 17:36:33 -04:00
115f81fe96
Basic structure to load user profile view 2024-08-03 17:34:41 -04:00
2680e21325
Import Script - Temp Table Charset/Collation
Sets the charset to `utf8mb4` and the collation to `utf8mb4_0900_ai_ci` when the temporary tables are created in the import script. Prevents conversion errors when the MySQL defaults are not set to match the expected charset and collation.
2024-08-03 12:06:01 -04:00
5d6dcd4a2c setup mod index page 2024-08-02 12:23:05 -04:00
c6f252ace7
Mod Version Dependency Updates
- Handles circular mod version dependencies
- Optimizes mod show query to only pull the versions relationship
- Adds a mod dependency factory
- Refactored tests to use mod dependency factory
- Adds mod dependency generation into the default seeder
- Adds unique index on mod dependencies table
- Adds mod dependencies on the mod show view
2024-08-01 17:15:02 -04:00
20e1ab2dae
Import Script, Published Date
Updates the import script to ignore any scopes on the Mod and ModVersion models when making inserts. Adds the `published_at` field.
2024-08-01 17:03:03 -04:00
f94204e978
Mod Publish Dates (#17) 2024-07-31 19:53:09 -04:00
203626d043 run pint? 2024-07-31 15:14:22 -04:00
82a466eb58 update scope and tests
to not include null published at fields
2024-07-31 14:06:56 -04:00
f04fbab5c6 add published scope 2024-07-26 09:35:09 -04:00
7ee542856d add published_at 2024-07-26 09:34:57 -04:00
74f61df875
Adds Mod Version Dependency System
Pretty nifty, but it still needs a few things before merge. Factory & front-end work, at least.
2024-07-26 02:19:42 -04:00
fea14652c9
Merge branch 'mod-page-tabs' into develop
# Conflicts:
#	app/Http/Controllers/ModController.php
#	resources/views/mod/show.blade.php

Resolved by Refringe
2024-07-23 23:26:15 -04:00
refringe
705afc95a8 Pint PHP Style Fixes [no ci] 2024-07-24 02:01:19 +00:00
8eae71b22a
Simplifies Latest Version Relationship
This change removes the `latestSptVersion()` relationship, which fetched the latest mod version for the latest SPT version, with a more simple `latestVersion()` relationship that simply fetches the latest mod version based on the mod version, version number field.

This is less complicated and much less confusing.
2024-07-23 21:21:55 -04:00
fce5bd4b04 move modversion ordering
to model
2024-07-23 09:27:15 -04:00
waffle-lord
30cdc60ae0
Merge branch 'develop' into impl/mod-page-tabs 2024-07-23 04:59:13 -07:00
b429300b7b update version tab info 2024-07-22 10:16:53 -04:00
8a9e7b0573
Disables the extra Filament login route 2024-07-18 19:50:57 -04:00
1960cec21f
Updates PHPStan to ignore tests 2024-07-17 23:50:57 -04:00
cb636fd197
Adds Search Sync Command
Adds an artisan app command that handles all of the search set-up and sync needed to get going.

`artisan app:search-sync`
2024-07-16 12:02:52 -04:00
49fd8b83df
Search SPT Version & Homepage Queries
The global search results now include the SPT version number the latest version of the mod is compatible with. Additionally, mod thumbnails and the SPT version numbers

Homepage queries have been further optimized and are now cached for 5 minutes.
2024-07-15 23:17:53 -04:00
53b67b23dd
Queueable Account Notifications
The email verification and password reset notifications are now handled on a queue.
2024-07-06 19:14:51 -04:00
a927f10941
Import Multiple Mod Authors
The import script has been updated to pull in additional mod authors from the hub.
2024-07-05 14:35:00 -04:00