Skip to content

Commit 375999e

Browse files
committed
Filter out experimental IDEs on the backend
1 parent 832f389 commit 375999e

File tree

5 files changed

+140
-90
lines changed

5 files changed

+140
-90
lines changed

components/ide-service-api/go/ide.pb.go

Lines changed: 91 additions & 78 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/ide-service-api/go/ide_grpc.pb.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/ide-service-api/ide.proto

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ service IDEService {
1818
}
1919
}
2020

21-
message GetConfigRequest {}
21+
message GetConfigRequest {
22+
User user = 1;
23+
}
2224

2325
message GetConfigResponse {
2426
string content = 1;

components/ide-service-api/typescript/src/ide.pb.ts

Lines changed: 16 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/ide-service/pkg/server/server.go

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,35 @@ func (s *IDEServiceServer) register(grpcServer *grpc.Server) {
9797
}
9898

9999
func (s *IDEServiceServer) GetConfig(ctx context.Context, req *api.GetConfigRequest) (*api.GetConfigResponse, error) {
100-
return &api.GetConfigResponse{
101-
Content: s.parsedIDEConfigContent,
102-
}, nil
100+
configCatClient := experiments.NewClient()
101+
experimentalIdesEnabled := configCatClient.GetBoolValue(ctx, "experimentalIdes", false, experiments.Attributes{
102+
UserID: req.User.Id,
103+
UserEmail: *req.User.Email,
104+
})
105+
106+
if experimentalIdesEnabled {
107+
// We can return everything
108+
return &api.GetConfigResponse{
109+
Content: s.parsedIDEConfigContent,
110+
}, nil
111+
} else {
112+
for key, ide := range s.ideConfig.IdeOptions.Options {
113+
if ide.Experimental && !experimentalIdesEnabled {
114+
delete(s.ideConfig.IdeOptions.Options, key)
115+
}
116+
}
117+
118+
parsedConfig, err := json.Marshal(s.ideConfig)
119+
if err != nil {
120+
log.WithError(err).Error("cannot marshal ide config")
121+
return nil, err
122+
}
123+
s.parsedIDEConfigContent = string(parsedConfig)
124+
125+
return &api.GetConfigResponse{
126+
Content: s.parsedIDEConfigContent,
127+
}, nil
128+
}
103129
}
104130

105131
func (s *IDEServiceServer) readIDEConfig(ctx context.Context, isInit bool) {

0 commit comments

Comments
 (0)