55 */
66
77import { FC , useCallback , useState } from "react" ;
8- import { Configuration } from "@gitpod/public-api/lib/gitpod/v1/configuration_pb" ;
8+ import { Configuration , PrebuildTriggerStrategy } from "@gitpod/public-api/lib/gitpod/v1/configuration_pb" ;
99import { ConfigurationSettingsField } from "./ConfigurationSettingsField" ;
1010import { Heading3 , Subheading } from "@podkit/typography/Headings" ;
1111import { SwitchInputField } from "@podkit/switch/Switch" ;
@@ -15,6 +15,9 @@ import { LoadingState } from "@podkit/loading/LoadingState";
1515import { EnablePrebuildsError } from "./prebuilds/EnablePrebuildsError" ;
1616import { TextMuted } from "@podkit/typography/TextMuted" ;
1717import { Link } from "react-router-dom" ;
18+ import { useWebhookActivityStatusQuery } from "../../data/prebuilds/prebuild-queries" ;
19+ import Alert from "../../components/Alert" ;
20+ import { useToast } from "../../components/toasts/Toasts" ;
1821
1922type Props = {
2023 configuration : Configuration ;
@@ -59,6 +62,10 @@ export const ConfigurationDetailPrebuilds: FC<Props> = ({ configuration }) => {
5962 < ConfigurationSettingsField >
6063 < Heading3 > Prebuilds</ Heading3 >
6164 < Subheading className = "max-w-lg" > Prebuilds reduce wait time for new workspaces.</ Subheading >
65+ { configuration . prebuildSettings ?. enabled &&
66+ configuration . prebuildSettings . triggerStrategy !== PrebuildTriggerStrategy . ACTIVITY_BASED && (
67+ < WebhookTriggerMessage configurationId = { configuration . id } />
68+ ) }
6269
6370 < SwitchInputField
6471 className = "mt-6"
@@ -95,3 +102,39 @@ export const ConfigurationDetailPrebuilds: FC<Props> = ({ configuration }) => {
95102 </ >
96103 ) ;
97104} ;
105+
106+ export const WebhookTriggerMessage = ( { configurationId } : { configurationId : string } ) => {
107+ const integrationStatus = useWebhookActivityStatusQuery ( configurationId ) ;
108+ const { toast } = useToast ( ) ;
109+
110+ if ( integrationStatus . isError ) {
111+ toast ( "Failed to load webhook activity status" ) ;
112+ return null ;
113+ }
114+ if ( ! integrationStatus ?. data ?. isWebhookActive ) {
115+ return null ;
116+ }
117+
118+ return (
119+ < Alert type = "warning" >
120+ < div className = "flex flex-row gap-2 items-center" >
121+ < span >
122+ We have gotten webhook activity from your repository recently, indicating you have webhooks
123+ installed on your repo. To optimize prebuilds usage, you might want to consider enabling Activity
124+ based prebuilds by removing our webhook. If you remove them, it might take a new commit for this
125+ message to disappear, although activity based prebuilds will start working right away.
126+ </ span >
127+ < div >
128+ < a
129+ href = "https://www.gitpod.io/changelog/activity-based-prebuilds"
130+ className = "gp-link"
131+ target = "_blank"
132+ rel = "noreferrer"
133+ >
134+ Learn more about Activity based prebuilds
135+ </ a >
136+ </ div >
137+ </ div >
138+ </ Alert >
139+ ) ;
140+ } ;
0 commit comments