diff --git a/.changeset/legal-ties-pull.md b/.changeset/legal-ties-pull.md new file mode 100644 index 00000000000..2703cc89959 --- /dev/null +++ b/.changeset/legal-ties-pull.md @@ -0,0 +1,8 @@ +--- +'@clerk/localizations': minor +'@clerk/clerk-js': minor +'@clerk/shared': minor +'@clerk/ui': minor +--- + +Disable role selection in `OrganizationProfile` during role set migration diff --git a/packages/clerk-js/src/core/resources/Organization.ts b/packages/clerk-js/src/core/resources/Organization.ts index ac2568191bf..00f6e2632ca 100644 --- a/packages/clerk-js/src/core/resources/Organization.ts +++ b/packages/clerk-js/src/core/resources/Organization.ts @@ -95,11 +95,16 @@ export class Organization extends BaseResource implements OrganizationResource { forceUpdateClient: true, }, ).then(res => { - const { data: roles, total_count } = res?.response as unknown as ClerkPaginatedResponse; + const { + data: roles, + total_count, + has_role_set_migration, + } = res?.response as unknown as ClerkPaginatedResponse & { has_role_set_migration?: boolean }; return { - total_count, data: roles.map(role => new Role(role)), + total_count, + has_role_set_migration, }; }); }; diff --git a/packages/localizations/src/ar-SA.ts b/packages/localizations/src/ar-SA.ts index 5824ea6180b..5ef0dca7ace 100644 --- a/packages/localizations/src/ar-SA.ts +++ b/packages/localizations/src/ar-SA.ts @@ -395,6 +395,12 @@ export const arSA: LocalizationResource = { headerTitle__members: 'الأعضاء', headerTitle__requests: 'الطلبات', }, + alerts: { + roleSetMigrationInProgress: { + title: 'الأدوار مقفلة مؤقتًا', + subtitle: 'نحن نقوم بتحديث الأدوار المتاحة. بمجرد الانتهاء، ستتمكن من تحديث الأدوار مرة أخرى.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/be-BY.ts b/packages/localizations/src/be-BY.ts index 7f7c24dcff0..db807e6c9ca 100644 --- a/packages/localizations/src/be-BY.ts +++ b/packages/localizations/src/be-BY.ts @@ -396,6 +396,12 @@ export const beBY: LocalizationResource = { headerTitle__members: 'Удзельнікі', headerTitle__requests: 'Заявкі', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Ролі часова заблакіраваны', + subtitle: 'Мы абнаўляем даступныя ролі. Калі гэта будзе зроблена, вы зможаце абнавіць ролі зноў.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/bg-BG.ts b/packages/localizations/src/bg-BG.ts index 77ae31d78b9..a37e2afbc43 100644 --- a/packages/localizations/src/bg-BG.ts +++ b/packages/localizations/src/bg-BG.ts @@ -396,6 +396,12 @@ export const bgBG: LocalizationResource = { headerTitle__members: 'Членове', headerTitle__requests: 'Заявки', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Ролите са временно заключени', + subtitle: 'Актуализираме наличните роли. Когато това приключи, ще можете отново да актуализирате ролите.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/bn-IN.ts b/packages/localizations/src/bn-IN.ts index 0a453f73e2c..449c91976c7 100644 --- a/packages/localizations/src/bn-IN.ts +++ b/packages/localizations/src/bn-IN.ts @@ -397,6 +397,12 @@ export const bnIN: LocalizationResource = { headerTitle__members: 'সদস্য', headerTitle__requests: 'অনুরোধ', }, + alerts: { + roleSetMigrationInProgress: { + title: 'ভূমিকাগুলি সাময়িকভাবে লক করা আছে', + subtitle: 'আমরা উপলব্ধ ভূমিকাগুলি আপডেট করছি। এটি সম্পন্ন হলে, আপনি আবার ভূমিকা আপডেট করতে পারবেন।', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/ca-ES.ts b/packages/localizations/src/ca-ES.ts index c68ada943f3..47f6543ca52 100644 --- a/packages/localizations/src/ca-ES.ts +++ b/packages/localizations/src/ca-ES.ts @@ -396,6 +396,12 @@ export const caES: LocalizationResource = { headerTitle__members: 'Membres', headerTitle__requests: 'Sol·licituds', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Els rols estan temporalment bloquejats', + subtitle: 'Estem actualitzant els rols disponibles. Un cop fet, podreu tornar a actualitzar els rols.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/cs-CZ.ts b/packages/localizations/src/cs-CZ.ts index cc25777441c..1b0911584af 100644 --- a/packages/localizations/src/cs-CZ.ts +++ b/packages/localizations/src/cs-CZ.ts @@ -401,6 +401,12 @@ export const csCZ: LocalizationResource = { headerTitle__members: 'Členové', headerTitle__requests: 'Žádosti', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Role jsou dočasně uzamčeny', + subtitle: 'Aktualizujeme dostupné role. Jakmile to bude hotové, budete moci role opět aktualizovat.', + }, + }, }, navbar: { apiKeys: 'API klíče', diff --git a/packages/localizations/src/da-DK.ts b/packages/localizations/src/da-DK.ts index ddbf1ce2b67..a2ce7560c86 100644 --- a/packages/localizations/src/da-DK.ts +++ b/packages/localizations/src/da-DK.ts @@ -395,6 +395,12 @@ export const daDK: LocalizationResource = { headerTitle__members: 'Medlemmer', headerTitle__requests: 'Anmodninger', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Roller er midlertidigt låst', + subtitle: 'Vi opdaterer de tilgængelige roller. Når det er gjort, vil du kunne opdatere roller igen.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/de-DE.ts b/packages/localizations/src/de-DE.ts index f1c16e0255e..a9171043519 100644 --- a/packages/localizations/src/de-DE.ts +++ b/packages/localizations/src/de-DE.ts @@ -405,6 +405,13 @@ export const deDE: LocalizationResource = { headerTitle__members: 'Mitglieder', headerTitle__requests: 'Anfragen', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Rollen sind vorübergehend gesperrt', + subtitle: + 'Wir aktualisieren die verfügbaren Rollen. Sobald dies abgeschlossen ist, können Sie die Rollen wieder aktualisieren.', + }, + }, }, navbar: { apiKeys: 'API-Keys', diff --git a/packages/localizations/src/el-GR.ts b/packages/localizations/src/el-GR.ts index 5a2a068d034..b8d22416bad 100644 --- a/packages/localizations/src/el-GR.ts +++ b/packages/localizations/src/el-GR.ts @@ -396,6 +396,13 @@ export const elGR: LocalizationResource = { headerTitle__members: 'Members', headerTitle__requests: 'Requests', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Οι ρόλοι είναι προσωρινά κλειδωμένοι', + subtitle: + 'Ενημερώνουμε τους διαθέσιμους ρόλους. Μόλις ολοκληρωθεί, θα μπορείτε να ενημερώσετε ξανά τους ρόλους.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/en-GB.ts b/packages/localizations/src/en-GB.ts index e38f24c6f11..a3e3870b1d2 100644 --- a/packages/localizations/src/en-GB.ts +++ b/packages/localizations/src/en-GB.ts @@ -396,6 +396,12 @@ export const enGB: LocalizationResource = { headerTitle__members: 'Members', headerTitle__requests: 'Requests', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Roles are temporarily locked', + subtitle: "We are updating the available roles. Once that's done, you'll be able to update roles again.", + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/en-US.ts b/packages/localizations/src/en-US.ts index 5edd6618118..c8f3f8fbf38 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -392,6 +392,12 @@ export const enUS: LocalizationResource = { headerTitle__members: 'Members', headerTitle__requests: 'Requests', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Roles are temporarily locked', + subtitle: 'We are updating the available roles. Once that’s done, you’ll be able to update roles again.', + }, + }, }, navbar: { apiKeys: 'API keys', diff --git a/packages/localizations/src/es-CR.ts b/packages/localizations/src/es-CR.ts index 143e2f63360..dd46a3d9c0e 100644 --- a/packages/localizations/src/es-CR.ts +++ b/packages/localizations/src/es-CR.ts @@ -397,6 +397,13 @@ export const esCR: LocalizationResource = { headerTitle__members: 'Miembros', headerTitle__requests: 'Solicitudes', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Los roles están temporalmente bloqueados', + subtitle: + 'Estamos actualizando los roles disponibles. Una vez hecho esto, podrás actualizar los roles de nuevo.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/es-ES.ts b/packages/localizations/src/es-ES.ts index b028f2a14f3..75bdc8044ae 100644 --- a/packages/localizations/src/es-ES.ts +++ b/packages/localizations/src/es-ES.ts @@ -396,6 +396,13 @@ export const esES: LocalizationResource = { headerTitle__members: 'Miembros', headerTitle__requests: 'Solicitudes', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Los roles están temporalmente bloqueados', + subtitle: + 'Estamos actualizando los roles disponibles. Una vez hecho esto, podrás actualizar los roles de nuevo.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/es-MX.ts b/packages/localizations/src/es-MX.ts index a66fb4cb1b2..61f2bb38aae 100644 --- a/packages/localizations/src/es-MX.ts +++ b/packages/localizations/src/es-MX.ts @@ -398,6 +398,13 @@ export const esMX: LocalizationResource = { headerTitle__members: 'Miembros', headerTitle__requests: 'Solicitudes', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Los roles están temporalmente bloqueados', + subtitle: + 'Estamos actualizando los roles disponibles. Una vez hecho esto, podrás actualizar los roles de nuevo.', + }, + }, }, navbar: { apiKeys: 'Claves API', diff --git a/packages/localizations/src/es-UY.ts b/packages/localizations/src/es-UY.ts index 66e330a0e22..c1ecc3d48c1 100644 --- a/packages/localizations/src/es-UY.ts +++ b/packages/localizations/src/es-UY.ts @@ -397,6 +397,13 @@ export const esUY: LocalizationResource = { headerTitle__members: 'Miembros', headerTitle__requests: 'Solicitudes', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Los roles están temporalmente bloqueados', + subtitle: + 'Estamos actualizando los roles disponibles. Una vez hecho esto, podrás actualizar los roles de nuevo.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/fa-IR.ts b/packages/localizations/src/fa-IR.ts index 5049dbb06dd..46ea2209320 100644 --- a/packages/localizations/src/fa-IR.ts +++ b/packages/localizations/src/fa-IR.ts @@ -402,6 +402,13 @@ export const faIR: LocalizationResource = { headerTitle__members: 'اعضا', headerTitle__requests: 'درخواست‌ها', }, + alerts: { + roleSetMigrationInProgress: { + title: 'نقش‌ها موقتاً قفل شده‌اند', + subtitle: + 'ما در حال به‌روزرسانی نقش‌های موجود هستیم. پس از اتمام، می‌توانید دوباره نقش‌ها را به‌روزرسانی کنید.', + }, + }, }, navbar: { apiKeys: 'کلیدهای API', diff --git a/packages/localizations/src/fi-FI.ts b/packages/localizations/src/fi-FI.ts index 5ef6e45fa8a..df60659a053 100644 --- a/packages/localizations/src/fi-FI.ts +++ b/packages/localizations/src/fi-FI.ts @@ -396,6 +396,12 @@ export const fiFI: LocalizationResource = { headerTitle__members: 'Jäsenet', headerTitle__requests: 'Pyyntöjä', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Roolit on tilapäisesti lukittu', + subtitle: 'Päivitämme käytettävissä olevia rooleja. Kun se on tehty, voit päivittää rooleja uudelleen.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/fr-FR.ts b/packages/localizations/src/fr-FR.ts index 0463a5b3f7b..e2b888cb0bb 100644 --- a/packages/localizations/src/fr-FR.ts +++ b/packages/localizations/src/fr-FR.ts @@ -406,6 +406,13 @@ export const frFR: LocalizationResource = { headerTitle__members: 'Membres', headerTitle__requests: 'Demandes', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Les rôles sont temporairement verrouillés', + subtitle: + 'Nous mettons à jour les rôles disponibles. Une fois terminé, vous pourrez de nouveau modifier les rôles.', + }, + }, }, navbar: { apiKeys: 'Clés API', diff --git a/packages/localizations/src/he-IL.ts b/packages/localizations/src/he-IL.ts index 58d1cf6aef1..1ad65af743c 100644 --- a/packages/localizations/src/he-IL.ts +++ b/packages/localizations/src/he-IL.ts @@ -393,6 +393,12 @@ export const heIL: LocalizationResource = { headerTitle__members: 'חברים', headerTitle__requests: 'בקשות', }, + alerts: { + roleSetMigrationInProgress: { + title: 'התפקידים נעולים זמנית', + subtitle: 'אנחנו מעדכנים את התפקידים הזמינים. לאחר שזה יסתיים, תוכל לעדכן תפקידים שוב.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/hi-IN.ts b/packages/localizations/src/hi-IN.ts index a322013ad42..42f86ce5bbc 100644 --- a/packages/localizations/src/hi-IN.ts +++ b/packages/localizations/src/hi-IN.ts @@ -397,6 +397,13 @@ export const hiIN: LocalizationResource = { headerTitle__members: 'सदस्य', headerTitle__requests: 'अनुरोध', }, + alerts: { + roleSetMigrationInProgress: { + title: 'भूमिकाएं अस्थायी रूप से लॉक हैं', + subtitle: + 'हम उपलब्ध भूमिकाओं को अपडेट कर रहे हैं। एक बार यह हो जाने के बाद, आप फिर से भूमिकाएं अपडेट कर सकेंगे।', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/hr-HR.ts b/packages/localizations/src/hr-HR.ts index 00d60a4aca6..b4dcac74660 100644 --- a/packages/localizations/src/hr-HR.ts +++ b/packages/localizations/src/hr-HR.ts @@ -395,6 +395,12 @@ export const hrHR: LocalizationResource = { headerTitle__members: 'Članovi', headerTitle__requests: 'Zahtjevi', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Uloge su privremeno zaključane', + subtitle: 'Ažuriramo dostupne uloge. Kada to završimo, moći ćete ponovno ažurirati uloge.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/hu-HU.ts b/packages/localizations/src/hu-HU.ts index 8c4af435f97..900bef15398 100644 --- a/packages/localizations/src/hu-HU.ts +++ b/packages/localizations/src/hu-HU.ts @@ -395,6 +395,12 @@ export const huHU: LocalizationResource = { headerTitle__members: 'Tagok', headerTitle__requests: 'Kérések', }, + alerts: { + roleSetMigrationInProgress: { + title: 'A szerepkörök ideiglenesen zárolva vannak', + subtitle: 'Frissítjük az elérhető szerepköröket. Ha ez befejeződött, újra frissítheti a szerepköröket.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/id-ID.ts b/packages/localizations/src/id-ID.ts index f7b501f1ea1..e0a21f77ec6 100644 --- a/packages/localizations/src/id-ID.ts +++ b/packages/localizations/src/id-ID.ts @@ -396,6 +396,13 @@ export const idID: LocalizationResource = { headerTitle__members: 'Anggota', headerTitle__requests: 'Permintaan', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Peran untuk sementara terkunci', + subtitle: + 'Kami sedang memperbarui peran yang tersedia. Setelah selesai, Anda akan dapat memperbarui peran lagi.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/is-IS.ts b/packages/localizations/src/is-IS.ts index e2bfa64b020..993d77fcf9c 100644 --- a/packages/localizations/src/is-IS.ts +++ b/packages/localizations/src/is-IS.ts @@ -396,6 +396,12 @@ export const isIS: LocalizationResource = { headerTitle__members: 'Meðlimir', headerTitle__requests: 'Beiðnir', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Hlutverk eru tímabundið læst', + subtitle: 'Við erum að uppfæra tiltæk hlutverk. Þegar því er lokið geturðu uppfært hlutverk aftur.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/it-IT.ts b/packages/localizations/src/it-IT.ts index 6fae9743e99..2f35ea81fde 100644 --- a/packages/localizations/src/it-IT.ts +++ b/packages/localizations/src/it-IT.ts @@ -403,6 +403,13 @@ export const itIT: LocalizationResource = { headerTitle__members: 'Membri', headerTitle__requests: 'Richieste', }, + alerts: { + roleSetMigrationInProgress: { + title: 'I ruoli sono temporaneamente bloccati', + subtitle: + 'Stiamo aggiornando i ruoli disponibili. Una volta completato, potrai aggiornare nuovamente i ruoli.', + }, + }, }, navbar: { apiKeys: 'Chiavi API', diff --git a/packages/localizations/src/ja-JP.ts b/packages/localizations/src/ja-JP.ts index 691f334dce3..7acea108a8c 100644 --- a/packages/localizations/src/ja-JP.ts +++ b/packages/localizations/src/ja-JP.ts @@ -403,6 +403,12 @@ export const jaJP: LocalizationResource = { headerTitle__members: 'メンバー', headerTitle__requests: 'リクエスト', }, + alerts: { + roleSetMigrationInProgress: { + title: 'ロールは一時的にロックされています', + subtitle: '利用可能なロールを更新しています。完了次第、ロールを再度更新できるようになります。', + }, + }, }, navbar: { apiKeys: 'APIキー', diff --git a/packages/localizations/src/kk-KZ.ts b/packages/localizations/src/kk-KZ.ts index 7a515ba7e3b..c037b5312e6 100644 --- a/packages/localizations/src/kk-KZ.ts +++ b/packages/localizations/src/kk-KZ.ts @@ -392,6 +392,12 @@ export const kkKZ: LocalizationResource = { headerTitle__members: 'Мүшелер', headerTitle__requests: 'Сұраулар', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Рөлдер уақытша құлыпталған', + subtitle: 'Қолжетімді рөлдерді жаңартып жатырмыз. Бұл аяқталғаннан кейін рөлдерді қайта жаңарта аласыз.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/ko-KR.ts b/packages/localizations/src/ko-KR.ts index 08ff6c32528..b69988d5419 100644 --- a/packages/localizations/src/ko-KR.ts +++ b/packages/localizations/src/ko-KR.ts @@ -395,6 +395,12 @@ export const koKR: LocalizationResource = { headerTitle__members: 'Members', headerTitle__requests: 'Requests', }, + alerts: { + roleSetMigrationInProgress: { + title: '역할이 일시적으로 잠겨 있습니다', + subtitle: '사용 가능한 역할을 업데이트하고 있습니다. 완료되면 다시 역할을 업데이트할 수 있습니다.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/mn-MN.ts b/packages/localizations/src/mn-MN.ts index 7f25612b5c2..ee76a44a02f 100644 --- a/packages/localizations/src/mn-MN.ts +++ b/packages/localizations/src/mn-MN.ts @@ -396,6 +396,13 @@ export const mnMN: LocalizationResource = { headerTitle__members: 'Гишүүд', headerTitle__requests: 'Хүсэлтүүд', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Дүрүүд түр хугацаанд түгжигдсэн байна', + subtitle: + 'Бид боломжтой дүрүүдийг шинэчилж байна. Дууссаны дараа та дүрүүдийг дахин шинэчлэх боломжтой болно.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/ms-MY.ts b/packages/localizations/src/ms-MY.ts index da35c1bf94a..4cd0f0a5d05 100644 --- a/packages/localizations/src/ms-MY.ts +++ b/packages/localizations/src/ms-MY.ts @@ -397,6 +397,13 @@ export const msMY: LocalizationResource = { headerTitle__members: 'Ahli', headerTitle__requests: 'Permintaan', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Peranan dikunci buat sementara waktu', + subtitle: + 'Kami sedang mengemas kini peranan yang tersedia. Setelah selesai, anda akan dapat mengemas kini peranan semula.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/nb-NO.ts b/packages/localizations/src/nb-NO.ts index c2de472ff0f..d960ca55b36 100644 --- a/packages/localizations/src/nb-NO.ts +++ b/packages/localizations/src/nb-NO.ts @@ -395,6 +395,12 @@ export const nbNO: LocalizationResource = { headerTitle__members: 'Medlemmer', headerTitle__requests: 'Forespørsler', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Roller er midlertidig låst', + subtitle: 'Vi oppdaterer tilgjengelige roller. Når det er gjort, vil du kunne oppdatere roller igjen.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/nl-BE.ts b/packages/localizations/src/nl-BE.ts index c747fbcaf40..a67bb99b01a 100644 --- a/packages/localizations/src/nl-BE.ts +++ b/packages/localizations/src/nl-BE.ts @@ -395,6 +395,13 @@ export const nlBE: LocalizationResource = { headerTitle__members: 'Leden', headerTitle__requests: 'Verzoeken', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Rollen zijn tijdelijk vergrendeld', + subtitle: + 'We zijn de beschikbare rollen aan het bijwerken. Zodra dit klaar is, kunt u de rollen opnieuw bijwerken.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/nl-NL.ts b/packages/localizations/src/nl-NL.ts index 82ff9067432..eb81e28bb1e 100644 --- a/packages/localizations/src/nl-NL.ts +++ b/packages/localizations/src/nl-NL.ts @@ -395,6 +395,13 @@ export const nlNL: LocalizationResource = { headerTitle__members: 'Leden', headerTitle__requests: 'Verzoeken', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Rollen zijn tijdelijk vergrendeld', + subtitle: + 'We zijn de beschikbare rollen aan het bijwerken. Zodra dit klaar is, kunt u de rollen opnieuw bijwerken.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/pl-PL.ts b/packages/localizations/src/pl-PL.ts index 59cae88edaf..a2eedc7eab7 100644 --- a/packages/localizations/src/pl-PL.ts +++ b/packages/localizations/src/pl-PL.ts @@ -395,6 +395,12 @@ export const plPL: LocalizationResource = { headerTitle__members: 'Członkowie', headerTitle__requests: 'Prośby', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Role są tymczasowo zablokowane', + subtitle: 'Aktualizujemy dostępne role. Po zakończeniu będziesz mógł ponownie aktualizować role.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/pt-BR.ts b/packages/localizations/src/pt-BR.ts index 8ac49d777b7..0b8cf0016a9 100644 --- a/packages/localizations/src/pt-BR.ts +++ b/packages/localizations/src/pt-BR.ts @@ -403,6 +403,13 @@ export const ptBR: LocalizationResource = { headerTitle__members: 'Membros', headerTitle__requests: 'Solicitações', }, + alerts: { + roleSetMigrationInProgress: { + title: 'As funções estão temporariamente bloqueadas', + subtitle: + 'Estamos atualizando as funções disponíveis. Assim que isso for concluído, você poderá atualizar as funções novamente.', + }, + }, }, navbar: { apiKeys: 'Chaves de API', diff --git a/packages/localizations/src/pt-PT.ts b/packages/localizations/src/pt-PT.ts index 115d0e40c8f..e94b4d49c52 100644 --- a/packages/localizations/src/pt-PT.ts +++ b/packages/localizations/src/pt-PT.ts @@ -394,6 +394,13 @@ export const ptPT: LocalizationResource = { headerTitle__members: 'Membros', headerTitle__requests: 'Pedidos', }, + alerts: { + roleSetMigrationInProgress: { + title: 'As funções estão temporariamente bloqueadas', + subtitle: + 'Estamos a atualizar as funções disponíveis. Assim que terminar, poderá atualizar as funções novamente.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/ro-RO.ts b/packages/localizations/src/ro-RO.ts index fa45263952c..a8be3b65034 100644 --- a/packages/localizations/src/ro-RO.ts +++ b/packages/localizations/src/ro-RO.ts @@ -403,6 +403,13 @@ export const roRO: LocalizationResource = { headerTitle__members: 'Membri', headerTitle__requests: 'Ceri de acces', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Rolurile sunt temporar blocate', + subtitle: + 'Actualizăm rolurile disponibile. Odată ce acest lucru este finalizat, veți putea actualiza din nou rolurile.', + }, + }, }, navbar: { apiKeys: 'Chei API', diff --git a/packages/localizations/src/ru-RU.ts b/packages/localizations/src/ru-RU.ts index c606111978d..8ca93837193 100644 --- a/packages/localizations/src/ru-RU.ts +++ b/packages/localizations/src/ru-RU.ts @@ -399,6 +399,12 @@ export const ruRU: LocalizationResource = { headerTitle__members: 'Участники', headerTitle__requests: 'Заявки', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Роли временно заблокированы', + subtitle: 'Мы обновляем доступные роли. Как только это будет сделано, вы сможете снова обновлять роли.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/sk-SK.ts b/packages/localizations/src/sk-SK.ts index e515929f4a7..35c92cf2611 100644 --- a/packages/localizations/src/sk-SK.ts +++ b/packages/localizations/src/sk-SK.ts @@ -395,6 +395,12 @@ export const skSK: LocalizationResource = { headerTitle__members: 'Členovia', headerTitle__requests: 'Požiadavky', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Úlohy sú dočasne uzamknuté', + subtitle: 'Aktualizujeme dostupné úlohy. Po dokončení budete môcť úlohy opäť aktualizovať.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/sr-RS.ts b/packages/localizations/src/sr-RS.ts index 23496cbaa76..b49e5e6f369 100644 --- a/packages/localizations/src/sr-RS.ts +++ b/packages/localizations/src/sr-RS.ts @@ -395,6 +395,12 @@ export const srRS: LocalizationResource = { headerTitle__members: 'Članovi', headerTitle__requests: 'Zahtevi', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Uloge su privremeno zaključane', + subtitle: 'Ažuriramo dostupne uloge. Kada to bude završeno, moći ćete ponovo da ažurirate uloge.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/sv-SE.ts b/packages/localizations/src/sv-SE.ts index 92350eb55c9..3accb401bdb 100644 --- a/packages/localizations/src/sv-SE.ts +++ b/packages/localizations/src/sv-SE.ts @@ -395,6 +395,12 @@ export const svSE: LocalizationResource = { headerTitle__members: 'Medlemmar', headerTitle__requests: 'Förfrågningar', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Roller är tillfälligt låsta', + subtitle: 'Vi uppdaterar tillgängliga roller. När det är klart kommer du att kunna uppdatera roller igen.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/ta-IN.ts b/packages/localizations/src/ta-IN.ts index 4c68f3cc210..1d5643628d5 100644 --- a/packages/localizations/src/ta-IN.ts +++ b/packages/localizations/src/ta-IN.ts @@ -398,6 +398,13 @@ export const taIN: LocalizationResource = { headerTitle__members: 'உறுப்பினர்கள்', headerTitle__requests: 'கோரிக்கைகள்', }, + alerts: { + roleSetMigrationInProgress: { + title: 'பாத்திரங்கள் தற்காலிகமாக பூட்டப்பட்டுள்ளன', + subtitle: + 'கிடைக்கக்கூடிய பாத்திரங்களை நாங்கள் புதுப்பிக்கிறோம். இது முடிந்ததும், நீங்கள் மீண்டும் பாத்திரங்களை புதுப்பிக்க முடியும்.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/te-IN.ts b/packages/localizations/src/te-IN.ts index 8b44265f01d..2ced49166d5 100644 --- a/packages/localizations/src/te-IN.ts +++ b/packages/localizations/src/te-IN.ts @@ -397,6 +397,13 @@ export const teIN: LocalizationResource = { headerTitle__members: 'సభ్యులు', headerTitle__requests: 'అభ్యర్థనలు', }, + alerts: { + roleSetMigrationInProgress: { + title: 'పాత్రలు తాత్కాలికంగా లాక్ చేయబడ్డాయి', + subtitle: + 'మేము అందుబాటులో ఉన్న పాత్రలను అప్‌డేట్ చేస్తున్నాము. అది పూర్తయిన తర్వాత, మీరు మళ్ళీ పాత్రలను అప్‌డేట్ చేయగలరు.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/th-TH.ts b/packages/localizations/src/th-TH.ts index 0b17165d6e0..e82c123c25d 100644 --- a/packages/localizations/src/th-TH.ts +++ b/packages/localizations/src/th-TH.ts @@ -399,6 +399,12 @@ export const thTH: LocalizationResource = { headerTitle__members: 'สมาชิก', headerTitle__requests: 'คำขอ', }, + alerts: { + roleSetMigrationInProgress: { + title: 'บทบาทถูกล็อคชั่วคราว', + subtitle: 'เรากำลังอัปเดตบทบาทที่มีอยู่ เมื่อเสร็จแล้ว คุณจะสามารถอัปเดตบทบาทได้อีกครั้ง', + }, + }, }, navbar: { apiKeys: 'คีย์ API', diff --git a/packages/localizations/src/tr-TR.ts b/packages/localizations/src/tr-TR.ts index 0ea0b65059e..916c98db75c 100644 --- a/packages/localizations/src/tr-TR.ts +++ b/packages/localizations/src/tr-TR.ts @@ -395,6 +395,12 @@ export const trTR: LocalizationResource = { headerTitle__members: 'Üyeler', headerTitle__requests: 'İstekler', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Roller geçici olarak kilitlendi', + subtitle: 'Mevcut rolleri güncelliyoruz. Bu tamamlandığında rolleri tekrar güncelleyebileceksiniz.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/uk-UA.ts b/packages/localizations/src/uk-UA.ts index a19f074432c..01936eaec4e 100644 --- a/packages/localizations/src/uk-UA.ts +++ b/packages/localizations/src/uk-UA.ts @@ -395,6 +395,12 @@ export const ukUA: LocalizationResource = { headerTitle__members: 'Members', headerTitle__requests: 'Requests', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Ролі тимчасово заблоковані', + subtitle: 'Ми оновлюємо доступні ролі. Коли це буде зроблено, ви зможете знову оновлювати ролі.', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/vi-VN.ts b/packages/localizations/src/vi-VN.ts index d491e4ee6e2..7a781f9b4ba 100644 --- a/packages/localizations/src/vi-VN.ts +++ b/packages/localizations/src/vi-VN.ts @@ -401,6 +401,12 @@ export const viVN: LocalizationResource = { headerTitle__members: 'Thành viên', headerTitle__requests: 'Yêu cầu', }, + alerts: { + roleSetMigrationInProgress: { + title: 'Các vai trò tạm thời bị khóa', + subtitle: 'Chúng tôi đang cập nhật các vai trò có sẵn. Sau khi hoàn tất, bạn sẽ có thể cập nhật vai trò lại.', + }, + }, }, navbar: { apiKeys: 'Khoá API', diff --git a/packages/localizations/src/zh-CN.ts b/packages/localizations/src/zh-CN.ts index 19607ae09e8..43009e47ae7 100644 --- a/packages/localizations/src/zh-CN.ts +++ b/packages/localizations/src/zh-CN.ts @@ -391,6 +391,12 @@ export const zhCN: LocalizationResource = { headerTitle__members: '成员', headerTitle__requests: '请求', }, + alerts: { + roleSetMigrationInProgress: { + title: '角色暂时被锁定', + subtitle: '我们正在更新可用角色。完成后,您将能够再次更新角色。', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/localizations/src/zh-TW.ts b/packages/localizations/src/zh-TW.ts index dcc066f750b..b1fdbf6c2b8 100644 --- a/packages/localizations/src/zh-TW.ts +++ b/packages/localizations/src/zh-TW.ts @@ -391,6 +391,12 @@ export const zhTW: LocalizationResource = { headerTitle__members: '成員', headerTitle__requests: '請求', }, + alerts: { + roleSetMigrationInProgress: { + title: '角色暫時被鎖定', + subtitle: '我們正在更新可用角色。完成後,您將能夠再次更新角色。', + }, + }, }, navbar: { apiKeys: undefined, diff --git a/packages/shared/src/types/localization.ts b/packages/shared/src/types/localization.ts index a8f3f980653..9e789d9c8fa 100644 --- a/packages/shared/src/types/localization.ts +++ b/packages/shared/src/types/localization.ts @@ -1128,6 +1128,12 @@ export type __internal_LocalizationResource = { primaryButton: LocalizationValue; }; }; + alerts: { + roleSetMigrationInProgress: { + title: LocalizationValue; + subtitle: LocalizationValue; + }; + }; }; billingPage: { title: LocalizationValue; diff --git a/packages/shared/src/types/organization.ts b/packages/shared/src/types/organization.ts index 28114128076..98ced75e217 100644 --- a/packages/shared/src/types/organization.ts +++ b/packages/shared/src/types/organization.ts @@ -51,7 +51,7 @@ export interface OrganizationResource extends ClerkResource, BillingPayerMethods update: (params: UpdateOrganizationParams) => Promise; getMemberships: GetMemberships; getInvitations: (params?: GetInvitationsParams) => Promise>; - getRoles: (params?: GetRolesParams) => Promise>; + getRoles: (params?: GetRolesParams) => Promise; getDomains: (params?: GetDomainsParams) => Promise>; getMembershipRequests: ( params?: GetMembershipRequestParams, @@ -70,6 +70,10 @@ export interface OrganizationResource extends ClerkResource, BillingPayerMethods export type GetRolesParams = ClerkPaginationParams; +export interface GetRolesResponse extends ClerkPaginatedResponse { + has_role_set_migration?: boolean; +} + export type GetMembersParams = ClerkPaginationParams<{ role?: OrganizationCustomRoleKey[]; query?: string; diff --git a/packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx b/packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx index f4badb83534..acb28b9cfaa 100644 --- a/packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx +++ b/packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx @@ -20,7 +20,7 @@ export const ActiveMembersList = ({ memberships, pageSize }: ActiveMembersListPr const card = useCardState(); const { organization } = useOrganization(); - const { options, isLoading: loadingRoles } = useFetchRoles(); + const { options, isLoading: loadingRoles, hasRoleSetMigration } = useFetchRoles(); if (!organization) { return null; @@ -61,6 +61,7 @@ export const ActiveMembersList = ({ memberships, pageSize }: ActiveMembersListPr options={options} onRoleChange={handleRoleChange(m)} onRemove={handleRemove(m)} + hasRoleSetMigration={hasRoleSetMigration} /> ))} /> @@ -73,8 +74,9 @@ const MemberRow = (props: { onRemove: () => unknown; options: Parameters[0]['roles']; onRoleChange: (role: string) => unknown; + hasRoleSetMigration: boolean; }) => { - const { membership, onRemove, onRoleChange, options } = props; + const { membership, onRemove, onRoleChange, options, hasRoleSetMigration } = props; const { localizeCustomRole } = useLocalizeCustomRoles(); const card = useCardState(); const { user } = useUser(); @@ -112,7 +114,7 @@ const MemberRow = (props: { } > { }; const AsyncRoleSelect = (field: ReturnType>) => { - const { options, isLoading } = useFetchRoles(); + const { options, isLoading, hasRoleSetMigration } = useFetchRoles(); const { t } = useLocalizations(); @@ -212,7 +212,7 @@ const AsyncRoleSelect = (field: ReturnType>) => { field.setValue(value)} triggerSx={t => ({ minWidth: t.sizes.$40, justifyContent: 'space-between', display: 'flex' })} optionListSx={t => ({ minWidth: t.sizes.$48 })} diff --git a/packages/ui/src/components/OrganizationProfile/OrganizationMembers.tsx b/packages/ui/src/components/OrganizationProfile/OrganizationMembers.tsx index 2ce5d4ab645..2b05de8fad8 100644 --- a/packages/ui/src/components/OrganizationProfile/OrganizationMembers.tsx +++ b/packages/ui/src/components/OrganizationProfile/OrganizationMembers.tsx @@ -1,6 +1,8 @@ import { useOrganization } from '@clerk/shared/react'; import { useState } from 'react'; +import { useFetchRoles } from '@/hooks/useFetchRoles'; +import { Alert } from '@/ui/elements/Alert'; import { Animated } from '@/ui/elements/Animated'; import { Card } from '@/ui/elements/Card'; import { useCardState, withCardStateProvider } from '@/ui/elements/contexts'; @@ -23,6 +25,7 @@ export const ACTIVE_MEMBERS_PAGE_SIZE = 10; export const OrganizationMembers = withCardStateProvider(() => { const { organizationSettings } = useEnvironment(); const card = useCardState(); + const { hasRoleSetMigration } = useFetchRoles(); const canManageMemberships = useProtect({ permission: 'org:sys_memberships:manage' }); const canReadMemberships = useProtect({ permission: 'org:sys_memberships:read' }); const isDomainsEnabled = organizationSettings?.domains?.enabled && canManageMemberships; @@ -137,6 +140,17 @@ export const OrganizationMembers = withCardStateProvider(() => { /> } /> + {hasRoleSetMigration && ( + + )} { clearFetchCache(); }); + it('disables the role select when role set migration is in progress', async () => { + const { wrapper, fixtures } = await createFixtures(f => { + f.withOrganizations(); + f.withUser({ + email_addresses: ['test@clerk.com'], + organization_memberships: [{ name: 'Org1', role: 'admin' }], + }); + }); + + fixtures.clerk.organization?.getInvitations.mockRejectedValue(null); + fixtures.clerk.organization?.getRoles.mockResolvedValue({ + total_count: 2, + has_role_set_migration: true, + data: [ + { + pathRoot: '', + reload: vi.fn(), + id: 'member', + key: 'member', + name: 'member', + description: '', + permissions: [], + createdAt: new Date(), + updatedAt: new Date(), + }, + { + pathRoot: '', + reload: vi.fn(), + id: 'admin', + key: 'admin', + name: 'Admin', + description: '', + permissions: [], + createdAt: new Date(), + updatedAt: new Date(), + }, + ], + }); + + const { getByRole } = render( + + + , + { wrapper }, + ); + + await waitFor(() => { + expect(getByRole('button', { name: /select role/i })).toBeDisabled(); + }); + }); + it('renders the component', async () => { const { wrapper, fixtures } = await createFixtures(f => { f.withOrganizations(); diff --git a/packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx b/packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx index 1f9596b427e..7a65ad0da98 100644 --- a/packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx +++ b/packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx @@ -561,6 +561,217 @@ describe('OrganizationMembers', () => { await waitFor(() => expect(getByRole('button', { name: 'Managed Admin' })).toBeDisabled()); }); + it('disables the role select when role set migration is in progress', async () => { + const membersList: OrganizationMembershipResource[] = [ + createFakeMember({ + id: '1', + orgId: '1', + role: 'admin', + identifier: 'test_user1', + firstName: 'First1', + lastName: 'Last1', + createdAt: new Date('2022-01-01'), + }), + createFakeMember({ + id: '2', + orgId: '1', + role: 'member', + identifier: 'test_user2', + firstName: 'First2', + lastName: 'Last2', + createdAt: new Date('2022-01-01'), + }), + ]; + const { wrapper, fixtures } = await createFixtures(f => { + f.withOrganizations(); + f.withUser({ + email_addresses: ['test@clerk.com'], + organization_memberships: [{ name: 'Org1', id: '1' }], + }); + }); + + fixtures.clerk.organization?.getInvitations.mockRejectedValue(null); + + fixtures.clerk.organization?.getMemberships.mockReturnValue( + Promise.resolve({ + data: membersList, + total_count: 2, + }), + ); + + fixtures.clerk.organization?.getRoles.mockResolvedValue({ + total_count: 2, + has_role_set_migration: true, + data: [ + { + pathRoot: '', + reload: vi.fn(), + id: 'member', + key: 'member', + name: 'Member', + description: '', + permissions: [], + createdAt: new Date(), + updatedAt: new Date(), + }, + { + pathRoot: '', + reload: vi.fn(), + id: 'admin', + key: 'admin', + name: 'Admin', + description: '', + permissions: [], + createdAt: new Date(), + updatedAt: new Date(), + }, + ], + }); + + const { container, queryAllByRole } = render(, { wrapper }); + + await waitForLoadingCompleted(container); + + const adminButtons = queryAllByRole('button', { name: 'Admin' }); + const memberButtons = queryAllByRole('button', { name: 'Member' }); + + adminButtons.forEach(button => expect(button).toBeDisabled()); + memberButtons.forEach(button => expect(button).toBeDisabled()); + }); + + it('displays a warning alert when role set migration is in progress', async () => { + const membersList: OrganizationMembershipResource[] = [ + createFakeMember({ + id: '1', + orgId: '1', + role: 'admin', + identifier: 'test_user1', + firstName: 'First1', + lastName: 'Last1', + createdAt: new Date('2022-01-01'), + }), + ]; + const { wrapper, fixtures } = await createFixtures(f => { + f.withOrganizations(); + f.withUser({ + email_addresses: ['test@clerk.com'], + organization_memberships: [{ name: 'Org1', id: '1' }], + }); + }); + + fixtures.clerk.organization?.getInvitations.mockRejectedValue(null); + + fixtures.clerk.organization?.getMemberships.mockReturnValue( + Promise.resolve({ + data: membersList, + total_count: 1, + }), + ); + + fixtures.clerk.organization?.getRoles.mockResolvedValue({ + total_count: 2, + has_role_set_migration: true, + data: [ + { + pathRoot: '', + reload: vi.fn(), + id: 'member', + key: 'member', + name: 'Member', + description: '', + permissions: [], + createdAt: new Date(), + updatedAt: new Date(), + }, + { + pathRoot: '', + reload: vi.fn(), + id: 'admin', + key: 'admin', + name: 'Admin', + description: '', + permissions: [], + createdAt: new Date(), + updatedAt: new Date(), + }, + ], + }); + + const { container, getByText } = render(, { wrapper }); + + await waitForLoadingCompleted(container); + + expect(getByText('Roles are temporarily locked')).toBeInTheDocument(); + expect( + getByText("We are updating the available roles. Once that's done, you'll be able to update roles again."), + ).toBeInTheDocument(); + }); + + it('does not display a warning alert when role set migration is not in progress', async () => { + const membersList: OrganizationMembershipResource[] = [ + createFakeMember({ + id: '1', + orgId: '1', + role: 'admin', + identifier: 'test_user1', + firstName: 'First1', + lastName: 'Last1', + createdAt: new Date('2022-01-01'), + }), + ]; + const { wrapper, fixtures } = await createFixtures(f => { + f.withOrganizations(); + f.withUser({ + email_addresses: ['test@clerk.com'], + organization_memberships: [{ name: 'Org1', id: '1' }], + }); + }); + + fixtures.clerk.organization?.getInvitations.mockRejectedValue(null); + + fixtures.clerk.organization?.getMemberships.mockReturnValue( + Promise.resolve({ + data: membersList, + total_count: 1, + }), + ); + + fixtures.clerk.organization?.getRoles.mockResolvedValue({ + total_count: 2, + has_role_set_migration: false, + data: [ + { + pathRoot: '', + reload: vi.fn(), + id: 'member', + key: 'member', + name: 'Member', + description: '', + permissions: [], + createdAt: new Date(), + updatedAt: new Date(), + }, + { + pathRoot: '', + reload: vi.fn(), + id: 'admin', + key: 'admin', + name: 'Admin', + description: '', + permissions: [], + createdAt: new Date(), + updatedAt: new Date(), + }, + ], + }); + + const { container, queryByText } = render(, { wrapper }); + + await waitForLoadingCompleted(container); + + expect(queryByText('Roles are temporarily locked')).not.toBeInTheDocument(); + }); + describe('InviteMembersScreen', () => { it('shows the invite screen when user clicks on Invite button', async () => { const { wrapper, fixtures } = await createFixtures(f => { diff --git a/packages/ui/src/elements/Alert.tsx b/packages/ui/src/elements/Alert.tsx index b4f8470b116..ce0f13ee5a6 100644 --- a/packages/ui/src/elements/Alert.tsx +++ b/packages/ui/src/elements/Alert.tsx @@ -17,6 +17,8 @@ export const Alert = (props: AlertProps): JSX.Element | null => { return null; } + const textColorScheme = variant === 'danger' ? 'danger' : variant === 'warning' ? 'warning' : 'secondary'; + return ( { elementDescriptor={descriptors.alertTextContainer} elementId={descriptors.alertTextContainer.setId(variant)} gap={1} + sx={{ textAlign: 'left' }} > {children} @@ -52,7 +54,7 @@ export const Alert = (props: AlertProps): JSX.Element | null => { diff --git a/packages/ui/src/hooks/useFetchRoles.ts b/packages/ui/src/hooks/useFetchRoles.ts index 4e50dfd4dc8..73aaead6de8 100644 --- a/packages/ui/src/hooks/useFetchRoles.ts +++ b/packages/ui/src/hooks/useFetchRoles.ts @@ -30,6 +30,7 @@ export const useFetchRoles = (enabled = true) => { return { isLoading, + hasRoleSetMigration: !!data?.has_role_set_migration, options: data?.data?.map(role => ({ value: role.key, label: role.name })), }; };