Skip to content

Commit 35fce25

Browse files
committed
move stuff from service to enums
1 parent 905ab0f commit 35fce25

4 files changed

Lines changed: 100 additions & 54 deletions

File tree

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
namespace Boy132\MinecraftModrinth\Enums;
4+
5+
use App\Models\Server;
6+
use Filament\Support\Contracts\HasLabel;
7+
8+
enum MinecraftLoader: string implements HasLabel
9+
{
10+
case NeoForge = 'neoforge';
11+
case Forge = 'forge';
12+
case Fabric = 'fabric';
13+
case Quilt = 'quilt';
14+
case Paper = 'paper';
15+
case Velocity = 'velocity';
16+
case Bungeecord = 'bungeecord';
17+
18+
public function getLabel(): string
19+
{
20+
return str($this->name)->title();
21+
}
22+
23+
public static function fromServer(Server $server): ?MinecraftLoader
24+
{
25+
$tags = $server->egg->tags ?? [];
26+
27+
return self::fromTags($tags);
28+
}
29+
30+
/** @param string[] $tags */
31+
public static function fromTags(array $tags): ?MinecraftLoader
32+
{
33+
if (in_array('minecraft', $tags)) {
34+
if (in_array('neoforge', $tags) || in_array('neoforged', $tags)) {
35+
return self::NeoForge;
36+
}
37+
38+
if (in_array('forge', $tags)) {
39+
return self::Forge;
40+
}
41+
42+
if (in_array('fabric', $tags)) {
43+
return self::Fabric;
44+
}
45+
46+
if (in_array('quilt', $tags)) {
47+
return self::Quilt;
48+
}
49+
50+
if (in_array('bukkit', $tags) || in_array('spigot', $tags) || in_array('paper', $tags)) {
51+
return self::Paper;
52+
}
53+
54+
if (in_array('velocity', $tags)) {
55+
return self::Velocity;
56+
}
57+
58+
if (in_array('waterfall', $tags) || in_array('bungeecord', $tags)) {
59+
return self::Bungeecord;
60+
}
61+
}
62+
63+
return null;
64+
}
65+
}

minecraft-modrinth/src/Enums/ModrinthProjectType.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Boy132\MinecraftModrinth\Enums;
44

5+
use App\Models\Server;
56
use Filament\Support\Contracts\HasLabel;
67

78
enum ModrinthProjectType: string implements HasLabel
@@ -24,4 +25,20 @@ public function getFolder(): string
2425
self::Plugin => 'plugins',
2526
};
2627
}
28+
29+
public static function fromServer(Server $server): ?ModrinthProjectType
30+
{
31+
$features = $server->egg->features ?? [];
32+
$tags = $server->egg->tags ?? [];
33+
34+
if (in_array('modrinth_plugins', $features) || (in_array('minecraft', $tags) && in_array('plugins', $features))) {
35+
return self::Plugin;
36+
}
37+
38+
if (in_array('modrinth_mods', $features) || (in_array('minecraft', $tags) && in_array('mods', $features))) {
39+
return self::Mod;
40+
}
41+
42+
return null;
43+
}
2744
}

minecraft-modrinth/src/Filament/Server/Pages/MinecraftModrinthProjectPage.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
use App\Models\Server;
77
use App\Repositories\Daemon\DaemonFileRepository;
88
use App\Traits\Filament\BlockAccessInConflict;
9+
use Boy132\MinecraftModrinth\Enums\MinecraftLoader;
10+
use Boy132\MinecraftModrinth\Enums\ModrinthProjectType;
911
use Boy132\MinecraftModrinth\Facades\MinecraftModrinth;
1012
use Exception;
1113
use Filament\Actions\Action;
@@ -41,15 +43,15 @@ public static function canAccess(): bool
4143
/** @var Server $server */
4244
$server = Filament::getTenant();
4345

44-
return parent::canAccess() && MinecraftModrinth::getModrinthProjectType($server);
46+
return parent::canAccess() && ModrinthProjectType::fromServer($server);
4547
}
4648

4749
public static function getNavigationLabel(): string
4850
{
4951
/** @var Server $server */
5052
$server = Filament::getTenant();
5153

52-
return MinecraftModrinth::getModrinthProjectType($server)->getLabel();
54+
return ModrinthProjectType::fromServer($server)->getLabel();
5355
}
5456

5557
public static function getModelLabel(): string
@@ -151,7 +153,7 @@ public function table(Table $table): Table
151153
->visible(!is_null($primaryFile))
152154
->action(function (DaemonFileRepository $fileRepository) use ($server, $versionData, $primaryFile) {
153155
try {
154-
$fileRepository->setServer($server)->pull($primaryFile['url'], MinecraftModrinth::getModrinthProjectType($server)->getFolder());
156+
$fileRepository->setServer($server)->pull($primaryFile['url'], ModrinthProjectType::fromServer($server)->getFolder());
155157

156158
Notification::make()
157159
->title('Download started')
@@ -181,10 +183,12 @@ protected function getHeaderActions(): array
181183
/** @var Server $server */
182184
$server = Filament::getTenant();
183185

186+
$folder = ModrinthProjectType::fromServer($server)->getFolder();
187+
184188
return [
185189
Action::make('open_folder')
186-
->label(fn () => 'Open ' . MinecraftModrinth::getModrinthProjectType($server)->getFolder() . ' folder')
187-
->url(fn () => ListFiles::getUrl(['path' => MinecraftModrinth::getModrinthProjectType($server)->getFolder()]), true),
190+
->label(fn () => 'Open ' . $folder . ' folder')
191+
->url(fn () => ListFiles::getUrl(['path' => $folder]), true),
188192
];
189193
}
190194

@@ -201,13 +205,13 @@ public function content(Schema $schema): Schema
201205
->state(fn () => MinecraftModrinth::getMinecraftVersion($server) ?? 'Unknown')
202206
->badge(),
203207
TextEntry::make('Loader')
204-
->state(fn () => str(MinecraftModrinth::getMinecraftLoader($server) ?? 'Unknown')->title())
208+
->state(fn () => MinecraftLoader::fromServer($server)?->getLabel() ?? 'Unknown')
205209
->badge(),
206210
TextEntry::make('installed')
207-
->label(fn () => 'Installed ' . MinecraftModrinth::getModrinthProjectType($server)->getLabel())
211+
->label(fn () => 'Installed ' . ModrinthProjectType::fromServer($server)->getLabel())
208212
->state(function (DaemonFileRepository $fileRepository) use ($server) {
209213
try {
210-
$files = $fileRepository->setServer($server)->getDirectory(MinecraftModrinth::getModrinthProjectType($server)->getFolder());
214+
$files = $fileRepository->setServer($server)->getDirectory(ModrinthProjectType::fromServer($server)->getFolder());
211215

212216
if (isset($files['error'])) {
213217
throw new Exception($files['error']);

minecraft-modrinth/src/Services/MinecraftModrinthService.php

Lines changed: 6 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Boy132\MinecraftModrinth\Services;
44

55
use App\Models\Server;
6+
use Boy132\MinecraftModrinth\Enums\MinecraftLoader;
67
use Boy132\MinecraftModrinth\Enums\ModrinthProjectType;
78
use Exception;
89
use Illuminate\Support\Facades\Http;
@@ -20,51 +21,10 @@ public function getMinecraftVersion(Server $server): ?string
2021
return $version;
2122
}
2223

23-
public function getMinecraftLoader(Server $server): ?string
24-
{
25-
$tags = $server->egg->tags ?? [];
26-
27-
if (in_array('minecraft', $tags)) {
28-
if (in_array('neoforge', $tags) || in_array('neoforged', $tags)) {
29-
return 'neoforge';
30-
}
31-
32-
if (in_array('forge', $tags)) {
33-
return 'forge';
34-
}
35-
36-
if (in_array('fabric', $tags)) {
37-
return 'fabric';
38-
}
39-
40-
if (in_array('spigot', $tags) || in_array('paper', $tags)) {
41-
return 'paper';
42-
}
43-
}
44-
45-
return null;
46-
}
47-
48-
public function getModrinthProjectType(Server $server): ?ModrinthProjectType
49-
{
50-
$features = $server->egg->features ?? [];
51-
$tags = $server->egg->tags ?? [];
52-
53-
if (in_array('modrinth_plugins', $features) || (in_array('minecraft', $tags) && in_array('plugins', $features))) {
54-
return ModrinthProjectType::Plugin;
55-
}
56-
57-
if (in_array('modrinth_mods', $features) || (in_array('minecraft', $tags) && in_array('mods', $features))) {
58-
return ModrinthProjectType::Mod;
59-
}
60-
61-
return null;
62-
}
63-
6424
/** @return array{hits: array<int, array<string, mixed>>, total_hits: int} */
6525
public function getModrinthProjects(Server $server, int $page = 1, ?string $search = null): array
6626
{
67-
$projectType = $this->getModrinthProjectType($server);
27+
$projectType = ModrinthProjectType::fromServer($server)?->value;
6828

6929
if (!$projectType) {
7030
return [
@@ -74,15 +34,15 @@ public function getModrinthProjects(Server $server, int $page = 1, ?string $sear
7434
}
7535

7636
$minecraftVersion = $this->getMinecraftVersion($server);
77-
$minecraftLoader = $this->getMinecraftLoader($server);
37+
$minecraftLoader = MinecraftLoader::fromServer($server)->value;
7838

7939
$data = [
8040
'offset' => ($page - 1) * 20,
8141
'limit' => 20,
82-
'facets' => "[[\"categories:$minecraftLoader\"],[\"versions:$minecraftVersion\"],[\"project_type:{$projectType->value}\"]]",
42+
'facets' => "[[\"categories:$minecraftLoader\"],[\"versions:$minecraftVersion\"],[\"project_type:{$projectType}\"]]",
8343
];
8444

85-
$key = "modrinth_projects:{$projectType->value}:$minecraftVersion:$minecraftLoader:$page";
45+
$key = "modrinth_projects:{$projectType}:$minecraftVersion:$minecraftLoader:$page";
8646

8747
if ($search) {
8848
$data['query'] = $search;
@@ -113,7 +73,7 @@ public function getModrinthProjects(Server $server, int $page = 1, ?string $sear
11373
public function getModrinthVersions(string $projectId, Server $server): array
11474
{
11575
$minecraftVersion = $this->getMinecraftVersion($server);
116-
$minecraftLoader = $this->getMinecraftLoader($server);
76+
$minecraftLoader = MinecraftLoader::fromServer($server)->value;
11777

11878
$data = [
11979
'game_versions' => "[\"$minecraftVersion\"]",

0 commit comments

Comments
 (0)