@@ -2,84 +2,21 @@ import type {OnyxUpdate} from 'react-native-onyx';
22import Onyx from 'react-native-onyx' ;
33import type { ValueOf } from 'type-fest' ;
44import { read , write } from '@libs/API' ;
5+ import type { ConnectPolicyToMergeParams } from '@libs/API/parameters' ;
56import { READ_COMMANDS , WRITE_COMMANDS } from '@libs/API/types' ;
7+ import { getCommandURL } from '@libs/ApiUtils' ;
68import { getMicroSecondOnyxErrorWithTranslationKey } from '@libs/ErrorUtils' ;
79import CONST from '@src/CONST' ;
810import type { MergeHRProviderSlug } from '@src/CONST/MERGE_HR_PROVIDERS' ;
911import ONYXKEYS from '@src/ONYXKEYS' ;
10- import type { Connections } from '@src/types/onyx/Policy' ;
1112
12- /**
13- * Fetches a Merge link_token. The token is returned by the server and stored in a RAM-only Onyx key
14- * so it is never persisted to disk. The UI reads it to initialize the Merge Link SDK.
15- * The actual connection is only established after the user completes the Merge
16- * Link flow and the public_token callback is processed by the backend.
17- */
18- function connectPolicyToMergeHR ( policyID : string , integration : MergeHRProviderSlug ) {
19- const optimisticData : Array < OnyxUpdate < typeof ONYXKEYS . COLLECTION . POLICY | typeof ONYXKEYS . RAM_ONLY_MERGE_HR_LINK_TOKEN > > = [
20- {
21- onyxMethod : Onyx . METHOD . MERGE ,
22- key : `${ ONYXKEYS . COLLECTION . POLICY } ${ policyID } ` ,
23- value : {
24- connections : {
25- [ CONST . POLICY . CONNECTIONS . NAME . MERGE_HR ] : {
26- config : {
27- pendingFields : { integration : CONST . RED_BRICK_ROAD_PENDING_ACTION . ADD } ,
28- errorFields : { integration : null } ,
29- } ,
30- } ,
31- } ,
32- } ,
33- } ,
34- {
35- onyxMethod : Onyx . METHOD . SET ,
36- key : ONYXKEYS . RAM_ONLY_MERGE_HR_LINK_TOKEN ,
37- value : null ,
38- } ,
39- ] ;
40-
41- const successData : Array < OnyxUpdate < typeof ONYXKEYS . COLLECTION . POLICY > > = [
42- {
43- onyxMethod : Onyx . METHOD . MERGE ,
44- key : `${ ONYXKEYS . COLLECTION . POLICY } ${ policyID } ` ,
45- value : {
46- connections : {
47- [ CONST . POLICY . CONNECTIONS . NAME . MERGE_HR ] : {
48- config : {
49- pendingFields : { integration : null } ,
50- errorFields : { integration : null } ,
51- } ,
52- } ,
53- } ,
54- } ,
55- } ,
56- ] ;
57-
58- const failureData : Array < OnyxUpdate < typeof ONYXKEYS . COLLECTION . POLICY > > = [
59- {
60- onyxMethod : Onyx . METHOD . MERGE ,
61- key : `${ ONYXKEYS . COLLECTION . POLICY } ${ policyID } ` ,
62- value : {
63- connections : {
64- [ CONST . POLICY . CONNECTIONS . NAME . MERGE_HR ] : {
65- config : {
66- pendingFields : { integration : null } ,
67- errorFields : { integration : getMicroSecondOnyxErrorWithTranslationKey ( 'common.genericErrorMessage' ) } ,
68- } ,
69- } ,
70- } ,
71- } ,
72- } ,
73- ] ;
74-
75- read (
76- READ_COMMANDS . CONNECT_POLICY_TO_MERGE ,
77- {
78- policyID,
79- integration,
80- } ,
81- { optimisticData, successData, failureData} ,
82- ) ;
13+ function getMergeHRSetupLink ( policyID : string , integration : MergeHRProviderSlug ) {
14+ const params : ConnectPolicyToMergeParams = { policyID, integration} ;
15+ const commandURL = getCommandURL ( {
16+ command : READ_COMMANDS . CONNECT_POLICY_TO_MERGE ,
17+ shouldSkipWebProxy : true ,
18+ } ) ;
19+ return commandURL + new URLSearchParams ( params ) . toString ( ) ;
8320}
8421
8522/**
@@ -247,40 +184,6 @@ function updateMergeHRFinalApprover(policyID: string, finalApprover: string | nu
247184 ) ;
248185}
249186
250- /**
251- * Removes the Merge HR connection from a policy.
252- */
253- function disconnectMergeHR ( policyID : string , currentConnection : Connections [ typeof CONST . POLICY . CONNECTIONS . NAME . MERGE_HR ] ) {
254- const optimisticData : Array < OnyxUpdate < typeof ONYXKEYS . COLLECTION . POLICY | typeof ONYXKEYS . COLLECTION . POLICY_CONNECTION_SYNC_PROGRESS > > = [
255- {
256- onyxMethod : Onyx . METHOD . MERGE ,
257- key : `${ ONYXKEYS . COLLECTION . POLICY } ${ policyID } ` ,
258- value : {
259- connections : {
260- [ CONST . POLICY . CONNECTIONS . NAME . MERGE_HR ] : null ,
261- } ,
262- } ,
263- } ,
264- {
265- onyxMethod : Onyx . METHOD . SET ,
266- key : `${ ONYXKEYS . COLLECTION . POLICY_CONNECTION_SYNC_PROGRESS } ${ policyID } ` ,
267- value : null ,
268- } ,
269- ] ;
270-
271- const failureData : Array < OnyxUpdate < typeof ONYXKEYS . COLLECTION . POLICY | typeof ONYXKEYS . COLLECTION . POLICY_CONNECTION_SYNC_PROGRESS > > = [
272- {
273- onyxMethod : Onyx . METHOD . MERGE ,
274- key : `${ ONYXKEYS . COLLECTION . POLICY } ${ policyID } ` ,
275- value : {
276- connections : {
277- [ CONST . POLICY . CONNECTIONS . NAME . MERGE_HR ] : currentConnection ,
278- } ,
279- } ,
280- } ,
281- ] ;
282-
283- write ( WRITE_COMMANDS . REMOVE_POLICY_CONNECTION , { policyID, connectionName : CONST . POLICY . CONNECTIONS . NAME . MERGE_HR } , { optimisticData, failureData} ) ;
284- }
187+ export { syncMergeHR , updateMergeHRApprovalMode , updateMergeHRFinalApprover } ;
285188
286- export { connectPolicyToMergeHR , syncMergeHR , updateMergeHRApprovalMode , updateMergeHRFinalApprover , disconnectMergeHR } ;
189+ export default getMergeHRSetupLink ;
0 commit comments