@@ -17,6 +17,12 @@ const {
1717export const WISHLIST_RECORD_TYPE_ID = '012Vj000008tfPKIAY' ;
1818export const RFP_RECORD_TYPE_ID = '012Vj000008tfPJIAY' ;
1919
20+ const SALESFORCE_ENABLED = ! ! ( SF_PROD_LOGIN_URL && SF_PROD_USERNAME && SF_PROD_PASSWORD && SF_PROD_SECURITY_TOKEN ) ;
21+
22+ if ( ! SALESFORCE_ENABLED ) {
23+ console . warn ( 'Salesforce credentials not configured. See .env.local.example for required variables.' ) ;
24+ }
25+
2026/**
2127 * Generate a JWT token for CSAT submission
2228 * @param applicationId - The Salesforce Application ID
@@ -57,6 +63,10 @@ export const createConnection = (): jsforce.Connection => {
5763
5864export const loginToSalesforce = ( conn : jsforce . Connection ) : Promise < void > => {
5965 return new Promise ( ( resolve , reject ) => {
66+ if ( ! SALESFORCE_ENABLED ) {
67+ return reject ( new Error ( 'Salesforce integration disabled' ) ) ;
68+ }
69+
6070 conn . login ( SF_PROD_USERNAME ! , `${ SF_PROD_PASSWORD } ${ SF_PROD_SECURITY_TOKEN } ` , err => {
6171 if ( err ) {
6272 console . error ( 'Salesforce login error:' , err ) ;
@@ -177,6 +187,9 @@ export function getGrantInitiativeItems(type?: GrantInitiativeType) {
177187 return resolve ( grantInitiativeItems ) ;
178188 } ) ;
179189 } catch ( error ) {
190+ if ( ! SALESFORCE_ENABLED ) {
191+ return resolve ( [ ] ) ;
192+ }
180193 return reject ( error ) ;
181194 }
182195 } ) ;
@@ -208,6 +221,9 @@ export const createSalesforceRecord = async (
208221 resolve ( { id : ret . id , success : ret . success } ) ;
209222 } ) ;
210223 } catch ( error ) {
224+ if ( ! SALESFORCE_ENABLED ) {
225+ return resolve ( { id : `MOCK_${ objectType } _${ Date . now ( ) } ` , success : true } ) ;
226+ }
211227 console . error ( `Error in create${ objectType } :` , error ) ;
212228 reject ( error ) ;
213229 }
@@ -242,6 +258,9 @@ export const updateSalesforceRecord = async (
242258 resolve ( { id : ret . id , success : ret . success } ) ;
243259 } ) ;
244260 } catch ( error ) {
261+ if ( ! SALESFORCE_ENABLED ) {
262+ return resolve ( { id, success : true } ) ;
263+ }
245264 console . error ( `Error in update${ objectType } :` , error ) ;
246265 reject ( error ) ;
247266 }
@@ -325,6 +344,9 @@ export const uploadFileToSalesforce = async (
325344 }
326345 ) ;
327346 } catch ( error ) {
347+ if ( ! SALESFORCE_ENABLED ) {
348+ return resolve ( { success : true , contentDocumentId : `MOCK_DOC_${ Date . now ( ) } ` } ) ;
349+ }
328350 console . error ( 'Error in uploadFileToSalesforce:' , error ) ;
329351 reject ( error ) ;
330352 }
0 commit comments