Skip to content

Commit 7e625f6

Browse files
Refactor Flash messages: remove pullMessages, replace with getFlashed, and transition to Inertia while cleaning up unused routes and middleware.
1 parent 9b636c2 commit 7e625f6

8 files changed

Lines changed: 39 additions & 95 deletions

File tree

routes/web.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,15 @@
66
use Laraveltoolkit\Actions\Filepond\ProcessChunk;
77
use Laraveltoolkit\Actions\Filepond\Restore;
88
use Laraveltoolkit\Actions\Filepond\Revert;
9-
use Laraveltoolkit\Actions\Flash\GetMessages;
109
use Laraveltoolkit\Actions\Sitemap\RenderSitemap;
1110
use Laraveltoolkit\Deploy\MaintenanceController;
1211
use Laraveltoolkit\Facades\SEO;
13-
use Laraveltoolkit\Flash\EnsureFlashClearedMiddleware;
1412

1513
Route::middleware('web')
1614
->domain(config('laraveltoolkit.deploy.domain'))
1715
->get(config('laraveltoolkit.deploy.path'), MaintenanceController::class)
1816
->name('maintenance');
1917

20-
Route::middleware(['web', EnsureFlashClearedMiddleware::class])->get('/lt/flash-get-messages', GetMessages::class)
21-
->name('lt.flash.get_messages');
22-
2318
Route::middleware('web')->prefix('lt/filepond')->group(function () {
2419
Route::post('process', Process::class)->name('lt.filepond.process');
2520
Route::patch('process-chunk', ProcessChunk::class)->name('lt.filepond.process_chunk');

src/Actions/Flash/GetMessages.php

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/Facades/Flash.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
use Laraveltoolkit\Flash\Severity;
99

1010
/**
11-
* @method static void clear()
12-
* @method static Collection<int, Message> pullMessages()
11+
* @method static Collection<string, Message> getFlashed()
1312
* @method static Message success(string $detail, string $summary = null)
1413
* @method static Message info(string $detail, string $summary = null)
1514
* @method static Message warn(string $detail, string $summary = null)

src/Flash/Flash.php

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,27 @@
22

33
namespace Laraveltoolkit\Flash;
44

5-
use Illuminate\Session\SessionManager;
65
use Illuminate\Support\Collection;
6+
use Inertia\Inertia;
77

88
class Flash
99
{
1010
use FlashTests;
1111

12-
public const string SESSION_KEY = 'laraveltoolkit.flashes';
13-
14-
protected Collection $messages;
15-
16-
protected SessionManager $session;
17-
18-
public function __construct()
19-
{
20-
$this->messages = collect();
21-
$this->session = app(SessionManager::class);
22-
}
23-
2412
protected function add(Message $message): Message
2513
{
26-
$this->messages->push($message);
27-
$this->session->push(self::SESSION_KEY, $message);
14+
Inertia::flash($message->id, FlashResource::make($message));
2815

2916
return $message;
3017
}
3118

32-
public function clear(): void
33-
{
34-
$this->session->forget(self::SESSION_KEY);
35-
$this->messages = collect();
36-
}
37-
38-
public function pullMessages(): Collection
19+
/**
20+
* @return Collection<string, Message>
21+
*/
22+
public function getFlashed(): Collection
3923
{
40-
return collect($this->session->pull(self::SESSION_KEY, []))
41-
->ensure(Message::class)
42-
->sortBy('createdAt');
24+
return collect(Inertia::getFlashed())
25+
->map(fn (FlashResource $resource) => $resource->resource);
4326
}
4427

4528
public function success(string $detail, ?string $summary = null): Message

src/Flash/FlashTests.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ trait FlashTests
88
{
99
public function assertFlashed(?Severity $severity = null, null|int|string $countOrMessage = null): void
1010
{
11-
$messages = $this->messages;
11+
$messages = $this->getFlashed();
1212
if ($severity) {
1313
$messages = $messages->filter(fn (Message $message) => $message->severity === $severity);
1414
}
@@ -40,7 +40,7 @@ public function assertFlashed(?Severity $severity = null, null|int|string $count
4040

4141
public function assertNotFlashed(?Severity $severity = null): void
4242
{
43-
$messages = $this->messages;
43+
$messages = $this->getFlashed();
4444
if ($severity) {
4545
$messages = $messages->filter(fn (Message $message) => $message->severity === $severity);
4646
}

tests/Actions/FlashTest.php

Lines changed: 0 additions & 19 deletions
This file was deleted.

tests/FlashTest.php

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,20 @@
1212
Flash::error('ok');
1313
Flash::secondary('ok');
1414
Flash::contrast('ok');
15-
16-
expect(Flash::pullMessages())
15+
expect(Flash::getFlashed())
1716
->toHaveCount(6)
1817
->toBeInstanceOf(Collection::class)
1918
->each
2019
->toBeInstanceOf(Message::class);
2120
});
2221

23-
it('can clear messages', function () {
24-
Flash::error('ok');
25-
Flash::secondary('ok');
26-
Flash::contrast('ok');
27-
Flash::clear();
28-
expect(Flash::pullMessages())
29-
->toBeEmpty();
30-
});
31-
3222
it('test defaults', function () {
23+
3324
config()->set('laraveltoolkit.flash.defaults.closable', true);
3425
config()->set('laraveltoolkit.flash.defaults.life', 1234);
3526
config()->set('laraveltoolkit.flash.defaults.group', 'abc');
3627
Flash::error('ok');
37-
$message = Flash::pullMessages()->first();
28+
$message = Flash::getFlashed()->first();
3829
expect($message->closable)
3930
->toBeTrue()
4031
->and($message->life)
@@ -44,51 +35,55 @@
4435
});
4536

4637
it('can send messages with options', function () {
38+
4739
Flash::error('ok')->withGroup('foo_bar');
48-
$messages = Flash::pullMessages();
40+
$messages = Flash::getFlashed();
4941
expect($messages->first()->group)
5042
->toEqual('foo_bar');
43+
44+
$this->flushSession();
5145
Flash::error('ok')->closable();
5246
Flash::error('ok')->unclosable();
53-
$messages = Flash::pullMessages();
47+
$messages = Flash::getFlashed();
5448
expect($messages->first()->closable)
5549
->toBeTrue()
5650
->and($messages->last()->closable)
5751
->toBeFalse();
52+
53+
$this->flushSession();
5854
Flash::error('ok')->withLife(4000);
59-
$messages = Flash::pullMessages();
55+
$messages = Flash::getFlashed();
6056
expect($messages->first()->life)
6157
->toEqual(4000);
6258
});
6359

6460
it('test test assert flashed', function () {
65-
Flash::clear();
6661
expect(fn () => Flash::assertFlashed())
6762
->toThrow('Was expected a flash of "any" severity but was not found');
6863

69-
Flash::clear();
64+
$this->flushSession();
7065
Flash::success('ok');
7166
expect(fn () => Flash::assertFlashed())
7267
->not
7368
->toThrow('Was expected a flash of "any" severity but was not found');
7469

75-
Flash::clear();
70+
$this->flushSession();
7671
Flash::success('ok');
7772
expect(fn () => Flash::assertFlashed(Severity::INFO))
7873
->toThrow('Was expected a flash of "info" severity but was not found')
7974
->and(fn () => Flash::assertFlashed(Severity::SUCCESS))
8075
->not
8176
->toThrow('Was expected a flash of "success" severity but was not found');
8277

83-
Flash::clear();
78+
$this->flushSession();
8479
Flash::success('ok');
8580
expect(fn () => Flash::assertFlashed(countOrMessage: 'foo'))
8681
->toThrow('Was expected a flash of "any" severity with detail of "foo" but was not found')
8782
->and(fn () => Flash::assertFlashed(countOrMessage: 'ok'))
8883
->not
8984
->toThrow('Was expected a flash of "any" severity but was not found');
9085

91-
Flash::clear();
86+
$this->flushSession();
9287
Flash::success('ok');
9388
Flash::success('ok');
9489
expect(fn () => Flash::assertFlashed(countOrMessage: 3))
@@ -98,18 +93,18 @@
9893
->toThrow('Was expected 2 flashes from "any" severity but was found 2');
9994
});
10095

101-
it('test test assert not flashed', function () {
102-
Flash::clear();
96+
it('test assert not flashed', function () {
97+
$this->flushSession();
10398
expect(fn () => Flash::assertNotFlashed())
10499
->not
105100
->toThrow('Was expected none flashes of "any" severity but was found 1');
106101

107-
Flash::clear();
102+
$this->flushSession();
108103
Flash::success('ok');
109104
expect(fn () => Flash::assertNotFlashed())
110105
->toThrow('Was expected none flashes of "any" severity but was found 1');
111106

112-
Flash::clear();
107+
$this->flushSession();
113108
Flash::success('ok');
114109
Flash::success('ok');
115110
Flash::success('ok');

tests/TestCase.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,21 @@ protected function setUp(): void
1818
$this->app->maintenanceMode()->deactivate();
1919

2020
Factory::guessFactoryNamesUsing(
21-
fn (string $modelName) => 'Laraveltoolkit\\Database\\Factories\\'.class_basename($modelName).'Factory'
21+
fn(string $modelName) => 'Laraveltoolkit\\Database\\Factories\\'.class_basename($modelName).'Factory'
2222
);
2323
$copyPath = dirname(__DIR__).'/routes/sitemap.php';
2424
$sitemapRoutesPath = base_path('routes/sitemap.php');
25-
if (! file_exists($sitemapRoutesPath)) {
25+
if (!file_exists($sitemapRoutesPath)) {
2626
copy($copyPath, $sitemapRoutesPath);
2727
}
2828
new User(['id' => 1, 'name' => 'Foo Bar', 'email' => 'foo@bar.com', 'password' => 'abc'])->saveOrFail();
29+
30+
if ($this->app['session']->isStarted()) {
31+
$this->app['session']->flush();
32+
} else {
33+
$this->startSession();
34+
request()->setLaravelSession(session()->driver());
35+
}
2936
}
3037

3138
protected function getPackageProviders($app): array

0 commit comments

Comments
 (0)