satellite/console, web/satellite: feature flag for new objects flow

Added a feature flag to switch between old and new objects flow

Change-Id: Id1802f9fb1230928445f16e4d0a62aecdc91c038
This commit is contained in:
Vitalii Shpital 2021-11-02 15:36:28 +02:00
parent 91158fd3bf
commit 3c683998f5
7 changed files with 21 additions and 0 deletions

View File

@ -94,6 +94,7 @@ type Config struct {
NewOnboarding bool `help:"indicates if new onboarding flow should be rendered" default:"true"` NewOnboarding bool `help:"indicates if new onboarding flow should be rendered" default:"true"`
NewNavigation bool `help:"indicates if new navigation structure should be rendered" default:"false"` NewNavigation bool `help:"indicates if new navigation structure should be rendered" default:"false"`
NewBrowser bool `help:"indicates if new browser should be used" default:"false"` NewBrowser bool `help:"indicates if new browser should be used" default:"false"`
NewObjectsFlow bool `help:"indicates if new objects flow should be used" default:"false"`
// RateLimit defines the configuration for the IP and userID rate limiters. // RateLimit defines the configuration for the IP and userID rate limiters.
RateLimit web.RateLimiterConfig RateLimit web.RateLimiterConfig
@ -380,6 +381,7 @@ func (server *Server) appHandler(w http.ResponseWriter, r *http.Request) {
DefaultPaidBandwidthLimit memory.Size DefaultPaidBandwidthLimit memory.Size
NewNavigation bool NewNavigation bool
NewBrowser bool NewBrowser bool
NewObjectsFlow bool
} }
data.ExternalAddress = server.config.ExternalAddress data.ExternalAddress = server.config.ExternalAddress
@ -410,6 +412,7 @@ func (server *Server) appHandler(w http.ResponseWriter, r *http.Request) {
data.NewOnboarding = server.config.NewOnboarding data.NewOnboarding = server.config.NewOnboarding
data.NewNavigation = server.config.NewNavigation data.NewNavigation = server.config.NewNavigation
data.NewBrowser = server.config.NewBrowser data.NewBrowser = server.config.NewBrowser
data.NewObjectsFlow = server.config.NewObjectsFlow
templates, err := server.loadTemplates() templates, err := server.loadTemplates()
if err != nil || templates.index == nil { if err != nil || templates.index == nil {

View File

@ -133,6 +133,9 @@ compensation.withheld-percents: 75,75,75,50,50,50,25,25,25,0,0,0,0,0,0
# indicates if new navigation structure should be rendered # indicates if new navigation structure should be rendered
# console.new-navigation: false # console.new-navigation: false
# indicates if new objects flow should be used
# console.new-objects-flow: false
# indicates if new onboarding flow should be rendered # indicates if new onboarding flow should be rendered
# console.new-onboarding: true # console.new-onboarding: true

View File

@ -30,6 +30,7 @@
<meta name="default-paid-bandwidth-limit" content="{{ .DefaultPaidBandwidthLimit }}"> <meta name="default-paid-bandwidth-limit" content="{{ .DefaultPaidBandwidthLimit }}">
<meta name="new-navigation-structure" content="{{ .NewNavigation }}"> <meta name="new-navigation-structure" content="{{ .NewNavigation }}">
<meta name="new-browser" content="{{ .NewBrowser }}"> <meta name="new-browser" content="{{ .NewBrowser }}">
<meta name="new-objects-flow" content="{{ .NewObjectsFlow }}">
<title>{{ .SatelliteName }}</title> <title>{{ .SatelliteName }}</title>
<link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACDVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////8nbP8obf8pbf8qbv8rb/8sb/8tcP8ucf8vcf8vcv8xc/8zdP81df81dv82dv83d/84eP85eP86ef87ev89e/8+fP8/fP9Aff9Bfv9Cfv9Df/9EgP9FgP9Ggf9Hgv9Jg/9LhP9Mhf9Nhv9Oh/9Ph/9RiP9Rif9Sif9Ui/9Vi/9WjP9Xjf9Yjf9aj/9dkf9ekf9ilP9jlf9llv9nl/9omP9rmv9sm/9tnP9vnf9wnv9yn/91of92ov93o/94o/98pv9/qP+Bqf+Cqv+Eq/+FrP+Hrf+Irv+Jr/+Kr/+Msf+Nsv+Stf+Ttf+Ttv+Utv+Vt/+WuP+XuP+Zuf+Zuv+hv/+kwf+lwv+mwv+nw/+oxP+pxP+pxf+qxf+rxv+yy/+0zP+1zf+3zv+4z/+60P+70f+90v+/0/+/1P/B1f/D1v/E1//F1//F2P/G2P/H2f/I2v/J2v/K2//L3P/P3v/Q3//R4P/S4P/V4v/V4//W4//X5P/Y5P/b5v/b5//c5//d6P/e6f/f6f/g6v/h6//j7P/k7f/l7f/m7v/q8f/r8f/u8//w9f/x9f/x9v/z9//0+P/2+f/3+f/3+v/4+v/5+//6/P/8/f/9/v/+/v////9uCbVDAAAAFXRSTlMABAU4Ozw9PpSWl5ilp6ip4+Tl/P6nIcp/AAAAAWJLR0SuuWuTpwAAAh5JREFUOMtjYGBgYOcXEl6HAYSF+FgZQICJex1OwMkEVIAi3+Xh1ozM5wKaj8xfpBwcITsbWYSNgR+JtzpJYvU6jbAVSEK8DEIITpOZqnxItISWfgVCTJAB7v4ZXpKRC9uMNCqXJci6TID7hQFMrV2zJE7abTKQFesDJGb7SYTOX7sGLAVWUKCgrGZcDeaDFaxb12alqC6XDlMwTyKnRLJ1HbKCddNEc0skJkAVdEssXatRiKqgVmLlatUqqILVpuaOEnLJy4GsIhONuHlAOldVwtJWcwnMDb2i4dPKdHVKV3uqRCdYqU9psVDOmh0vUQN35FTRhevWLU+V0FeZBdTtpSQRvgAoKtuMqmBdpKxvKYjXJ+o+cx0WBRPFO6ABHuesMheLghIdePiutc7AoqBLchZchVMSFgUr9HTS8sEgL1C0E1XBRNGUeeV6OlFONjbqSjY2Nv7mKjnzMyXqYQrW2OsYS8smLkOE5OpsFSkdQ6PlUAU9EgtXq6MFdZ3EkpVKNVAFc8TKW6QbURVMFK1slOyGuSFdUkLOoQtZwSRXaRmpKLgj1y1eMjdIImguTMHCCAnvGcuXQhIMPMl1O8hnrOy31GtfnaNi3oRIcohEu7ZY20DZK0DGTCV7NVKi5UVK40vDJVatU/dfgCTEw8AsgsSdLx+TKjUdOeMAsycnMr/BzrIcmc8ByrycuDMvByM4f7PyCmLL/gK8LEBJALYsGEdXEyupAAAAAElFTkSuQmCC" type="image/x-icon"> <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACDVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////8nbP8obf8pbf8qbv8rb/8sb/8tcP8ucf8vcf8vcv8xc/8zdP81df81dv82dv83d/84eP85eP86ef87ev89e/8+fP8/fP9Aff9Bfv9Cfv9Df/9EgP9FgP9Ggf9Hgv9Jg/9LhP9Mhf9Nhv9Oh/9Ph/9RiP9Rif9Sif9Ui/9Vi/9WjP9Xjf9Yjf9aj/9dkf9ekf9ilP9jlf9llv9nl/9omP9rmv9sm/9tnP9vnf9wnv9yn/91of92ov93o/94o/98pv9/qP+Bqf+Cqv+Eq/+FrP+Hrf+Irv+Jr/+Kr/+Msf+Nsv+Stf+Ttf+Ttv+Utv+Vt/+WuP+XuP+Zuf+Zuv+hv/+kwf+lwv+mwv+nw/+oxP+pxP+pxf+qxf+rxv+yy/+0zP+1zf+3zv+4z/+60P+70f+90v+/0/+/1P/B1f/D1v/E1//F1//F2P/G2P/H2f/I2v/J2v/K2//L3P/P3v/Q3//R4P/S4P/V4v/V4//W4//X5P/Y5P/b5v/b5//c5//d6P/e6f/f6f/g6v/h6//j7P/k7f/l7f/m7v/q8f/r8f/u8//w9f/x9f/x9v/z9//0+P/2+f/3+f/3+v/4+v/5+//6/P/8/f/9/v/+/v////9uCbVDAAAAFXRSTlMABAU4Ozw9PpSWl5ilp6ip4+Tl/P6nIcp/AAAAAWJLR0SuuWuTpwAAAh5JREFUOMtjYGBgYOcXEl6HAYSF+FgZQICJex1OwMkEVIAi3+Xh1ozM5wKaj8xfpBwcITsbWYSNgR+JtzpJYvU6jbAVSEK8DEIITpOZqnxItISWfgVCTJAB7v4ZXpKRC9uMNCqXJci6TID7hQFMrV2zJE7abTKQFesDJGb7SYTOX7sGLAVWUKCgrGZcDeaDFaxb12alqC6XDlMwTyKnRLJ1HbKCddNEc0skJkAVdEssXatRiKqgVmLlatUqqILVpuaOEnLJy4GsIhONuHlAOldVwtJWcwnMDb2i4dPKdHVKV3uqRCdYqU9psVDOmh0vUQN35FTRhevWLU+V0FeZBdTtpSQRvgAoKtuMqmBdpKxvKYjXJ+o+cx0WBRPFO6ABHuesMheLghIdePiutc7AoqBLchZchVMSFgUr9HTS8sEgL1C0E1XBRNGUeeV6OlFONjbqSjY2Nv7mKjnzMyXqYQrW2OsYS8smLkOE5OpsFSkdQ6PlUAU9EgtXq6MFdZ3EkpVKNVAFc8TKW6QbURVMFK1slOyGuSFdUkLOoQtZwSRXaRmpKLgj1y1eMjdIImguTMHCCAnvGcuXQhIMPMl1O8hnrOy31GtfnaNi3oRIcohEu7ZY20DZK0DGTCV7NVKi5UVK40vDJVatU/dfgCTEw8AsgsSdLx+TKjUdOeMAsycnMr/BzrIcmc8ByrycuDMvByM4f7PyCmLL/gK8LEBJALYsGEdXEyupAAAAAElFTkSuQmCC" type="image/x-icon">
<link rel="dns-prefetch" href="https://js.stripe.com"> <link rel="dns-prefetch" href="https://js.stripe.com">

View File

@ -41,6 +41,7 @@ export default class App extends Vue {
const couponCodeSignupUIEnabled = MetaUtils.getMetaContent('coupon-code-signup-ui-enabled'); const couponCodeSignupUIEnabled = MetaUtils.getMetaContent('coupon-code-signup-ui-enabled');
const isNewOnboardingFlow = MetaUtils.getMetaContent('new-onboarding-flow'); const isNewOnboardingFlow = MetaUtils.getMetaContent('new-onboarding-flow');
const isNewNavStructure = MetaUtils.getMetaContent('new-navigation-structure'); const isNewNavStructure = MetaUtils.getMetaContent('new-navigation-structure');
const isNewObjectsFlow = MetaUtils.getMetaContent('new-objects-flow');
if (satelliteName) { if (satelliteName) {
this.$store.dispatch(APP_STATE_ACTIONS.SET_SATELLITE_NAME, satelliteName); this.$store.dispatch(APP_STATE_ACTIONS.SET_SATELLITE_NAME, satelliteName);
@ -78,6 +79,10 @@ export default class App extends Vue {
if (isNewNavStructure) { if (isNewNavStructure) {
this.$store.dispatch(APP_STATE_ACTIONS.SET_NAV_STRUCTURE_STATUS, isNewNavStructure === 'true'); this.$store.dispatch(APP_STATE_ACTIONS.SET_NAV_STRUCTURE_STATUS, isNewNavStructure === 'true');
} }
if (isNewObjectsFlow) {
this.$store.dispatch(APP_STATE_ACTIONS.SET_OBJECTS_FLOW_STATUS, isNewObjectsFlow === 'true');
}
} }
} }
</script> </script>

View File

@ -42,6 +42,7 @@ class State {
public couponCodeSignupUIEnabled = false, public couponCodeSignupUIEnabled = false,
public isNewOnbCLIFlow = false, public isNewOnbCLIFlow = false,
public isNewNavStructure = false, public isNewNavStructure = false,
public isNewObjectsFlow = false,
){} ){}
} }
@ -147,6 +148,9 @@ export const appStateModule = {
[APP_STATE_MUTATIONS.SET_NAV_STRUCTURE_STATUS](state: State, isNewNavStructure: boolean): void { [APP_STATE_MUTATIONS.SET_NAV_STRUCTURE_STATUS](state: State, isNewNavStructure: boolean): void {
state.isNewNavStructure = isNewNavStructure; state.isNewNavStructure = isNewNavStructure;
}, },
[APP_STATE_MUTATIONS.SET_OBJECTS_FLOW_STATUS](state: State, isNewObjectsFlow: boolean): void {
state.isNewObjectsFlow = isNewObjectsFlow;
},
[APP_STATE_MUTATIONS.SET_COUPON_CODE_BILLING_UI_STATUS](state: State, couponCodeBillingUIEnabled: boolean): void { [APP_STATE_MUTATIONS.SET_COUPON_CODE_BILLING_UI_STATUS](state: State, couponCodeBillingUIEnabled: boolean): void {
state.couponCodeBillingUIEnabled = couponCodeBillingUIEnabled; state.couponCodeBillingUIEnabled = couponCodeBillingUIEnabled;
}, },
@ -284,6 +288,9 @@ export const appStateModule = {
[APP_STATE_ACTIONS.SET_NAV_STRUCTURE_STATUS]: function ({commit}: AppContext, isNewNavStructure: boolean): void { [APP_STATE_ACTIONS.SET_NAV_STRUCTURE_STATUS]: function ({commit}: AppContext, isNewNavStructure: boolean): void {
commit(APP_STATE_MUTATIONS.SET_NAV_STRUCTURE_STATUS, isNewNavStructure); commit(APP_STATE_MUTATIONS.SET_NAV_STRUCTURE_STATUS, isNewNavStructure);
}, },
[APP_STATE_ACTIONS.SET_OBJECTS_FLOW_STATUS]: function ({commit}: AppContext, isNewObjectsFlow: boolean): void {
commit(APP_STATE_MUTATIONS.SET_OBJECTS_FLOW_STATUS, isNewObjectsFlow);
},
[APP_STATE_ACTIONS.SET_COUPON_CODE_BILLING_UI_STATUS]: function ({commit}: AppContext, couponCodeBillingUIEnabled: boolean): void { [APP_STATE_ACTIONS.SET_COUPON_CODE_BILLING_UI_STATUS]: function ({commit}: AppContext, couponCodeBillingUIEnabled: boolean): void {
commit(APP_STATE_MUTATIONS.SET_COUPON_CODE_BILLING_UI_STATUS, couponCodeBillingUIEnabled); commit(APP_STATE_MUTATIONS.SET_COUPON_CODE_BILLING_UI_STATUS, couponCodeBillingUIEnabled);
}, },

View File

@ -37,4 +37,5 @@ export const APP_STATE_MUTATIONS = {
SET_COUPON_CODE_SIGNUP_UI_STATUS: 'SET_COUPON_CODE_SIGNUP_UI_STATUS', SET_COUPON_CODE_SIGNUP_UI_STATUS: 'SET_COUPON_CODE_SIGNUP_UI_STATUS',
SET_ONB_CLI_FLOW_STATUS: 'SET_ONB_CLI_FLOW_STATUS', SET_ONB_CLI_FLOW_STATUS: 'SET_ONB_CLI_FLOW_STATUS',
SET_NAV_STRUCTURE_STATUS: 'SET_NAV_STRUCTURE_STATUS', SET_NAV_STRUCTURE_STATUS: 'SET_NAV_STRUCTURE_STATUS',
SET_OBJECTS_FLOW_STATUS: 'SET_OBJECTS_FLOW_STATUS',
}; };

View File

@ -31,6 +31,7 @@ export const APP_STATE_ACTIONS = {
SET_COUPON_CODE_SIGNUP_UI_STATUS: 'SET_COUPON_CODE_SIGNUP_UI_STATUS', SET_COUPON_CODE_SIGNUP_UI_STATUS: 'SET_COUPON_CODE_SIGNUP_UI_STATUS',
SET_ONB_CLI_FLOW_STATUS: 'SET_ONB_CLI_FLOW_STATUS', SET_ONB_CLI_FLOW_STATUS: 'SET_ONB_CLI_FLOW_STATUS',
SET_NAV_STRUCTURE_STATUS: 'SET_NAV_STRUCTURE_STATUS', SET_NAV_STRUCTURE_STATUS: 'SET_NAV_STRUCTURE_STATUS',
SET_OBJECTS_FLOW_STATUS: 'SET_OBJECTS_FLOW_STATUS',
}; };
export const NOTIFICATION_ACTIONS = { export const NOTIFICATION_ACTIONS = {