Skip to content

Commit

Permalink
Merge pull request #28 from bilfeldt/fixes/service-provider
Browse files Browse the repository at this point in the history
Remove the spatie package skeleton and fix issues with component name…
  • Loading branch information
bilfeldt committed Dec 18, 2022
2 parents 5e53e31 + 58e0b64 commit 7427f4d
Show file tree
Hide file tree
Showing 14 changed files with 39 additions and 77 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ to the new namespace syntax
```blade
<x-flash::alert ... /> // new syntax
```

The session and view keys are also removed from the configuration, leaving the configuration with using the hardcoded value `messages` for both.
1 change: 0 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
],
"require": {
"php": "^8.0",
"spatie/laravel-package-tools": "^1.4.3",
"illuminate/contracts": "^8.51 || ^9.0"
},
"require-dev": {
Expand Down
24 changes: 0 additions & 24 deletions config/flash-message.php

This file was deleted.

57 changes: 21 additions & 36 deletions src/FlashMessageServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,89 +4,74 @@

use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\ViewErrorBag;
use Illuminate\View\Factory;
use Illuminate\View\View;
use Spatie\LaravelPackageTools\Package;
use Spatie\LaravelPackageTools\PackageServiceProvider;

class FlashMessageServiceProvider extends PackageServiceProvider
class FlashMessageServiceProvider extends ServiceProvider
{
public const VIEW_COMPONENT_NAMESPACE = 'flash';

public function configurePackage(Package $package): void
/**
* Bootstrap any package services.
*
* @return void
*/
public function boot()
{
/*
* This class is a Package Service Provider
*
* More info: https://github.com/spatie/laravel-package-tools
*/
$package
->name('laravel-flash-message')
->hasConfigFile()
->hasViews(); // required for the view component blade files to be registered
// The package does not allow for namespaces (`<x-namespace:component />`) but only prefixes (`<x-prefix-component />`
// so we register those manually using `componentNamespace()`
//->hasViewComponents(
// self::VIEW_COMPONENT_NAMESPACE,
// Messages::class,
// Alert::class,
// AlertError::class,
// AlertInfo::class,
// AlertMessage::class,
// AlertSuccess::class,
// AlertWarning::class
//);
}
$this->loadViewsFrom(__DIR__.'/../resources/views', self::VIEW_COMPONENT_NAMESPACE);

$this->publishes([
__DIR__.'/../resources/views' => resource_path('views/vendor/'.self::VIEW_COMPONENT_NAMESPACE),
]);

public function packageBooted()
{
Blade::componentNamespace('Bilfeldt\\LaravelFlashMessage\\View\\Components', self::VIEW_COMPONENT_NAMESPACE);

// This is used when adding a message from a controller: view('posts-index')->withMessage(...)
View::macro('withMessage', function (Message $message, string $bag = 'default'): View {
/** @var ViewFlashMessageBag $viewFlashMessageBag */
$viewFlashMessageBag = \Illuminate\Support\Facades\View::shared(config('flash-message.view_share'), new ViewFlashMessageBag());
$viewFlashMessageBag = \Illuminate\Support\Facades\View::shared('messages', new ViewFlashMessageBag());

\Illuminate\Support\Facades\View::share(config('flash-message.view_share'), $viewFlashMessageBag->push($message, $bag));
\Illuminate\Support\Facades\View::share('messages', $viewFlashMessageBag->push($message, $bag));

return $this;
});

// This is used when adding a message from the View Facade: \Illuminate\Support\Facades\View::withMessage(...)
Factory::macro('withMessage', function (Message $message, string $bag = 'default'): Factory {
/** @var ViewFlashMessageBag $viewFlashMessageBag */
$viewFlashMessageBag = \Illuminate\Support\Facades\View::shared(config('flash-message.view_share'), new ViewFlashMessageBag());
$viewFlashMessageBag = \Illuminate\Support\Facades\View::shared('messages', new ViewFlashMessageBag());

\Illuminate\Support\Facades\View::share(config('flash-message.view_share'), $viewFlashMessageBag->push($message, $bag));
\Illuminate\Support\Facades\View::share('messages', $viewFlashMessageBag->push($message, $bag));

return $this;
});

// This is used when adding messages from a controller: view('posts-index')->withMessages(...)
View::macro('withMessages', function (array $messages, string $bag = 'default'): View {
/** @var ViewFlashMessageBag $viewFlashMessageBag */
$viewFlashMessageBag = \Illuminate\Support\Facades\View::shared(config('flash-message.view_share'), new ViewFlashMessageBag());
$viewFlashMessageBag = \Illuminate\Support\Facades\View::shared('messages', new ViewFlashMessageBag());

/** @var \Bilfeldt\LaravelFlashMessage\Message $message */
foreach ($messages as $message) {
$viewFlashMessageBag->push($message, $bag);
}
\Illuminate\Support\Facades\View::share(config('flash-message.view_share'), $viewFlashMessageBag);
\Illuminate\Support\Facades\View::share('messages', $viewFlashMessageBag);

return $this;
});

// This is used when adding messages from the View Facade: \Illuminate\Support\Facades\View::withMessages(...)
Factory::macro('withMessages', function (array $messages, string $bag = 'default'): Factory {
/** @var ViewFlashMessageBag $viewFlashMessageBag */
$viewFlashMessageBag = \Illuminate\Support\Facades\View::shared(config('flash-message.view_share'), new ViewFlashMessageBag());
$viewFlashMessageBag = \Illuminate\Support\Facades\View::shared('messages', new ViewFlashMessageBag());

/** @var \Bilfeldt\LaravelFlashMessage\Message $message */
foreach ($messages as $message) {
$viewFlashMessageBag->push($message, $bag);
}
\Illuminate\Support\Facades\View::share(config('flash-message.view_share'), $viewFlashMessageBag);
\Illuminate\Support\Facades\View::share('messages', $viewFlashMessageBag);

return $this;
});
Expand Down
2 changes: 1 addition & 1 deletion src/Http/Middleware/ShareMessagesFromSession.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public function handle($request, Closure $next)
// without having to bind. An empty collection is set when there aren't any messages.
$this->view->share(
'messages',
ViewFlashMessageBag::make($request->session()->get(config('flash-message.session_flash')) ?: [])
ViewFlashMessageBag::make($request->session()->get('messages') ?: [])
);

// Putting the messages in the view for every view allows the developer to just
Expand Down
10 changes: 5 additions & 5 deletions src/View/Components/Alert.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ public function render()
{
switch ($this->level) {
case Message::LEVEL_MESSAGE:
return view('flash-message::components.alert-message');
return view('flash::components.alert-message');
case Message::LEVEL_INFO:
return view('flash-message::components.alert-info');
return view('flash::components.alert-info');
case Message::LEVEL_SUCCESS:
return view('flash-message::components.alert-success');
return view('flash::components.alert-success');
case Message::LEVEL_WARNING:
return view('flash-message::components.alert-warning');
return view('flash::components.alert-warning');
case Message::LEVEL_ERROR:
return view('flash-message::components.alert-error');
return view('flash::components.alert-error');
default:
throw new \InvalidArgumentException('Invalid alert level: '.$this->level);
}
Expand Down
2 changes: 1 addition & 1 deletion src/View/Components/AlertError.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ class AlertError extends AbstractAlert
{
public function render()
{
return view('flash-message::components.alert-error');
return view('flash::components.alert-error');
}
}
2 changes: 1 addition & 1 deletion src/View/Components/AlertInfo.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ class AlertInfo extends AbstractAlert
{
public function render()
{
return view('flash-message::components.alert-info');
return view('flash::components.alert-info');
}
}
2 changes: 1 addition & 1 deletion src/View/Components/AlertMessage.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ class AlertMessage extends AbstractAlert
{
public function render()
{
return view('flash-message::components.alert-message');
return view('flash::components.alert-message');
}
}
2 changes: 1 addition & 1 deletion src/View/Components/AlertSuccess.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ class AlertSuccess extends AbstractAlert
{
public function render()
{
return view('flash-message::components.alert-success');
return view('flash::components.alert-success');
}
}
2 changes: 1 addition & 1 deletion src/View/Components/AlertWarning.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ class AlertWarning extends AbstractAlert
{
public function render()
{
return view('flash-message::components.alert-warning');
return view('flash::components.alert-warning');
}
}
2 changes: 1 addition & 1 deletion src/View/Components/Errors.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ public function __construct(

public function render()
{
return view('flash-message::components.errors');
return view('flash::components.errors');
}
}
2 changes: 1 addition & 1 deletion src/View/Components/Messages.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ public function __construct(string $bag = 'default')

public function render()
{
return view('flash-message::components.messages');
return view('flash::components.messages');
}
}
6 changes: 3 additions & 3 deletions src/helpers.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
function session_message(Message $message, string $bag = 'default')
{
// This is added as a helper function simply because \Illuminate\Session\Store is not Macroable
session()->flash(config('flash-message.session_flash').'.'.$bag.'.'.Str::orderedUuid(), $message);
session()->flash('messages'.'.'.$bag.'.'.Str::orderedUuid(), $message);

// Note that we are using ordered uuid as keys and flashing each message individually to the storage instead of
// flashing the entire ViewFlashMessageBag object. This is because flashing the entire object will require
Expand All @@ -24,13 +24,13 @@ function session_message(Message $message, string $bag = 'default')
// Despite this "bug" this is how Laravel does it with errors. I expect this can cause problems especially
// when being used in Livewire. See https://github.com/laravel/framework/blob/master/src/Illuminate/Http/RedirectResponse.php#L131
/*
$messages = session()->get(config('flash-message.session_flash'), new \Bilfeldt\LaravelFlashMessage\ViewFlashMessageBag());
$messages = session()->get('messages', new \Bilfeldt\LaravelFlashMessage\ViewFlashMessageBag());
if (! $messages instanceof \Bilfeldt\LaravelFlashMessage\ViewFlashMessageBag) {
$messages = new \Bilfeldt\LaravelFlashMessage\ViewFlashMessageBag;
}
session()->flash(config('flash-message.session_flash'), $messages->push($message, $bag));
session()->flash('messages', $messages->push($message, $bag));
*/
}
}

0 comments on commit 7427f4d

Please sign in to comment.