@@ -2075,6 +2075,69 @@ function createDraftInitialWorkspace(policyOwnerEmail = '', policyName = '', pol
2075
2075
Onyx . update ( optimisticData ) ;
2076
2076
}
2077
2077
2078
+ function buildOptimisticPolicyCategories ( policyID : string , categories : readonly string [ ] ) {
2079
+ const optimisticCategoryMap = categories . reduce (
2080
+ ( acc , category ) => ( {
2081
+ ...acc ,
2082
+ [ category ] : {
2083
+ name : category ,
2084
+ enabled : true ,
2085
+ errors : null ,
2086
+ pendingAction : CONST . RED_BRICK_ROAD_PENDING_ACTION . ADD ,
2087
+ } ,
2088
+ } ) ,
2089
+ { } ,
2090
+ ) ;
2091
+
2092
+ const successCategoryMap = categories . reduce (
2093
+ ( acc , category ) => ( {
2094
+ ...acc ,
2095
+ [ category ] : {
2096
+ errors : null ,
2097
+ pendingAction : null ,
2098
+ } ,
2099
+ } ) ,
2100
+ { } ,
2101
+ ) ;
2102
+
2103
+ const failureCategoryMap = categories . reduce (
2104
+ ( acc , category ) => ( {
2105
+ ...acc ,
2106
+ [ category ] : {
2107
+ errors : ErrorUtils . getMicroSecondOnyxError ( 'workspace.categories.createFailureMessage' ) ,
2108
+ pendingAction : null ,
2109
+ } ,
2110
+ } ) ,
2111
+ { } ,
2112
+ ) ;
2113
+
2114
+ const onyxData : OnyxData = {
2115
+ optimisticData : [
2116
+ {
2117
+ onyxMethod : Onyx . METHOD . MERGE ,
2118
+ key : `${ ONYXKEYS . COLLECTION . POLICY_CATEGORIES } ${ policyID } ` ,
2119
+ value : optimisticCategoryMap ,
2120
+ } ,
2121
+ ] ,
2122
+ successData : [
2123
+ {
2124
+ onyxMethod : Onyx . METHOD . MERGE ,
2125
+ key : `${ ONYXKEYS . COLLECTION . POLICY_CATEGORIES } ${ policyID } ` ,
2126
+ value : successCategoryMap ,
2127
+ } ,
2128
+ ] ,
2129
+ failureData : [
2130
+ {
2131
+ onyxMethod : Onyx . METHOD . MERGE ,
2132
+ key : `${ ONYXKEYS . COLLECTION . POLICY_CATEGORIES } ${ policyID } ` ,
2133
+ value : failureCategoryMap ,
2134
+ } ,
2135
+ ] ,
2136
+ } ;
2137
+
2138
+ return onyxData ;
2139
+ }
2140
+
2078
2141
/**
2079
2142
* Optimistically creates a new workspace and default workspace chats
2080
2143
*
@@ -2083,7 +2146,7 @@ function createDraftInitialWorkspace(policyOwnerEmail = '', policyName = '', pol
2083
2146
* @param [policyName] custom policy name we will use for created workspace
2084
2147
* @param [policyID] custom policy id we will use for created workspace
2085
2148
*/
2086
- function createWorkspace ( policyOwnerEmail = '' , makeMeAdmin = false , policyName = '' , policyID = generatePolicyID ( ) ) : string {
2149
+ function createWorkspace ( policyOwnerEmail = '' , makeMeAdmin = false , policyName = '' , policyID = generatePolicyID ( ) ) : CreateWorkspaceParams {
2087
2150
const workspaceName = policyName || generateDefaultWorkspaceName ( policyOwnerEmail ) ;
2088
2151
2089
2152
const { customUnits, customUnitID, customUnitRateID, outputCurrency} = buildOptimisticCustomUnits ( ) ;
@@ -2103,6 +2166,8 @@ function createWorkspace(policyOwnerEmail = '', makeMeAdmin = false, policyName
2103
2166
expenseCreatedReportActionID,
2104
2167
} = ReportUtils . buildOptimisticWorkspaceChats ( policyID , workspaceName ) ;
2105
2168
2169
+ const optimisticCategoriesData = buildOptimisticPolicyCategories ( policyID , CONST . POLICY . DEFAULT_CATEGORIES ) ;
2170
+
2106
2171
const optimisticData : OnyxUpdate [ ] = [
2107
2172
{
2108
2173
onyxMethod : Onyx . METHOD . SET ,
@@ -2293,6 +2358,18 @@ function createWorkspace(policyOwnerEmail = '', makeMeAdmin = false, policyName
2293
2358
} ,
2294
2359
] ;
2295
2360
2361
+ if ( optimisticCategoriesData . optimisticData ) {
2362
+ optimisticData . push ( ...optimisticCategoriesData . optimisticData ) ;
2363
+ }
2364
+
2365
+ if ( optimisticCategoriesData . failureData ) {
2366
+ failureData . push ( ...optimisticCategoriesData . failureData ) ;
2367
+ }
2368
+
2369
+ if ( optimisticCategoriesData . successData ) {
2370
+ successData . push ( ...optimisticCategoriesData . successData ) ;
2371
+ }
2372
+
2296
2373
const params : CreateWorkspaceParams = {
2297
2374
policyID,
2298
2375
announceChatReportID,
@@ -2311,7 +2388,7 @@ function createWorkspace(policyOwnerEmail = '', makeMeAdmin = false, policyName
2311
2388
2312
2389
API . write ( WRITE_COMMANDS . CREATE_WORKSPACE , params , { optimisticData, successData, failureData} ) ;
2313
2390
2314
- return adminsChatReportID ;
2391
+ return params ;
2315
2392
}
2316
2393
2317
2394
function openWorkspaceReimburseView ( policyID : string ) {
@@ -3085,46 +3162,7 @@ function setWorkspaceCategoryEnabled(policyID: string, categoriesToUpdate: Recor
3085
3162
}
3086
3163
3087
3164
function createPolicyCategory ( policyID : string , categoryName : string ) {
3088
- const onyxData : OnyxData = {
3089
- optimisticData : [
3090
- {
3091
- onyxMethod : Onyx . METHOD . MERGE ,
3092
- key : `${ ONYXKEYS . COLLECTION . POLICY_CATEGORIES } ${ policyID } ` ,
3093
- value : {
3094
- [ categoryName ] : {
3095
- name : categoryName ,
3096
- enabled : true ,
3097
- errors : null ,
3098
- pendingAction : CONST . RED_BRICK_ROAD_PENDING_ACTION . ADD ,
3099
- } ,
3100
- } ,
3101
- } ,
3102
- ] ,
3103
- successData : [
3104
- {
3105
- onyxMethod : Onyx . METHOD . MERGE ,
3106
- key : `${ ONYXKEYS . COLLECTION . POLICY_CATEGORIES } ${ policyID } ` ,
3107
- value : {
3108
- [ categoryName ] : {
3109
- errors : null ,
3110
- pendingAction : null ,
3111
- } ,
3112
- } ,
3113
- } ,
3114
- ] ,
3115
- failureData : [
3116
- {
3117
- onyxMethod : Onyx . METHOD . MERGE ,
3118
- key : `${ ONYXKEYS . COLLECTION . POLICY_CATEGORIES } ${ policyID } ` ,
3119
- value : {
3120
- [ categoryName ] : {
3121
- errors : ErrorUtils . getMicroSecondOnyxError ( 'workspace.categories.createFailureMessage' ) ,
3122
- pendingAction : null ,
3123
- } ,
3124
- } ,
3125
- } ,
3126
- ] ,
3127
- } ;
3165
+ const onyxData = buildOptimisticPolicyCategories ( policyID , [ categoryName ] ) ;
3128
3166
3129
3167
const parameters = {
3130
3168
policyID,
0 commit comments