diff --git a/domains/Contact/ManageContact/Web/ViewHelpers/ContactShowViewHelper.php b/domains/Contact/ManageContact/Web/ViewHelpers/ContactShowViewHelper.php
index 998a47ec0..bfee904e7 100644
--- a/domains/Contact/ManageContact/Web/ViewHelpers/ContactShowViewHelper.php
+++ b/domains/Contact/ManageContact/Web/ViewHelpers/ContactShowViewHelper.php
@@ -5,7 +5,6 @@
use App\Contact\ManageAvatar\Web\ViewHelpers\ModuleAvatarViewHelper;
use App\Contact\ManageCalls\Web\ViewHelpers\ModuleCallsViewHelper;
use App\Contact\ManageContactAddresses\Web\ViewHelpers\ModuleContactAddressesViewHelper;
-use App\Contact\ManageContactFeed\Web\ViewHelpers\ModuleFeedViewHelper;
use App\Contact\ManageContactImportantDates\Web\ViewHelpers\ModuleImportantDatesViewHelper;
use App\Contact\ManageContactInformation\Web\ViewHelpers\ModuleContactInformationViewHelper;
use App\Contact\ManageContactName\Web\ViewHelpers\ModuleContactNameViewHelper;
@@ -26,7 +25,6 @@
use App\Contact\ManageTasks\Web\ViewHelpers\ModuleContactTasksViewHelper;
use App\Helpers\StorageHelper;
use App\Models\Contact;
-use App\Models\ContactFeedItem;
use App\Models\Module;
use App\Models\TemplatePage;
use App\Models\User;
@@ -226,12 +224,12 @@ public static function modules(TemplatePage $page, Contact $contact, User $user)
}
if ($module->type == Module::TYPE_FEED) {
- $items = ContactFeedItem::where('contact_id', $contact->id)
- ->with('author')
- ->with('contact')
- ->orderBy('created_at', 'desc')
- ->get();
- $data = ModuleFeedViewHelper::data($items, $user);
+ // this is the only module where the data is loaded asynchroniously
+ // so it needs an URL to load the data from
+ $data = route('contact.feed.show', [
+ 'vault' => $contact->vault_id,
+ 'contact' => $contact->id,
+ ]);
}
if ($module->type == Module::TYPE_REMINDERS) {
diff --git a/domains/Contact/ManageContactFeed/Web/Controllers/ContactFeedController.php b/domains/Contact/ManageContactFeed/Web/Controllers/ContactFeedController.php
new file mode 100644
index 000000000..72c74321f
--- /dev/null
+++ b/domains/Contact/ManageContactFeed/Web/Controllers/ContactFeedController.php
@@ -0,0 +1,30 @@
+with('author')
+ ->with('contact')
+ ->orderBy('created_at', 'desc')
+ ->paginate(15);
+
+ $vault = Vault::find($vaultId);
+
+ return response()->json([
+ 'data' => ModuleFeedViewHelper::data($items, Auth::user(), $vault),
+ 'paginator' => PaginatorHelper::getData($items),
+ ], 200);
+ }
+}
diff --git a/domains/Contact/ManageContactFeed/Web/ViewHelpers/ModuleFeedViewHelper.php b/domains/Contact/ManageContactFeed/Web/ViewHelpers/ModuleFeedViewHelper.php
index 168f644a5..753004b09 100644
--- a/domains/Contact/ManageContactFeed/Web/ViewHelpers/ModuleFeedViewHelper.php
+++ b/domains/Contact/ManageContactFeed/Web/ViewHelpers/ModuleFeedViewHelper.php
@@ -11,10 +11,11 @@
use App\Helpers\UserHelper;
use App\Models\ContactFeedItem;
use App\Models\User;
+use App\Models\Vault;
class ModuleFeedViewHelper
{
- public static function data($items, User $user): array
+ public static function data($items, User $user, Vault $vault): array
{
$itemsCollection = $items->map(function ($item) use ($user) {
return [
diff --git a/domains/Vault/ManageVault/Web/Controllers/VaultController.php b/domains/Vault/ManageVault/Web/Controllers/VaultController.php
index 454901646..04b52b6cd 100644
--- a/domains/Vault/ManageVault/Web/Controllers/VaultController.php
+++ b/domains/Vault/ManageVault/Web/Controllers/VaultController.php
@@ -2,10 +2,7 @@
namespace App\Vault\ManageVault\Web\Controllers;
-use App\Contact\ManageContactFeed\Web\ViewHelpers\ModuleFeedViewHelper;
use App\Http\Controllers\Controller;
-use App\Models\Contact;
-use App\Models\ContactFeedItem;
use App\Models\Vault;
use App\Vault\ManageVault\Services\CreateVault;
use App\Vault\ManageVault\Services\DestroyVault;
@@ -55,21 +52,15 @@ public function show(Request $request, int $vaultId)
{
$vault = Vault::find($vaultId);
- $contactIds = Contact::where('vault_id', $vaultId)->select('id')->get()->toArray();
-
- $items = ContactFeedItem::whereIn('contact_id', $contactIds)
- ->with('author')
- ->with('contact')
- ->orderBy('created_at', 'desc')
- ->get();
-
return Inertia::render('Vault/Dashboard/Index', [
'layoutData' => VaultIndexViewHelper::layoutData($vault),
'lastUpdatedContacts' => VaultShowViewHelper::lastUpdatedContacts($vault),
'upcomingReminders' => VaultShowViewHelper::upcomingReminders($vault, Auth::user()),
'favorites' => VaultShowViewHelper::favorites($vault, Auth::user()),
- 'feed' => ModuleFeedViewHelper::data($items, Auth::user()),
'dueTasks' => VaultShowViewHelper::dueTasks($vault, Auth::user()),
+ 'loadFeedUrl' => route('vault.feed.show', [
+ 'vault' => $vaultId,
+ ]),
]);
}
diff --git a/domains/Vault/ManageVault/Web/Controllers/VaultFeedController.php b/domains/Vault/ManageVault/Web/Controllers/VaultFeedController.php
new file mode 100644
index 000000000..e40408a31
--- /dev/null
+++ b/domains/Vault/ManageVault/Web/Controllers/VaultFeedController.php
@@ -0,0 +1,33 @@
+select('id')->get()->toArray();
+
+ $items = ContactFeedItem::whereIn('contact_id', $contactIds)
+ ->with('author')
+ ->with('contact')
+ ->orderBy('created_at', 'desc')
+ ->paginate(15);
+
+ return response()->json([
+ 'data' => ModuleFeedViewHelper::data($items, Auth::user(), $vault),
+ 'paginator' => PaginatorHelper::getData($items),
+ ], 200);
+ }
+}
diff --git a/lang/en/app.php b/lang/en/app.php
index 03bfa6299..9235e8a7b 100644
--- a/lang/en/app.php
+++ b/lang/en/app.php
@@ -65,6 +65,7 @@
'next' => 'Next',
'view_all' => 'View all',
'view_map' => 'View on map',
+ 'view_older' => 'Load previous entries',
'download' => 'Download',
'unknown_name' => 'Unknown name',
diff --git a/lang/fr/app.php b/lang/fr/app.php
index 9ab4b9c86..2e79291fe 100644
--- a/lang/fr/app.php
+++ b/lang/fr/app.php
@@ -65,6 +65,7 @@
'next' => 'Suivant',
'view_all' => 'Tout voir',
'view_map' => 'Voir sur la carte',
+ 'view_older' => 'Voir les entrées précédentes',
'download' => 'Télécharger',
'unknown_name' => 'Nom non renseigné',
diff --git a/resources/js/Pages/Vault/Contact/Show.vue b/resources/js/Pages/Vault/Contact/Show.vue
index 44d8af880..754a117ff 100644
--- a/resources/js/Pages/Vault/Contact/Show.vue
+++ b/resources/js/Pages/Vault/Contact/Show.vue
@@ -152,7 +152,7 @@
{{ $t('vault.dashboard_reminders_blank') }}
diff --git a/resources/js/Shared/Modules/Feed.vue b/resources/js/Shared/Modules/Feed.vue index ce3852547..87e0d6ac6 100644 --- a/resources/js/Shared/Modules/Feed.vue +++ b/resources/js/Shared/Modules/Feed.vue @@ -1,7 +1,7 @@There is no activity yet.