@@ -56,6 +56,10 @@ import {
56
56
Organization as ProtocolOrganization ,
57
57
OrgMemberPermission ,
58
58
OrgMemberRole ,
59
+ RoleRestrictions ,
60
+ TimeoutSettings as TimeoutSettingsProtocol ,
61
+ OnboardingSettings as OnboardingSettingsProtocol ,
62
+ WelcomeMessage as WelcomeMessageProtocol ,
59
63
} from "@gitpod/gitpod-protocol/lib/teams-projects-protocol" ;
60
64
import type { DeepPartial } from "@gitpod/gitpod-protocol/lib/util/deep-partial" ;
61
65
import { parseGoDurationToMs } from "@gitpod/gitpod-protocol/lib/util/timeutil" ;
@@ -113,11 +117,15 @@ import {
113
117
OnboardingState ,
114
118
} from "@gitpod/public-api/lib/gitpod/v1/installation_pb" ;
115
119
import {
120
+ OnboardingSettings ,
121
+ OnboardingSettings_WelcomeMessage ,
116
122
Organization ,
117
123
OrganizationMember ,
118
124
OrganizationPermission ,
119
125
OrganizationRole ,
120
126
OrganizationSettings ,
127
+ RoleRestrictionEntry ,
128
+ TimeoutSettings ,
121
129
} from "@gitpod/public-api/lib/gitpod/v1/organization_pb" ;
122
130
import {
123
131
Prebuild ,
@@ -1040,6 +1048,61 @@ export class PublicAPIConverter {
1040
1048
}
1041
1049
}
1042
1050
1051
+ fromOrgMemberRoleString ( role : string ) : OrgMemberRole {
1052
+ switch ( role ) {
1053
+ case "owner" :
1054
+ case "member" :
1055
+ case "collaborator" :
1056
+ return role ;
1057
+ default :
1058
+ throw new Error ( "invalid org member role" ) ;
1059
+ }
1060
+ }
1061
+
1062
+ fromTimeoutSettings ( timeoutSettings : TimeoutSettings ) : TimeoutSettingsProtocol {
1063
+ const result : TimeoutSettingsProtocol = {
1064
+ denyUserTimeouts : timeoutSettings . denyUserTimeouts ,
1065
+ } ;
1066
+ if ( timeoutSettings . inactivity ) {
1067
+ result . inactivity = this . toDurationString ( timeoutSettings . inactivity ) ;
1068
+ }
1069
+ return result ;
1070
+ }
1071
+
1072
+ fromRoleRestrictions ( roleRestrictions : RoleRestrictionEntry [ ] ) : RoleRestrictions {
1073
+ const result : RoleRestrictions = { } ;
1074
+ for ( const roleRestriction of roleRestrictions ) {
1075
+ const role = this . fromOrgMemberRole ( roleRestriction . role ) ;
1076
+ const permissions = roleRestriction . permissions . map ( ( p ) => this . fromOrganizationPermission ( p ) ) ;
1077
+ result [ role ] = permissions ;
1078
+ }
1079
+ return result ;
1080
+ }
1081
+
1082
+ fromOnboardingSettings ( onboardingSettings : OnboardingSettings ) : OnboardingSettingsProtocol {
1083
+ const result : OnboardingSettingsProtocol = {
1084
+ internalLink : onboardingSettings . internalLink ,
1085
+ } ;
1086
+
1087
+ if ( onboardingSettings . welcomeMessage ) {
1088
+ result . welcomeMessage = this . fromWelcomeMessage ( onboardingSettings . welcomeMessage ) ;
1089
+ }
1090
+
1091
+ if ( onboardingSettings . updateRecommendedRepositories ) {
1092
+ result . recommendedRepositories = onboardingSettings . recommendedRepositories ;
1093
+ }
1094
+
1095
+ return result ;
1096
+ }
1097
+
1098
+ fromWelcomeMessage ( welcomeMessage : OnboardingSettings_WelcomeMessage ) : WelcomeMessageProtocol {
1099
+ return {
1100
+ enabled : welcomeMessage . enabled ,
1101
+ message : welcomeMessage . message ,
1102
+ featuredMemberId : welcomeMessage . featuredMemberId ,
1103
+ } ;
1104
+ }
1105
+
1043
1106
fromWorkspaceSettings ( settings ?: DeepPartial < WorkspaceSettings > ) {
1044
1107
const result : Partial <
1045
1108
Pick <
@@ -1132,26 +1195,52 @@ export class PublicAPIConverter {
1132
1195
pinnedEditorVersions : settings . pinnedEditorVersions || { } ,
1133
1196
restrictedEditorNames : settings . restrictedEditorNames || [ ] ,
1134
1197
defaultRole : settings . defaultRole || undefined ,
1135
- timeoutSettings : {
1136
- inactivity : settings . timeoutSettings ?. inactivity
1137
- ? this . toDuration ( settings . timeoutSettings ?. inactivity )
1138
- : undefined ,
1139
- denyUserTimeouts : settings . timeoutSettings ?. denyUserTimeouts ,
1140
- } ,
1141
- roleRestrictions : Object . entries ( settings . roleRestrictions ?? { } ) . map ( ( [ role , permissions ] ) => ( {
1142
- role : this . toOrgMemberRole ( role as OrgMemberRole ) ,
1143
- permissions : permissions . map ( ( permission ) => this . toOrganizationPermission ( permission ) ) ,
1144
- } ) ) ,
1198
+ timeoutSettings : settings . timeoutSettings ? this . toTimeoutSettings ( settings . timeoutSettings ) : undefined ,
1199
+ roleRestrictions : settings . roleRestrictions
1200
+ ? this . toRoleRestrictions ( settings . roleRestrictions )
1201
+ : undefined ,
1145
1202
maxParallelRunningWorkspaces : settings . maxParallelRunningWorkspaces ?? 0 ,
1146
- onboardingSettings : {
1147
- internalLink : settings ?. onboardingSettings ?. internalLink ?? undefined ,
1148
- welcomeMessage : settings ?. onboardingSettings ?. welcomeMessage ?? undefined ,
1149
- recommendedRepositories : settings ?. onboardingSettings ?. recommendedRepositories ?? [ ] ,
1150
- } ,
1203
+ onboardingSettings : settings ?. onboardingSettings
1204
+ ? this . toOnboardingSettings ( settings . onboardingSettings )
1205
+ : undefined ,
1151
1206
annotateGitCommits : settings . annotateGitCommits ?? false ,
1152
1207
} ) ;
1153
1208
}
1154
1209
1210
+ toTimeoutSettings ( settings : TimeoutSettingsProtocol ) : TimeoutSettings {
1211
+ return new TimeoutSettings ( {
1212
+ inactivity : settings . inactivity ? this . toDuration ( settings . inactivity ) : undefined ,
1213
+ denyUserTimeouts : settings . denyUserTimeouts ,
1214
+ } ) ;
1215
+ }
1216
+
1217
+ toRoleRestrictions ( roleRestrictions : RoleRestrictions ) : RoleRestrictionEntry [ ] {
1218
+ return Object . entries ( roleRestrictions ?? { } ) . map (
1219
+ ( [ role , permissions ] ) =>
1220
+ new RoleRestrictionEntry ( {
1221
+ role : this . toOrgMemberRole ( role as OrgMemberRole ) ,
1222
+ permissions : permissions . map ( ( permission ) => this . toOrganizationPermission ( permission ) ) ,
1223
+ } ) ,
1224
+ ) ;
1225
+ }
1226
+
1227
+ toOnboardingSettings ( settings : OnboardingSettingsProtocol ) : OnboardingSettings {
1228
+ return new OnboardingSettings ( {
1229
+ internalLink : settings . internalLink ,
1230
+ welcomeMessage : settings . welcomeMessage ? this . toWelcomeMessage ( settings . welcomeMessage ) : undefined ,
1231
+ recommendedRepositories : settings . recommendedRepositories ,
1232
+ } ) ;
1233
+ }
1234
+
1235
+ toWelcomeMessage ( settings : WelcomeMessageProtocol ) : OnboardingSettings_WelcomeMessage {
1236
+ return new OnboardingSettings_WelcomeMessage ( {
1237
+ enabled : settings . enabled ,
1238
+ message : settings . message ,
1239
+ featuredMemberId : settings . featuredMemberId ,
1240
+ featuredMemberResolvedAvatarUrl : settings . featuredMemberResolvedAvatarUrl ,
1241
+ } ) ;
1242
+ }
1243
+
1155
1244
toConfiguration ( project : Project ) : Configuration {
1156
1245
const result = new Configuration ( ) ;
1157
1246
result . id = project . id ;
0 commit comments