From dd026efd21e0b471b0d5d226a2ef11a889977053 Mon Sep 17 00:00:00 2001 From: Jason Gornall Date: Wed, 8 Jun 2022 12:19:45 -0700 Subject: [PATCH] Jg experiment whitescreen (#34835) experimental whitescreen approach to inform users to upgrade browser --- client/web/src/jscontext.ts | 3 +++ .../internal/app/jscontext/jscontext.go | 24 +++++++++++-------- cmd/frontend/internal/app/ui/app.html | 23 +++++++++++++----- dev/check/template-inlines.sh | 2 +- schema/schema.go | 2 ++ schema/site.schema.json | 5 ++++ 6 files changed, 42 insertions(+), 17 deletions(-) diff --git a/client/web/src/jscontext.ts b/client/web/src/jscontext.ts index 657a83dd4c0..f59e637ac26 100644 --- a/client/web/src/jscontext.ts +++ b/client/web/src/jscontext.ts @@ -148,6 +148,9 @@ export interface SourcegraphContext extends Pick, 'e /** The publishable key for the billing service (Stripe). */ billingPublishableKey?: string + + /** Prompt users with browsers that would crash to download a modern browser. */ + RedirectUnsupportedBrowser?: boolean } export interface BrandAssets { diff --git a/cmd/frontend/internal/app/jscontext/jscontext.go b/cmd/frontend/internal/app/jscontext/jscontext.go index c36186bb677..28c33138cc3 100644 --- a/cmd/frontend/internal/app/jscontext/jscontext.go +++ b/cmd/frontend/internal/app/jscontext/jscontext.go @@ -97,6 +97,8 @@ type JSContext struct { CodeInsightsGQLApiEnabled bool `json:"codeInsightsGqlApiEnabled"` + RedirectUnsupportedBrowser bool `json:"RedirectUnsupportedBrowser"` + ProductResearchPageEnabled bool `json:"productResearchPageEnabled"` ExperimentalFeatures schema.ExperimentalFeatures `json:"experimentalFeatures"` @@ -143,6 +145,7 @@ func NewJSContextFromRequest(req *http.Request, db database.DB) JSContext { var sentryDSN *string siteConfig := conf.Get().SiteConfiguration + if siteConfig.Log != nil && siteConfig.Log.Sentry != nil && siteConfig.Log.Sentry.Dsn != "" { sentryDSN = &siteConfig.Log.Sentry.Dsn } @@ -165,16 +168,17 @@ func NewJSContextFromRequest(req *http.Request, db database.DB) JSContext { // authentication above, but do not include e.g. hard-coded secrets about // the server instance here as they would be sent to anonymous users. return JSContext{ - ExternalURL: globals.ExternalURL().String(), - XHRHeaders: headers, - UserAgentIsBot: isBot(req.UserAgent()), - AssetsRoot: assetsutil.URL("").String(), - Version: version.Version(), - IsAuthenticatedUser: actor.IsAuthenticated(), - Datadog: datadogRUM, - SentryDSN: sentryDSN, - Debug: env.InsecureDev, - SiteID: siteID, + ExternalURL: globals.ExternalURL().String(), + XHRHeaders: headers, + UserAgentIsBot: isBot(req.UserAgent()), + AssetsRoot: assetsutil.URL("").String(), + Version: version.Version(), + IsAuthenticatedUser: actor.IsAuthenticated(), + Datadog: datadogRUM, + SentryDSN: sentryDSN, + RedirectUnsupportedBrowser: siteConfig.RedirectUnsupportedBrowser, + Debug: env.InsecureDev, + SiteID: siteID, SiteGQLID: string(graphqlbackend.SiteGQLID()), diff --git a/cmd/frontend/internal/app/ui/app.html b/cmd/frontend/internal/app/ui/app.html index d0785b5fa53..1150f8274e0 100644 --- a/cmd/frontend/internal/app/ui/app.html +++ b/cmd/frontend/internal/app/ui/app.html @@ -2,7 +2,6 @@ - {{.Injected.HeadTop}} @@ -44,10 +43,10 @@ - + {{ end }} + {{ end }} +