diff --git a/.changeset/app-1003-iterate-graph-view.md b/.changeset/app-1003-iterate-graph-view.md new file mode 100644 index 0000000000..dff95f51b4 --- /dev/null +++ b/.changeset/app-1003-iterate-graph-view.md @@ -0,0 +1,5 @@ +--- +"@aragon/app": minor +--- + +Add the DAO settings permissions page with list and graph views of the DAO's on-chain permissions, filterable by the hide-DAO-grants and hide-governing-body toggles. diff --git a/.gitignore b/.gitignore index f8440ba3e4..64ddaec2fe 100644 --- a/.gitignore +++ b/.gitignore @@ -62,6 +62,7 @@ next-env.d.ts .vscode .zed .tempor +.omp/ .agents/** !.agents/shared/ !.agents/shared/** diff --git a/apps/app/src/modules/settings/components/daoHierarchy/daoHierarchy.tsx b/apps/app/src/modules/settings/components/daoHierarchy/daoHierarchy.tsx index 35015ddd27..7894ce3625 100644 --- a/apps/app/src/modules/settings/components/daoHierarchy/daoHierarchy.tsx +++ b/apps/app/src/modules/settings/components/daoHierarchy/daoHierarchy.tsx @@ -12,7 +12,6 @@ import { } from '@aragon/gov-ui-kit'; import type { IDao, ILinkedAccountSummary } from '@/shared/api/daoService'; import { DaoTypeTag } from '@/shared/components/daoTypeTag'; -import { useFeatureFlags } from '@/shared/components/featureFlagsProvider'; import { ResourceLink } from '@/shared/components/resourceLink'; import { useTranslations } from '@/shared/components/translationsProvider'; import { networkDefinitions } from '@/shared/constants/networkDefinitions'; @@ -157,8 +156,6 @@ const DaoInfo: React.FC = ({ dao, permissionsHref }) => { export const DaoHierarchy: React.FC = (props) => { const { dao, currentDaoId } = props; - const { isEnabled } = useFeatureFlags(); - const isViewingMainDao = dao.id === currentDaoId; const hasLinkedAccounts = dao.linkedAccounts != null && dao.linkedAccounts.length > 0; @@ -166,9 +163,7 @@ export const DaoHierarchy: React.FC = (props) => { const getDaoAvatar = (d: IDao | ILinkedAccountSummary) => ipfsUtils.cidToSrc(d.avatar); - const permissionsHref = isEnabled('permissionsPage') - ? daoUtils.getDaoUrl(dao, 'settings/permissions') - : undefined; + const permissionsHref = daoUtils.getDaoUrl(dao, 'settings/permissions'); // If viewing main DAO with linked accounts, show accordion structure if (isViewingMainDao && hasLinkedAccounts) { diff --git a/apps/app/src/modules/settings/components/daoSettingsInfo/daoSettingsInfo.test.tsx b/apps/app/src/modules/settings/components/daoSettingsInfo/daoSettingsInfo.test.tsx index 66ad0579e2..603e1197ba 100644 --- a/apps/app/src/modules/settings/components/daoSettingsInfo/daoSettingsInfo.test.tsx +++ b/apps/app/src/modules/settings/components/daoSettingsInfo/daoSettingsInfo.test.tsx @@ -2,7 +2,6 @@ import type * as GovUiKit from '@aragon/gov-ui-kit'; import { GukModulesProvider } from '@aragon/gov-ui-kit'; import { render, screen } from '@testing-library/react'; import { Network } from '@/shared/api/daoService'; -import * as featureFlagsProvider from '@/shared/components/featureFlagsProvider'; import { generateDao } from '@/shared/testUtils'; import { ipfsUtils } from '@/shared/utils/ipfsUtils'; import { DaoSettingsInfo, type IDaoSettingsInfoProps } from './daoSettingsInfo'; @@ -15,25 +14,6 @@ jest.mock('@aragon/gov-ui-kit', () => ({ })); describe(' component', () => { - const useFeatureFlagsSpy = jest.spyOn( - featureFlagsProvider, - 'useFeatureFlags', - ); - - const setPermissionsPageEnabled = (enabled: boolean) => { - useFeatureFlagsSpy.mockReturnValue({ - isEnabled: (key) => key === 'permissionsPage' && enabled, - } as ReturnType); - }; - - beforeEach(() => { - setPermissionsPageEnabled(true); - }); - - afterEach(() => { - useFeatureFlagsSpy.mockReset(); - }); - const createTestComponent = (props?: Partial) => { const completeProps: IDaoSettingsInfoProps = { dao: generateDao(), @@ -99,15 +79,6 @@ describe(' component', () => { ); }); - it('does not render the permissions link when the flag is disabled', () => { - setPermissionsPageEnabled(false); - render(createTestComponent()); - - expect( - screen.queryByText(/daoSettingsInfo.permissionsLink/), - ).not.toBeInTheDocument(); - }); - it('renders the correct definition values of the dao', () => { const dao = generateDao({ name: 'Some DAO', diff --git a/apps/app/src/modules/settings/components/daoSettingsInfo/daoSettingsInfo.tsx b/apps/app/src/modules/settings/components/daoSettingsInfo/daoSettingsInfo.tsx index ceb370f370..6d6ba08bd8 100644 --- a/apps/app/src/modules/settings/components/daoSettingsInfo/daoSettingsInfo.tsx +++ b/apps/app/src/modules/settings/components/daoSettingsInfo/daoSettingsInfo.tsx @@ -8,7 +8,6 @@ import { Tag, } from '@aragon/gov-ui-kit'; import type { IDao } from '@/shared/api/daoService'; -import { useFeatureFlags } from '@/shared/components/featureFlagsProvider'; import { ResourceLink } from '@/shared/components/resourceLink'; import { useTranslations } from '@/shared/components/translationsProvider'; import { networkDefinitions } from '@/shared/constants/networkDefinitions'; @@ -26,7 +25,6 @@ export interface IDaoSettingsInfoProps { export const DaoSettingsInfo: React.FC = (props) => { const { dao } = props; const { t } = useTranslations(); - const { isEnabled } = useFeatureFlags(); const daoAvatar = ipfsUtils.cidToSrc(dao.avatar); @@ -112,23 +110,18 @@ export const DaoSettingsInfo: React.FC = (props) => { )} - {isEnabled('permissionsPage') && ( - - {t('app.settings.daoSettingsInfo.permissionsLink')} - - )} + + {t('app.settings.daoSettingsInfo.permissionsLink')} + );