diff --git a/app/Http/Controllers/API/GitHookController.php b/app/Http/Controllers/API/GitHookController.php index 21d3f3a3..8b088385 100644 --- a/app/Http/Controllers/API/GitHookController.php +++ b/app/Http/Controllers/API/GitHookController.php @@ -3,13 +3,11 @@ namespace App\Http\Controllers\API; use App\Actions\Site\Deploy; -use App\Exceptions\SourceControlIsNotConnected; -use App\Facades\Notifier; +use App\Exceptions\FailedToDestroyGitHook; use App\Http\Controllers\Controller; use App\Models\GitHook; use App\Models\ServerLog; use App\Models\SourceControl; -use App\Notifications\SourceControlDisconnected; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; @@ -18,6 +16,9 @@ class GitHookController extends Controller { + /** + * @throws FailedToDestroyGitHook + */ #[Any('api/git-hooks', name: 'api.git-hooks')] public function __invoke(Request $request): JsonResponse { @@ -30,6 +31,14 @@ public function __invoke(Request $request): JsonResponse ->where('secret', $request->input('secret')) ->firstOrFail(); + if (! $gitHook->site) { + $gitHook->destroyHook(); + + return response()->json([ + 'success' => true, + ]); + } + foreach ($gitHook->actions as $action) { /** @var SourceControl $sourceControl */ $sourceControl = $gitHook->site->sourceControl; @@ -37,8 +46,6 @@ public function __invoke(Request $request): JsonResponse if ($action == 'deploy' && $gitHook->site->branch === $webhookBranch) { try { app(Deploy::class)->run($gitHook->site); - } catch (SourceControlIsNotConnected) { - Notifier::send($gitHook->sourceControl, new SourceControlDisconnected($gitHook->sourceControl)); } catch (Throwable $e) { ServerLog::log( $gitHook->site->server, diff --git a/app/Models/GitHook.php b/app/Models/GitHook.php index 4d8c4230..f739308f 100755 --- a/app/Models/GitHook.php +++ b/app/Models/GitHook.php @@ -15,7 +15,7 @@ * @property array $actions * @property string $hook_id * @property array $hook_response - * @property Site $site + * @property ?Site $site * @property SourceControl $sourceControl */ class GitHook extends AbstractModel diff --git a/app/Models/Site.php b/app/Models/Site.php index 1bdaee39..ce97402b 100755 --- a/app/Models/Site.php +++ b/app/Models/Site.php @@ -118,6 +118,11 @@ public static function boot(): void $site->ssls()->delete(); $site->deployments()->delete(); $site->deploymentScript()->delete(); + try { + $site->gitHook?->destroyHook(); + } catch (FailedToDestroyGitHook) { + $site->refresh()->gitHook?->delete(); + } }); static::created(function (Site $site): void {