Browse Source

SONAR-9177 Show a warning when accessing a removed file

tags/6.4-RC1
Grégoire Aubert 7 years ago
parent
commit
fbdda573c5

+ 16
- 5
server/sonar-web/src/main/js/components/SourceViewer/SourceViewerBase.js View File

@@ -98,6 +98,7 @@ type State = {
openIssuesByLine: { [number]: boolean },
selectedIssue?: string,
sources?: Array<SourceLine>,
sourceRemoved: boolean,
symbolsByLine: { [number]: Array<string> }
};

@@ -144,6 +145,7 @@ export default class SourceViewerBase extends React.PureComponent {
openIssuesByLine: {},
selectedIssue: props.selectedIssue,
selectedIssueLocation: null,
sourceRemoved: false,
symbolsByLine: {}
};
}
@@ -224,6 +226,7 @@ export default class SourceViewerBase extends React.PureComponent {
loading: false,
hasSourcesAfter: sources.length > LINES,
sources: this.computeCoverageStatus(finalSources),
sourceRemoved: false,
symbolsByLine: symbolsByLine(sources.slice(0, LINES))
},
() => {
@@ -248,6 +251,8 @@ export default class SourceViewerBase extends React.PureComponent {
if (this.mounted) {
if (response.status === 403) {
this.setState({ component, loading: false, notAccessible: true });
} else if (response.status === 404) {
this.setState({ component, loading: false, sourceRemoved: true });
}
}
};
@@ -307,9 +312,9 @@ export default class SourceViewerBase extends React.PureComponent {
const onFailLoadSources = ({ response }) => {
// TODO handle other statuses
if (this.mounted) {
if (response.status === 403) {
if ([403, 404].includes(response.status)) {
reject(response);
} else if (response.status === 404) {
} else {
resolve([]);
}
}
@@ -570,7 +575,7 @@ export default class SourceViewerBase extends React.PureComponent {
}

render() {
const { component, loading } = this.state;
const { component, loading, sources, notAccessible, sourceRemoved } = this.state;

if (loading) {
return null;
@@ -592,14 +597,20 @@ export default class SourceViewerBase extends React.PureComponent {
'source-duplications-expanded': this.state.displayDuplications
});

const displaySources = !notAccessible && !sourceRemoved;

return (
<div className={className} ref={node => (this.node = node)}>
<SourceViewerHeader component={this.state.component} showMeasures={this.showMeasures} />
{this.state.notAccessible &&
{notAccessible &&
<div className="alert alert-warning spacer-top">
{translate('code_viewer.no_source_code_displayed_due_to_security')}
</div>}
{this.state.sources != null && this.renderCode(this.state.sources)}
{sourceRemoved &&
<div className="alert alert-warning spacer-top">
{translate('code_viewer.no_source_code_displayed_due_to_source_removed')}
</div>}
{displaySources && sources != null && this.renderCode(sources)}
</div>
);
}

+ 1
- 0
sonar-core/src/main/resources/org/sonar/l10n/core.properties View File

@@ -1149,6 +1149,7 @@ coverage_viewer.x_covered_conditions={0} conditions are covered by tests
#------------------------------------------------------------------------------
code_viewer.no_info_displayed_due_to_security=Due to security settings, no information can be displayed.
code_viewer.no_source_code_displayed_due_to_security=Due to security settings, no source code can be displayed.
code_viewer.no_source_code_displayed_due_to_source_removed=The file was removed, no source code can be displayed.


#------------------------------------------------------------------------------

Loading…
Cancel
Save