Skip to content

Commit

Permalink
Bug 1781300: Uncaught exception in UI when getting webhooks links for…
Browse files Browse the repository at this point in the history
… buildconfigs
  • Loading branch information
jhadvig committed Dec 9, 2019
1 parent 0ff7e4a commit 588d9bb
Showing 1 changed file with 36 additions and 18 deletions.
54 changes: 36 additions & 18 deletions frontend/public/components/utils/webhooks.tsx
Expand Up @@ -56,7 +56,26 @@ export const WebhookTriggers: React.FC<WebhookTriggersProps> = (props) => {
});
const tableColumnClasses = getTableColumnClasses(canGetSecret);
const webhooks = _.filter(triggers, (trigger) => webhookTriggers.has(trigger.type));
if (_.isEmpty(webhooks)) {
const [webhookSecrets, setWebhookSecrets] = React.useState([])

const webhookNames = _.map(webhooks, (webhook) => {
const triggerProperty = getTriggerProperty(webhook);
return _.get(webhook, [triggerProperty, 'secretReference', 'name']);
})

React.useEffect(() => {
Promise.all(
_.map(webhookNames, (webhookName) => {
return k8sGet(SecretModel, webhookName, namespace).then(res => {
return res
});
})
).then(response => {
setWebhookSecrets(response)
})
});

if (_.isEmpty(webhooks) || _.isEmpty(webhookSecrets)) {
return null;
}

Expand Down Expand Up @@ -90,23 +109,22 @@ export const WebhookTriggers: React.FC<WebhookTriggersProps> = (props) => {
}

const secretName = _.get(trigger, [triggerProperty, 'secretReference', 'name']);
k8sGet(SecretModel, secretName, namespace).then(
(secret: K8sResourceKind) => {
if (!_.has(secret, 'data.WebHookSecretKey')) {
errorModal({
error: `Secret referenced in the ${triggerProperty} webhook trigger does not contain 'WebHookSecretKey' key. Webhook trigger won’t work due to the invalid secret reference`,
});
return;
}
const webhookSecretValue = Base64.decode(secret.data.WebHookSecretKey);
const url = getWebhookURL(trigger, webhookSecretValue);
navigator.clipboard.writeText(url);
},
(err) => {
const error = err.message;
errorModal({ error });
},
);
const webhookSecret = _.find(webhookSecrets, (secret) => { return secret.metadata.name === secretName})
if (!webhookSecret) {
errorModal({
error: `Secret ${secretName} was not found`,
});
return;
}
if (!_.has(webhookSecret, 'data.WebHookSecretKey')) {
errorModal({
error: `Secret referenced in the ${triggerProperty} webhook trigger does not contain 'WebHookSecretKey' key. Webhook trigger won’t work due to the invalid secret reference`,
});
return;
}
const webhookSecretValue = Base64.decode(webhookSecret.data.WebHookSecretKey);
const url = getWebhookURL(trigger, webhookSecretValue);
navigator.clipboard.writeText(url);
};

return (
Expand Down

0 comments on commit 588d9bb

Please sign in to comment.