Implement support for the NetSuite OAuth connect flow - #96677
Conversation
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@gijoe0295 Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8eb52a1ef6
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@gijoe0295 The Web-E PR was deployed to staging, so this is ready for review (you can test with the staging server). |
|
Assigning to @ShridharGoel for review since they're attached to the project |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 74bdce555a
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| title: '[de] Enable OAuth 2.0', | ||
| description: '[de] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *Manage Authentication*, enable *OAuth 2.0*.', |
There was a problem hiding this comment.
Replace visible locale placeholders
When the NetSuite OAuth beta is enabled and the user's preferred locale is German (and likewise for the other non-English locale files changed in this diff), these strings are rendered verbatim by translate(...) in the setup wizard, so users see visible placeholders like [de] Enable OAuth 2.0 and English instructions instead of localized or clean fallback copy. Please replace the [xx] placeholders with real translations, or at least remove the prefixes so we don't ship placeholder text to localized users.
Useful? React with 👍 / 👎.
|
@yuwenmemon Can you run the translations workflow when you get the chance? |
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index ae2faf734b9..f3d03826870 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -5449,12 +5449,13 @@ ${amount} für ${merchant} – ${date}`,
netSuiteAccountIDDescription: 'Wechsel in NetSuite zu *Setup > Integration > SOAP Web Services Preferences*.',
},
enableOAuth: {
- title: '[de] Enable OAuth 2.0',
- description: '[de] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *Manage Authentication*, enable *OAuth 2.0*.',
+ title: 'OAuth 2.0 aktivieren',
+ description: 'Gehen Sie in NetSuite zu *Setup > Company > Enable Features > SuiteCloud* und aktivieren Sie unter *Manage Authentication* die Option *OAuth 2.0*.',
},
enableRestWebServices: {
- title: '[de] Enable REST web services',
- description: '[de] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *SuiteTalk (Web Services)*, enable *REST Web Services*.',
+ title: 'REST-Webdienste aktivieren',
+ description:
+ 'Gehen Sie in NetSuite zu *Setup > Company > Enable Features > SuiteCloud* und aktivieren Sie unter *SuiteTalk (Web Services)* die Option *REST Web Services*.',
},
},
},
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 8d845aec688..3f226806e8c 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -5323,12 +5323,12 @@ ${amount} para ${merchant} - ${date}`,
description: 'En NetSuite, ir a *Configuración > Empresa > Habilitar funciones > SuiteCloud* > habilitar *Servicios Web SOAP*.',
},
enableOAuth: {
- title: '[es] Enable OAuth 2.0',
- description: '[es] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *Manage Authentication*, enable *OAuth 2.0*.',
+ title: 'Habilitar OAuth 2.0',
+ description: 'En NetSuite, ve a *Setup > Company > Enable Features > SuiteCloud* y, en *Manage Authentication*, habilita *OAuth 2.0*.',
},
enableRestWebServices: {
- title: '[es] Enable REST web services',
- description: '[es] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *SuiteTalk (Web Services)*, enable *REST Web Services*.',
+ title: 'Habilitar servicios web REST',
+ description: 'En NetSuite, ve a *Setup > Company > Enable Features > SuiteCloud* y, en *SuiteTalk (Web Services)*, habilita *REST Web Services*.',
},
createAccessToken: {
title: 'Crear un token de acceso',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 1b8cdc496e9..0d94315781e 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -5459,12 +5459,12 @@ ${amount} pour ${merchant} - ${date}`,
netSuiteAccountIDDescription: 'Dans NetSuite, accédez à *Setup > Integration > SOAP Web Services Preferences*.',
},
enableOAuth: {
- title: '[fr] Enable OAuth 2.0',
- description: '[fr] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *Manage Authentication*, enable *OAuth 2.0*.',
+ title: 'Activer OAuth 2.0',
+ description: 'Dans NetSuite, allez dans *Setup > Company > Enable Features > SuiteCloud* > sous *Manage Authentication*, activez *OAuth 2.0*.',
},
enableRestWebServices: {
- title: '[fr] Enable REST web services',
- description: '[fr] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *SuiteTalk (Web Services)*, enable *REST Web Services*.',
+ title: 'Activer les services web REST',
+ description: 'Dans NetSuite, accédez à *Setup > Company > Enable Features > SuiteCloud* puis, sous *SuiteTalk (Web Services)*, activez *REST Web Services*.',
},
},
},
diff --git a/src/languages/it.ts b/src/languages/it.ts
index e8659c9e177..753db5e74d7 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -5423,12 +5423,12 @@ ${amount} per ${merchant} - ${date}`,
netSuiteAccountIDDescription: 'In NetSuite, vai a *Setup > Integration > SOAP Web Services Preferences*.',
},
enableOAuth: {
- title: '[it] Enable OAuth 2.0',
- description: '[it] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *Manage Authentication*, enable *OAuth 2.0*.',
+ title: 'Abilita OAuth 2.0',
+ description: 'In NetSuite, vai su *Setup > Company > Enable Features > SuiteCloud* > sotto *Manage Authentication*, abilita *OAuth 2.0*.',
},
enableRestWebServices: {
- title: '[it] Enable REST web services',
- description: '[it] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *SuiteTalk (Web Services)*, enable *REST Web Services*.',
+ title: 'Abilita servizi web REST',
+ description: 'In NetSuite, vai su *Setup > Company > Enable Features > SuiteCloud* > sotto *SuiteTalk (Web Services)*, abilita *REST Web Services*.',
},
},
},
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 98b3ddf2771..484a09e1b72 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -5366,12 +5366,12 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの'
netSuiteAccountIDDescription: 'NetSuite で、*Setup > Integration > SOAP Web Services Preferences* に移動します。',
},
enableOAuth: {
- title: '[ja] Enable OAuth 2.0',
- description: '[ja] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *Manage Authentication*, enable *OAuth 2.0*.',
+ title: 'OAuth 2.0 を有効にする',
+ description: 'NetSuite で、*Setup > Company > Enable Features > SuiteCloud* に進み、*Manage Authentication* 内の *OAuth 2.0* を有効にします。',
},
enableRestWebServices: {
- title: '[ja] Enable REST web services',
- description: '[ja] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *SuiteTalk (Web Services)*, enable *REST Web Services*.',
+ title: 'REST Web サービスを有効にする',
+ description: 'NetSuite で、*Setup > Company > Enable Features > SuiteCloud* に移動し、*SuiteTalk (Web Services)* セクション内で *REST Web Services* を有効にします。',
},
},
},
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index f605052ec30..6a3259633dd 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -5417,12 +5417,12 @@ ${amount} voor ${merchant} - ${date}`,
netSuiteAccountIDDescription: 'Ga in NetSuite naar *Setup > Integration > SOAP Web Services Preferences*.',
},
enableOAuth: {
- title: '[nl] Enable OAuth 2.0',
- description: '[nl] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *Manage Authentication*, enable *OAuth 2.0*.',
+ title: 'OAuth 2.0 inschakelen',
+ description: 'Ga in NetSuite naar *Setup > Company > Enable Features > SuiteCloud* en schakel onder *Manage Authentication* de optie *OAuth 2.0* in.',
},
enableRestWebServices: {
- title: '[nl] Enable REST web services',
- description: '[nl] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *SuiteTalk (Web Services)*, enable *REST Web Services*.',
+ title: 'REST-webservices inschakelen',
+ description: 'Ga in NetSuite naar *Setup > Company > Enable Features > SuiteCloud* en schakel onder *SuiteTalk (Web Services)* de optie *REST Web Services* in.',
},
},
},
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 3ed9d832b3c..c303642fc3c 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -5402,12 +5402,12 @@ ${amount} dla ${merchant} - ${date}`,
netSuiteAccountIDDescription: 'W NetSuite przejdź do *Setup > Integration > SOAP Web Services Preferences*.',
},
enableOAuth: {
- title: '[pl] Enable OAuth 2.0',
- description: '[pl] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *Manage Authentication*, enable *OAuth 2.0*.',
+ title: 'Włącz OAuth 2.0',
+ description: 'W NetSuite przejdź do *Setup > Company > Enable Features > SuiteCloud* i w sekcji *Manage Authentication* włącz *OAuth 2.0*.',
},
enableRestWebServices: {
- title: '[pl] Enable REST web services',
- description: '[pl] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *SuiteTalk (Web Services)*, enable *REST Web Services*.',
+ title: 'Włącz usługi sieciowe REST',
+ description: 'W NetSuite przejdź do *Setup > Company > Enable Features > SuiteCloud*, a następnie w sekcji *SuiteTalk (Web Services)* włącz *REST Web Services*.',
},
},
},
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 5644dbf4a25..c57587ffce6 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -5411,12 +5411,12 @@ ${amount} para ${merchant} - ${date}`,
netSuiteAccountIDDescription: 'No NetSuite, acesse *Setup > Integration > SOAP Web Services Preferences*.',
},
enableOAuth: {
- title: '[pt-BR] Enable OAuth 2.0',
- description: '[pt-BR] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *Manage Authentication*, enable *OAuth 2.0*.',
+ title: 'Ativar OAuth 2.0',
+ description: 'No NetSuite, vá em *Setup > Company > Enable Features > SuiteCloud* e, em *Manage Authentication*, ative *OAuth 2.0*.',
},
enableRestWebServices: {
- title: '[pt-BR] Enable REST web services',
- description: '[pt-BR] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *SuiteTalk (Web Services)*, enable *REST Web Services*.',
+ title: 'Ativar serviços web REST',
+ description: 'No NetSuite, vá para *Setup > Company > Enable Features > SuiteCloud* > em *SuiteTalk (Web Services)*, ative *REST Web Services*.',
},
},
},
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 503a8c3852c..984925b04db 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -5242,12 +5242,12 @@ ${amount},商户:${merchant} - 日期:${date}`,
netSuiteAccountIDDescription: '在 NetSuite 中,前往 *Setup > Integration > SOAP Web Services Preferences*。',
},
enableOAuth: {
- title: '[zh-hans] Enable OAuth 2.0',
- description: '[zh-hans] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *Manage Authentication*, enable *OAuth 2.0*.',
+ title: '启用 OAuth 2.0',
+ description: '在 NetSuite 中,依次前往 *Setup > Company > Enable Features > SuiteCloud*,在 *Manage Authentication* 下启用 *OAuth 2.0*。',
},
enableRestWebServices: {
- title: '[zh-hans] Enable REST web services',
- description: '[zh-hans] In NetSuite, go to *Setup > Company > Enable Features > SuiteCloud* > under *SuiteTalk (Web Services)*, enable *REST Web Services*.',
+ title: '启用 REST 网络服务',
+ description: '在 NetSuite 中,依次前往 *Setup > Company > Enable Features > SuiteCloud*,在 *SuiteTalk(Web Services)* 下启用 *REST Web Services*。',
},
},
},
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
Explanation of Change
Implement support for connecting to NetSuite accounting using OAuth, gated behind the
netSuiteOAuthbeta.Fixed Issues
$ #96569
PROPOSAL: #96569 (comment)
Tests
Prerequisite
netSuiteOAuthbeta enabled for the test accountTest Steps
Offline tests
QA Steps
Same as tests.
Test Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
96569-ios-hybrid.mp4
iOS: mWeb Safari
96569-ios-safari.mp4
MacOS: Chrome / Safari
96569-web.mp4