Skip to content

Commit

Permalink
add inertia render hooks
Browse files Browse the repository at this point in the history
  • Loading branch information
taylorotwell committed Sep 10, 2020
1 parent 700c635 commit b2e5729
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/Http/Controllers/Inertia/TeamController.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public function show(Request $request, $teamId)
abort(403);
}

return Inertia::render('Teams/Show', [
return Jetstream::inertia()->render($request, 'Teams/Show', [
'team' => $team->load('owner', 'users'),
'availableRoles' => array_values(Jetstream::$roles),
'availablePermissions' => Jetstream::$permissions,
Expand Down
49 changes: 49 additions & 0 deletions src/InertiaManager.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php

namespace Laravel\Jetstream;

use Illuminate\Http\Request;
use Inertia\Inertia;

class InertiaManager
{
/**
* The registered rendering callbacks.
*
* @var array
*/
protected $renderingCallbacks = [];

/**
* Render the given Inertia page.
*
* @param \Illuminate\Http\Request $request
* @param string $page
* @param array $data
* @return \Inertia\Response
*/
public function render(Request $request, string $page, array $data = [])
{
if (isset($this->renderingCallbacks[$page])) {
foreach ($this->renderingCallbacks[$page] as $callback) {
$data = $callback($request, $data);
}
}

return Inertia::render($page, $data);
}

/**
* Register a rendering callback.
*
* @param string $page
* @param callable $callback
* @return $this
*/
public function whenRendering(string $page, callable $callback)
{
$this->renderingCallbacks[$page][] = $callback;

return $this;
}
}
21 changes: 21 additions & 0 deletions src/Jetstream.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,13 @@ class Jetstream
*/
public static $membershipModel = 'App\\Models\\Membership';

/**
* The Inertia manager instance.
*
* @var \Laravel\Jetstream\InertiaManager
*/
public static $inertiaManager;

/**
* Determine if Jetstream has registered roles.
*
Expand Down Expand Up @@ -347,6 +354,20 @@ public static function deleteUsersUsing(string $class)
return app()->singleton(DeletesUsers::class, $class);
}

/**
* Manage Jetstream's Inertia settings.
*
* @return \Laravel\Jetstream\InertiaManager
*/
public static function inertia()
{
if (is_null(static::$inertiaManager)) {
static::$inertiaManager = new InertiaManager;
}

return static::$inertiaManager;
}

/**
* Configure Jetstream to not register its routes.
*
Expand Down

0 comments on commit b2e5729

Please sign in to comment.