|
9 | 9 | use Illuminate\Support\Facades\Request;
|
10 | 10 | use Illuminate\Support\Traits\Macroable;
|
11 | 11 | use Illuminate\Contracts\Support\Arrayable;
|
| 12 | +use Illuminate\Support\Facades\Redirect; |
12 | 13 | use Illuminate\Support\Facades\Response as BaseResponse;
|
| 14 | +use Symfony\Component\HttpFoundation\Response as SymfonyResponse; |
| 15 | +use Symfony\Component\HttpFoundation\RedirectResponse as SymfonyRedirect; |
13 | 16 |
|
14 | 17 | class ResponseFactory
|
15 | 18 | {
|
@@ -103,32 +106,18 @@ public function render(string $component, $props = []): Response
|
103 | 106 | }
|
104 | 107 |
|
105 | 108 | /**
|
106 |
| - * @param string|RedirectResponse $url |
| 109 | + * @param string|SymfonyRedirect $url |
107 | 110 | */
|
108 |
| - public function location($url): \Symfony\Component\HttpFoundation\Response |
| 111 | + public function location($url): SymfonyResponse |
109 | 112 | {
|
110 |
| - $request = $session = null; |
111 |
| - |
112 |
| - if ($url instanceof RedirectResponse) { |
113 |
| - $request = $url->getRequest(); |
114 |
| - |
115 |
| - $session = $url->getSession(); |
116 |
| - |
117 |
| - $url = $url->getTargetUrl(); |
118 |
| - } |
| 113 | + [$url, $redirect] = $url instanceof SymfonyRedirect |
| 114 | + ? [$url->getTargetUrl(), $url] |
| 115 | + : [$url, Redirect::away($url)]; |
119 | 116 |
|
120 | 117 | if (Request::inertia()) {
|
121 | 118 | return BaseResponse::make('', 409, ['X-Inertia-Location' => $url]);
|
122 | 119 | }
|
123 | 120 |
|
124 |
| - return tap(new RedirectResponse($url), function ($redirect) use ($request, $session) { |
125 |
| - if ($request) { |
126 |
| - $redirect->setRequest($request); |
127 |
| - } |
128 |
| - |
129 |
| - if ($session) { |
130 |
| - $redirect->setSession($session); |
131 |
| - } |
132 |
| - }); |
| 121 | + return $redirect; |
133 | 122 | }
|
134 | 123 | }
|
0 commit comments