Skip to content

Commit

Permalink
[dagit] Permissions cleanup (#11712)
Browse files Browse the repository at this point in the history
### Summary & Motivation

Clean up some of Permissions now that Cloud has been updated.

I'll need to remove the `data` field in a followup, since Cloud still has a place where it's being defined (though not used).

### How I Tested These Changes

TS/lint/jest in OSS and Cloud.
  • Loading branch information
hellendag committed Jan 17, 2023
1 parent 41d6c4d commit 26f7e93
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 23 deletions.
27 changes: 7 additions & 20 deletions js_modules/dagit/packages/core/src/app/Permissions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -89,25 +89,21 @@ export const extractPermissions = (
export type PermissionsMap = ReturnType<typeof extractPermissions>;

type PermissionsContextType = {
// todo dish: Optional for Cloud compatibility. Make them non-optional.
unscopedPermissions?: PermissionsMap;
locationPermissions?: Record<string, PermissionsMap>;
unscopedPermissions: PermissionsMap;
locationPermissions: Record<string, PermissionsMap>;
loading: boolean;
// Raw unscoped permission data, for Cloud extraction
rawUnscopedData?: PermissionFragment[];
rawUnscopedData: PermissionFragment[];

// todo dish: For Cloud compatibility, delete in favor of `rawUnscopedData`
data: PermissionFragment[];
data?: PermissionFragment[];
};

export const PermissionsContext = React.createContext<PermissionsContextType>({
unscopedPermissions: extractPermissions([]),
locationPermissions: {},
loading: true,
rawUnscopedData: [],

// todo dish: For Cloud compatibility, delete in favor of `rawUnscopedData`
data: [],
});

export const PermissionsProvider: React.FC = (props) => {
Expand Down Expand Up @@ -135,9 +131,6 @@ export const PermissionsProvider: React.FC = (props) => {
locationPermissions,
loading,
rawUnscopedData: unscopedPermissionsRaw,

// todo dish: For Cloud compatibility, delete.
data: unscopedPermissionsRaw,
};
}, [data, loading]);

Expand All @@ -148,9 +141,7 @@ export const PermissionsProvider: React.FC = (props) => {
* Retrieve a permission that is intentionally unscoped.
*/
export const useUnscopedPermissions = () => {
const {unscopedPermissions: unscoped, loading} = React.useContext(PermissionsContext);
// todo dish: Clean up once `unscopedPermissions` is non-optional.
const unscopedPermissions = unscoped!;
const {unscopedPermissions, loading} = React.useContext(PermissionsContext);
return {...unscopedPermissions, loading};
};

Expand All @@ -161,9 +152,8 @@ export const useUnscopedPermissions = () => {
*/
export const usePermissionsForLocation = (locationName: string | null | undefined) => {
const {unscopedPermissions, locationPermissions, loading} = React.useContext(PermissionsContext);
// todo dish: Clean up once `unscopedPermissions` is non-optional.
let permissionsForLocation = unscopedPermissions!;
if (locationName && locationPermissions && locationPermissions.hasOwnProperty(locationName)) {
let permissionsForLocation = unscopedPermissions;
if (locationName && locationPermissions.hasOwnProperty(locationName)) {
permissionsForLocation = locationPermissions[locationName];
}
return {...permissionsForLocation, loading};
Expand All @@ -172,9 +162,6 @@ export const usePermissionsForLocation = (locationName: string | null | undefine
// todo dish: Update callsites to either location-based perms or intentionally unscoped perms.
export const usePermissionsDEPRECATED = useUnscopedPermissions;

// todo dish: Temporary to pass Cloud build. Delete after Cloud callsites are updated.
export const usePermissions = useUnscopedPermissions;

const PERMISSIONS_QUERY = gql`
query PermissionsQuery {
unscopedPermissions: permissions {
Expand Down
3 changes: 0 additions & 3 deletions js_modules/dagit/packages/core/src/testing/TestProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,6 @@ export const TestProvider: React.FC<Props> = (props) => {
locationPermissions: {}, // Allow all permissions to fall back
loading: false,
rawUnscopedData: [],

// todo dish: For Cloud compatibility, delete.
data: [],
}}
>
<AnalyticsContext.Provider value={analytics}>
Expand Down

0 comments on commit 26f7e93

Please sign in to comment.