syncData(); $this->getPrivateKeys(); $this->getSources(); } catch (\Throwable $e) { handleError($e, $this); } } public function syncData(bool $toModel = false) { if ($toModel) { $this->validate(); $this->application->update([ 'git_repository' => $this->gitRepository, 'git_branch' => $this->gitBranch, 'git_commit_sha' => $this->gitCommitSha, 'private_key_id' => $this->privateKeyId, ]); } else { $this->gitRepository = $this->application->git_repository; $this->gitBranch = $this->application->git_branch; $this->gitCommitSha = $this->application->git_commit_sha; $this->privateKeyId = $this->application->private_key_id; $this->privateKeyName = data_get($this->application, 'private_key.name'); } } private function getPrivateKeys() { $this->privateKeys = PrivateKey::whereTeamId(currentTeam()->id)->get()->reject(function ($key) { return $key->id == $this->privateKeyId; }); } private function getSources() { // filter the current source out $this->sources = currentTeam()->sources()->whereNotNull('app_id')->reject(function ($source) { return $source->id === $this->application->source_id; })->sortBy('name'); } public function setPrivateKey(int $privateKeyId) { try { $this->authorize('update', $this->application); $this->privateKeyId = $privateKeyId; $this->syncData(true); $this->getPrivateKeys(); $this->application->refresh(); $this->privateKeyName = $this->application->private_key->name; $this->dispatch('success', 'Private key updated!'); } catch (\Throwable $e) { return handleError($e, $this); } } public function submit() { try { $this->authorize('update', $this->application); if (str($this->gitCommitSha)->isEmpty()) { $this->gitCommitSha = 'HEAD'; } $this->syncData(true); $this->dispatch('success', 'Application source updated!'); } catch (\Throwable $e) { return handleError($e, $this); } } public function changeSource($sourceId, $sourceType) { try { $this->authorize('update', $this->application); $this->application->update([ 'source_id' => $sourceId, 'source_type' => $sourceType, ]); ['repository' => $customRepository] = $this->application->customRepository(); $repository = githubApi($this->application->source, "repos/{$customRepository}"); $data = data_get($repository, 'data'); $repository_project_id = data_get($data, 'id'); if (isset($repository_project_id)) { if ($this->application->repository_project_id !== $repository_project_id) { $this->application->repository_project_id = $repository_project_id; $this->application->save(); } } $this->application->refresh(); $this->getSources(); $this->dispatch('success', 'Source updated!'); } catch (\Throwable $e) { return handleError($e, $this); } } }