From a22f0c60bb11fc0cc76ba6271db0e32e614765da Mon Sep 17 00:00:00 2001
From: Allan Kong <74692833+AllanKoder@users.noreply.github.com>
Date: Tue, 30 Dec 2025 15:13:39 -0700
Subject: [PATCH 1/8] Resource Edits, and Errors Flash (#59)
* changes
* Apply automatic changes
* Update app/Http/Controllers/ResourceEditsController.php
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
.../Controllers/ResourceEditsController.php | 4 +-
app/Http/Middleware/HandleInertiaRequests.php | 1 +
app/Models/ResourceEdits.php | 2 +-
.../ComputerScienceResourceService.php | 15 ++++---
.../js/Components/Navigation/BackButton.vue | 2 +-
resources/js/Components/News/NewsDialog.vue | 10 ++---
resources/js/Components/News/NewsSection.vue | 24 +++++-----
resources/js/Components/NewsItem.vue | 44 ++++++++++++-------
resources/js/Components/ToastHandler.vue | 8 ++++
resources/js/Pages/ResourceEdits/Create.vue | 4 +-
resources/js/Pages/Resources/Index.vue | 5 ++-
11 files changed, 74 insertions(+), 45 deletions(-)
diff --git a/app/Http/Controllers/ResourceEditsController.php b/app/Http/Controllers/ResourceEditsController.php
index b69fe3fd..f7390628 100644
--- a/app/Http/Controllers/ResourceEditsController.php
+++ b/app/Http/Controllers/ResourceEditsController.php
@@ -67,7 +67,7 @@ public function store(ComputerScienceResource $computerScienceResource, StoreRes
'data' => $validatedData,
]);
- return redirect()->back()->withErrors(['error' => 'Failed to create resource edit. Please try again.']);
+ return redirect()->back()->with('error', 'Failed to create resource edit. Please try again.');
}
}
@@ -137,7 +137,7 @@ public function merge(ResourceEdits $resourceEdits)
'user_id' => Auth::id(),
]);
- return redirect()->back()->withErrors(['error' => 'Failed to merge resource edits. Please try again.']);
+ return redirect()->back()->with('error', 'Failed to merge resource edits. Please try again.');
}
}
}
diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php
index b0395db1..01fc61e6 100644
--- a/app/Http/Middleware/HandleInertiaRequests.php
+++ b/app/Http/Middleware/HandleInertiaRequests.php
@@ -39,6 +39,7 @@ public function share(Request $request): array
'flash' => [
'success' => $request->session()->get('success'),
'warning' => $request->session()->get('warning'),
+ 'error' => $request->session()->get('error'),
],
'config' => [
'COMMENT_MAX_DEPTH' => config('comment.max_depth'),
diff --git a/app/Models/ResourceEdits.php b/app/Models/ResourceEdits.php
index f7ac8c8f..3a3ce7fd 100644
--- a/app/Models/ResourceEdits.php
+++ b/app/Models/ResourceEdits.php
@@ -60,7 +60,7 @@ public function sluggable(): array
{
return [
'slug' => [
- 'source' => ['edit_title', 'id'],
+ 'source' => ['edit_title'],
'unique' => true,
],
];
diff --git a/app/Services/ComputerScienceResourceService.php b/app/Services/ComputerScienceResourceService.php
index 22827945..9ede5a6b 100644
--- a/app/Services/ComputerScienceResourceService.php
+++ b/app/Services/ComputerScienceResourceService.php
@@ -18,6 +18,7 @@
class ComputerScienceResourceService
{
+ // TODO: Make a service for ComputerScienceResources
public function __construct(
protected CommentService $commentService,
protected UpvoteService $upvoteService,
@@ -36,19 +37,21 @@ public function __construct(
*/
public function getIndexData(Request $request): array
{
- $query = ComputerScienceResource::query();
+ $resources_query = ComputerScienceResource::query();
// Apply filters and sorting through the dedicated filter service
$filters = $request->query();
- $query = $this->filterService->applyFilters($query, $filters);
+ $resources_query = $this->filterService->applyFilters($resources_query, $filters);
- $resources = $query->paginate(20)->appends($request->query());
+ $resources = $resources_query->paginate(20)->appends($request->query());
- $news = NewsPost::limit(10)->get();
+ // TODO (TEMP): will replace with user activity or something
+ $hot_resources_query = ComputerScienceResource::query()->with(['tags', 'votes', 'upvoteSummary', 'reviewSummary', 'commentsCountRelationship']);
+ $hot_resources = $this->resourceSortingManager->applySort($hot_resources_query, 'hot')->limit(10)->get();
return [
'resources' => $resources,
- 'news_posts' => $news,
+ 'hot_resources' => $hot_resources,
];
}
@@ -152,7 +155,7 @@ function () use ($computerScienceResource, $sortBy, $request) {
function () use ($computerScienceResource, $sortBy, $request) {
try {
$query = ResourceEdits::whereBelongsTo($computerScienceResource);
- $query = $this->resourceSortingManager->applySort($query, $sortBy, ResourceEdits::class);
+ $query = $this->resourceSortingManager->applySort($query, $sortBy);
return $query->with('user')->paginate(10)->appends($request->query());
} catch (Throwable $e) {
diff --git a/resources/js/Components/Navigation/BackButton.vue b/resources/js/Components/Navigation/BackButton.vue
index 5955674b..7599a795 100644
--- a/resources/js/Components/Navigation/BackButton.vue
+++ b/resources/js/Components/Navigation/BackButton.vue
@@ -18,6 +18,6 @@ const props = defineProps({
+ {{ resource.excerpt || resource.description }} +
-- {{ news.excerpt }} -
-