refactored: webhooks view

This commit is contained in:
Andras Bacsai 2024-07-12 11:52:32 +02:00
parent 21825876fb
commit 39a7332343
2 changed files with 43 additions and 35 deletions

View File

@ -4,49 +4,59 @@
use Livewire\Component; use Livewire\Component;
// Refactored ✅
class Webhooks extends Component class Webhooks extends Component
{ {
public $resource; public $resource;
public ?string $deploywebhook = null; public string $deploywebhook;
public ?string $githubManualWebhook = null; public string $githubManualWebhook;
public ?string $gitlabManualWebhook = null; public string $gitlabManualWebhook;
public ?string $bitbucketManualWebhook = null; public string $bitbucketManualWebhook;
public ?string $giteaManualWebhook = null; public string $giteaManualWebhook;
protected $rules = [ public ?string $githubManualWebhookSecret = null;
'resource.manual_webhook_secret_github' => 'nullable|string',
'resource.manual_webhook_secret_gitlab' => 'nullable|string',
'resource.manual_webhook_secret_bitbucket' => 'nullable|string',
'resource.manual_webhook_secret_gitea' => 'nullable|string',
];
public function saveSecret() public ?string $gitlabManualWebhookSecret = null;
public ?string $bitbucketManualWebhookSecret = null;
public ?string $giteaManualWebhookSecret = null;
public function mount()
{
$this->deploywebhook = generateDeployWebhook($this->resource);
$this->githubManualWebhookSecret = data_get($this->resource, 'manual_webhook_secret_github');
$this->githubManualWebhook = generateGitManualWebhook($this->resource, 'github');
$this->gitlabManualWebhookSecret = data_get($this->resource, 'manual_webhook_secret_gitlab');
$this->gitlabManualWebhook = generateGitManualWebhook($this->resource, 'gitlab');
$this->bitbucketManualWebhookSecret = data_get($this->resource, 'manual_webhook_secret_bitbucket');
$this->bitbucketManualWebhook = generateGitManualWebhook($this->resource, 'bitbucket');
$this->giteaManualWebhookSecret = data_get($this->resource, 'manual_webhook_secret_gitea');
$this->giteaManualWebhook = generateGitManualWebhook($this->resource, 'gitea');
}
public function submit()
{ {
try { try {
$this->validate(); $this->authorize('update', $this->resource);
$this->resource->save(); $this->resource->update([
'manual_webhook_secret_github' => $this->githubManualWebhookSecret,
'manual_webhook_secret_gitlab' => $this->gitlabManualWebhookSecret,
'manual_webhook_secret_bitbucket' => $this->bitbucketManualWebhookSecret,
'manual_webhook_secret_gitea' => $this->giteaManualWebhookSecret,
]);
$this->dispatch('success', 'Secret Saved.'); $this->dispatch('success', 'Secret Saved.');
} catch (\Exception $e) { } catch (\Exception $e) {
return handleError($e, $this); return handleError($e, $this);
} }
} }
public function mount()
{
$this->deploywebhook = generateDeployWebhook($this->resource);
$this->githubManualWebhook = generateGitManualWebhook($this->resource, 'github');
$this->gitlabManualWebhook = generateGitManualWebhook($this->resource, 'gitlab');
$this->bitbucketManualWebhook = generateGitManualWebhook($this->resource, 'bitbucket');
$this->giteaManualWebhook = generateGitManualWebhook($this->resource, 'gitea');
}
public function render()
{
return view('livewire.project.shared.webhooks');
}
} }

View File

@ -13,13 +13,13 @@
<div> <div>
<h3>Manual Git Webhooks</h3> <h3>Manual Git Webhooks</h3>
@if ($githubManualWebhook && $gitlabManualWebhook) @if ($githubManualWebhook && $gitlabManualWebhook)
<form wire:submit='saveSecret' class="flex flex-col gap-2"> <form wire:submit='submit' class="flex flex-col gap-2">
<div class="flex items-end gap-2"> <div class="flex items-end gap-2">
<x-forms.input helper="Content Type in GitHub configuration could be json or form-urlencoded." <x-forms.input helper="Content Type in GitHub configuration could be json or form-urlencoded."
readonly label="GitHub" id="githubManualWebhook"></x-forms.input> readonly label="GitHub" id="githubManualWebhook"></x-forms.input>
<x-forms.input type="password" <x-forms.input type="password"
helper="Need to set a secret to be able to use this webhook. It should match with the secret in GitHub." helper="Need to set a secret to be able to use this webhook. It should match with the secret in GitHub."
label="GitHub Webhook Secret" id="resource.manual_webhook_secret_github"></x-forms.input> label="GitHub Webhook Secret" id="githubManualWebhookSecret"></x-forms.input>
</div> </div>
<a target="_blank" class="flex hover:no-underline" href="{{ $resource?->gitWebhook }}"> <a target="_blank" class="flex hover:no-underline" href="{{ $resource?->gitWebhook }}">
@ -31,21 +31,19 @@
<x-forms.input readonly label="GitLab" id="gitlabManualWebhook"></x-forms.input> <x-forms.input readonly label="GitLab" id="gitlabManualWebhook"></x-forms.input>
<x-forms.input type="password" <x-forms.input type="password"
helper="Need to set a secret to be able to use this webhook. It should match with the secret in GitLab." helper="Need to set a secret to be able to use this webhook. It should match with the secret in GitLab."
label="GitLab Webhook Secret" id="resource.manual_webhook_secret_gitlab"></x-forms.input> label="GitLab Webhook Secret" id="gitlabManualWebhookSecret"></x-forms.input>
</div> </div>
<div class="flex gap-2"> <div class="flex gap-2">
<x-forms.input readonly label="Bitbucket" id="bitbucketManualWebhook"></x-forms.input> <x-forms.input readonly label="Bitbucket" id="bitbucketManualWebhook"></x-forms.input>
<x-forms.input type="password" <x-forms.input type="password"
helper="Need to set a secret to be able to use this webhook. It should match with the secret in Bitbucket." helper="Need to set a secret to be able to use this webhook. It should match with the secret in Bitbucket."
label="Bitbucket Webhook Secret" label="Bitbucket Webhook Secret" id="bitbucketManualWebhookSecret"></x-forms.input>
id="resource.manual_webhook_secret_bitbucket"></x-forms.input>
</div> </div>
<div class="flex gap-2"> <div class="flex gap-2">
<x-forms.input readonly label="Gitea" id="giteaManualWebhook"></x-forms.input> <x-forms.input readonly label="Gitea" id="giteaManualWebhook"></x-forms.input>
<x-forms.input type="password" <x-forms.input type="password"
helper="Need to set a secret to be able to use this webhook. It should match with the secret in Gitea." helper="Need to set a secret to be able to use this webhook. It should match with the secret in Gitea."
label="Gitea Webhook Secret" label="Gitea Webhook Secret" id="giteaManualWebhookSecret"></x-forms.input>
id="resource.manual_webhook_secret_gitea"></x-forms.input>
</div> </div>
<x-forms.button type="submit">Save</x-forms.button> <x-forms.button type="submit">Save</x-forms.button>
</form> </form>