[No QA] Create the DomainAdminsPage with list of admins#77447
[No QA] Create the DomainAdminsPage with list of admins#77447mountiny merged 22 commits intoExpensify:mainfrom
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!
|
🦜 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 438a7f79..33fbbad2 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -8001,6 +8001,7 @@ Hier ist ein *Testbeleg*, um dir zu zeigen, wie es funktioniert:`,
subtitle: 'Erzwingen Sie für Mitglieder Ihrer Domain die Anmeldung per Single Sign-On, schränken Sie die Erstellung von Workspaces ein und vieles mehr.',
enable: 'Aktivieren',
},
+ admins: {title: 'Admins', findAdmin: 'Admin finden'},
},
};
// IMPORTANT: This line is manually replaced in generate translation files by scripts/generateTranslations.ts,
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index f9b57883..e21b600f 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -8005,6 +8005,7 @@ Voici un *reçu test* pour vous montrer comment cela fonctionne :`,
subtitle: "Exiger que les membres de votre domaine se connectent via l'authentification unique, restreindre la création d'espaces de travail, et plus encore.",
enable: 'Activer',
},
+ admins: {title: 'Admins', findAdmin: 'Trouver un admin'},
},
};
// IMPORTANT: This line is manually replaced in generate translation files by scripts/generateTranslations.ts,
diff --git a/src/languages/it.ts b/src/languages/it.ts
index a169b1e9..06c38bcd 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -7980,6 +7980,7 @@ Ecco una *ricevuta di prova* per mostrarti come funziona:`,
subtitle: 'Richiedi ai membri del tuo dominio di accedere tramite Single Sign-On, limita la creazione di spazi di lavoro e altro ancora.',
enable: 'Abilita',
},
+ admins: {title: 'Amministratori', findAdmin: 'Trova amministratore'},
},
};
// IMPORTANT: This line is manually replaced in generate translation files by scripts/generateTranslations.ts,
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 52d58496..439e4d9e 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -7922,6 +7922,7 @@ Expensify の使い方をお見せするための*テストレシート*がこ
subtitle: 'ドメインのメンバーにシングルサインオンでのログインを必須化し、ワークスペースの作成を制限するなど、さらに多くのことができます。',
enable: '有効にする',
},
+ admins: {title: '管理者', findAdmin: '管理者を検索'},
},
};
// IMPORTANT: This line is manually replaced in generate translation files by scripts/generateTranslations.ts,
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index e205c313..8ee1f5b7 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -7962,6 +7962,7 @@ Hier is een *testbon* om je te laten zien hoe het werkt:`,
subtitle: 'Verplicht leden van je domein om in te loggen via single sign-on, beperk het aanmaken van werkruimten en meer.',
enable: 'Inschakelen',
},
+ admins: {title: 'Beheerders', findAdmin: 'Beheerder zoeken'},
},
};
// IMPORTANT: This line is manually replaced in generate translation files by scripts/generateTranslations.ts,
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index da8ef238..dfbd08e3 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -7950,6 +7950,7 @@ Oto *paragon testowy*, który pokazuje, jak to działa:`,
subtitle: 'Wymagaj, aby członkowie Twojej domeny logowali się przez Single Sign-On (SSO), ograniczaj tworzenie obszarów roboczych i nie tylko.',
enable: 'Włącz',
},
+ admins: {title: 'Administratorzy', findAdmin: 'Znajdź administratora'},
},
};
// IMPORTANT: This line is manually replaced in generate translation files by scripts/generateTranslations.ts,
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index e827ad66..3e7dfed5 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -7955,6 +7955,7 @@ Aqui está um *recibo de teste* para mostrar como funciona:`,
subtitle: 'Exija que os membros do seu domínio façam login por meio de logon único (SSO), restrinja a criação de espaços de trabalho e muito mais.',
enable: 'Ativar',
},
+ admins: {title: 'Administradores', findAdmin: 'Encontrar administrador'},
},
};
// IMPORTANT: This line is manually replaced in generate translation files by scripts/generateTranslations.ts,
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 0ac0fd5f..5af51c44 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -7786,6 +7786,7 @@ ${reportName}
addDomain: {title: '添加域', subtitle: '请输入您想访问的私有域名(例如:expensify.com)。', domainName: '域名', newDomain: '新域名'},
domainAdded: {title: '已添加域名', description: '接下来,您需要验证域名的所有权并调整您的安全设置。', configure: '配置'},
enhancedSecurity: {title: '增强的安全性', subtitle: '要求您域内的成员使用单点登录登录、限制工作区创建等。', enable: '启用'},
+ admins: {title: '管理员', findAdmin: '查找管理员'},
},
};
// IMPORTANT: This line is manually replaced in generate translation files by scripts/generateTranslations.ts,
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
|
@situchan the crashes should be fixed now |
src/libs/Navigation/AppNavigator/usePreloadFullScreenNavigators.ts
Outdated
Show resolved
Hide resolved
|
Is it expected to go to admins page automatically after clicking domain? Screen.Recording.2025-12-13.at.4.26.42.AM.mov |
|
Is it expected that search header section is scrolled along with list? Screen.Recording.2025-12-13.at.4.32.49.AM.mov |
The same behaviour is in other places (For example workspace members page) |
NVM. I see you fixed this in latest commit b8cc828 |
situchan
left a comment
There was a problem hiding this comment.
Latest changes looks good.
I suppose it's okay |
Actually, this is what @ZhenjaHorbach said Users won't have access to the admins page (no visible button) so we should be fine for now |
|
Failing eslint check seems unrelated. Try merging main |
mountiny
left a comment
There was a problem hiding this comment.
Overall looks good to me
|
ESlint is failing on main |
|
@mountiny looks like this was merged without a test passing. Please add a note explaining why this was done and remove the |
|
mentioned above |
|
🚀 Deployed to staging by https://github.com/mountiny in version: 9.2.79-0 🚀
|
|
🚀 Deployed to staging by https://github.com/mountiny in version: 9.2.81-0 🚀
|
|
🚀 Deployed to production by https://github.com/AndrewGable in version: 9.2.81-5 🚀
|
|
🚀 Deployed to production by https://github.com/AndrewGable in version: 9.2.81-5 🚀
|


Explanation of Change
First part of the
Release 1of the domain-control-in-new-dot project. It adds Admins page underdomain/<domainAccountID>/admins. We won't add Admins button to block users from entering that page until all Release 1 PRs are mergedFixed Issues
$ #77565
PROPOSAL:
Tests
<your-local-new-dot-url>/domain/<domainID>/admins15the search text input should appearNo results found matching ...Offline tests
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, 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.ScrollViewcomponent to make it scrollable when more elements are added to the page.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
iOS: mWeb Safari
MacOS: Chrome / Safari
Empty state - You'll see it locally until the backend is ready. Should not happen normally (there's always at least one admin - you)

Screen.Recording.2025-12-12.at.12.03.37.mov