Skip to content

Commit

Permalink
fix(organizations): adjust self-ownership check logic TASK-1490 (#5459)
Browse files Browse the repository at this point in the history
### 📣 Summary
Updates `isSelfOwned()` util to check `owner__username` rather than
`owner_label` and drops use of util for determining when to display 'me'
vs. owner avatar.
  • Loading branch information
jamesrkiger authored Jan 30, 2025
1 parent 6d54cbb commit fa0edf5
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 19 deletions.
2 changes: 1 addition & 1 deletion jsapp/js/assetUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@ export function isSelfOwned(asset: AssetResponse | ProjectViewAsset) {
return (
asset &&
sessionStore.currentAccount &&
asset.owner_label === sessionStore.currentAccount.username
asset.owner__username === sessionStore.currentAccount.username
);
}

Expand Down
8 changes: 5 additions & 3 deletions jsapp/js/components/formSummary/formSummaryProjectInfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import bem from 'js/bem';
import {
getCountryDisplayString,
getSectorDisplayString,
isSelfOwned,
} from 'js/assetUtils';
import type {
AssetResponse,
Expand All @@ -16,6 +15,7 @@ import {formatTime} from 'js/utils';
import AssetStatusBadge from 'js/components/common/assetStatusBadge';
import Avatar from 'js/components/common/avatar';
import envStore from 'js/envStore';
import sessionStore from 'js/stores/session';

interface FormSummaryProjectInfoProps {
asset: AssetResponse;
Expand Down Expand Up @@ -96,8 +96,10 @@ export default function FormSummaryProjectInfo(
{/* owner */}
<bem.FormView__cell m='padding'>
<bem.FormView__label>{t('Owner')}</bem.FormView__label>
{isSelfOwned(props.asset) && t('me')}
{!isSelfOwned(props.asset) && (
{props.asset.owner_label ===
sessionStore.currentAccount.username ? (
t('me')
) : (
<Avatar
username={props.asset.owner_label}
size='s'
Expand Down
6 changes: 3 additions & 3 deletions jsapp/js/components/modalForms/projectSettings.es6
Original file line number Diff line number Diff line change
Expand Up @@ -872,7 +872,6 @@ class ProjectSettings extends React.Component {
const operationalPurposeField = envStore.data.getProjectMetadataField('operational_purpose');
const operationalPurposes = envStore.data.operational_purpose_choices;
const collectsPiiField = envStore.data.getProjectMetadataField('collects_pii');
const isSelfOwned = assetUtils.isSelfOwned(this.state.formAsset);
const descriptionField = envStore.data.getProjectMetadataField('description');

return (
Expand Down Expand Up @@ -1060,7 +1059,8 @@ class ProjectSettings extends React.Component {
</div>
}

{isSelfOwned && this.props.context === PROJECT_SETTINGS_CONTEXTS.EXISTING &&
{userCan('delete_asset', this.state.formAsset) &&
this.props.context === PROJECT_SETTINGS_CONTEXTS.EXISTING && (
<div className={styles.input}>
<Button
type='danger'
Expand All @@ -1071,7 +1071,7 @@ class ProjectSettings extends React.Component {
onClick={this.deleteProject}
/>
</div>
}
)}
</div>
</form>
);
Expand Down
24 changes: 12 additions & 12 deletions jsapp/js/projects/projectsTable/projectsTableRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ import Checkbox from 'js/components/common/checkbox';

// Stores, hooks and utilities
import {formatTime} from 'js/utils';
import assetUtils, {isSelfOwned} from 'js/assetUtils';
import assetUtils from 'js/assetUtils';
import sessionStore from 'js/stores/session';

// Constants and types
import {ROUTES} from 'js/router/routerConstants';
Expand Down Expand Up @@ -55,17 +56,16 @@ export default function ProjectsTableRow(props: ProjectsTableRowProps) {
case 'status':
return <AssetStatusBadge deploymentStatus={props.asset.deployment_status} />;
case 'ownerUsername':
if (isSelfOwned(props.asset)) {
return t('me');
} else {
return (
<Avatar
username={props.asset.owner_label}
size='s'
isUsernameVisible
/>
);
}
return props.asset.owner_label ===
sessionStore.currentAccount.username ? (
t('me')
) : (
<Avatar
username={props.asset.owner_label}
size='s'
isUsernameVisible
/>
);
case 'ownerFullName':
return 'owner__name' in props.asset ? props.asset.owner__name : null;
case 'ownerEmail':
Expand Down

0 comments on commit fa0edf5

Please # to comment.