Skip to content

Commit 8b93611

Browse files
committed
Make sure there's always a menu item for the current project
Avoids a problem where the wrong project can be shown as selected in the project bar dropdown when the project is not returned in `ProjectsService.list`.
1 parent a466335 commit 8b93611

File tree

5 files changed

+25
-6
lines changed

5 files changed

+25
-6
lines changed

app/scripts/directives/nav.js

+17-2
Original file line numberDiff line numberDiff line change
@@ -329,8 +329,23 @@ angular.module('openshiftConsole')
329329
});
330330

331331
updateProjects().then(function() {
332-
$scope.projectName = projectName;
333-
$scope.currentProject = _.get(projects, [ projectName ]);
332+
if (!$scope.projectName || !projects) {
333+
return;
334+
}
335+
336+
if (!projects[$scope.projectName]) {
337+
// Make sure there is an entry for the current project in the
338+
// dropdown. If it doesn't actually exist, the controller for
339+
// the current view is responsible for redirecting to an error
340+
// page.
341+
projects[$scope.projectName] = {
342+
metadata: {
343+
name: $scope.projectName
344+
}
345+
};
346+
}
347+
348+
$scope.currentProject = projects[$scope.projectName];
334349
updateOptions();
335350
});
336351
} else {

app/views/directives/header/header.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<select class="selectpicker form-control" data-selected-text-format="count>3" id="boostrapSelect" title=""></select>
2929
</div>
3030
<!-- create buttons show at mobile -->
31-
<div class="dropdown add-to-project" ng-show="canIAddToProject" uib-dropdown>
31+
<div class="dropdown add-to-project" ng-if="canIAddToProject" uib-dropdown>
3232
<a class="dropdown-toggle" href="" ng-disabled="currentProject.status.phase != 'Active'" title="Add to Project" uib-dropdown-toggle>
3333
<i class="fa fa-plus visible-xs-inline-block" aria-hidden="true" title="Add to Project"></i><span class="hidden-xs">Add to Project</span><span class="hidden-xs caret" aria-hidden="true" title="Add to Project"></span>
3434
</a>

dist/scripts/scripts.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -10137,7 +10137,11 @@ var e = a.project;
1013710137
r.projectName !== e && (r.projectName = e, r.chromeless = "chromeless" === a.view, e && !r.chromeless ? (_.set(n, "view.hasProject", !0), r.canIAddToProject = !1, o.getProjectRules(e).then(function() {
1013810138
r.projectName === e && (r.canIAddToProject = o.canIAddToProject(e));
1013910139
}), C().then(function() {
10140-
r.projectName = e, r.currentProject = _.get(l, [ e ]), b();
10140+
r.projectName && l && (l[r.projectName] || (l[r.projectName] = {
10141+
metadata: {
10142+
name: r.projectName
10143+
}
10144+
}), r.currentProject = l[r.projectName], b());
1014110145
})) : _.set(n, "view.hasProject", !1));
1014210146
}), v.selectpicker({
1014310147
iconBase: "fa",

dist/scripts/templates.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6852,7 +6852,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
68526852
"<select class=\"selectpicker form-control\" data-selected-text-format=\"count>3\" id=\"boostrapSelect\" title=\"\"></select>\n" +
68536853
"</div>\n" +
68546854
"\n" +
6855-
"<div class=\"dropdown add-to-project\" ng-show=\"canIAddToProject\" uib-dropdown>\n" +
6855+
"<div class=\"dropdown add-to-project\" ng-if=\"canIAddToProject\" uib-dropdown>\n" +
68566856
"<a class=\"dropdown-toggle\" href=\"\" ng-disabled=\"currentProject.status.phase != 'Active'\" title=\"Add to Project\" uib-dropdown-toggle>\n" +
68576857
"<i class=\"fa fa-plus visible-xs-inline-block\" aria-hidden=\"true\" title=\"Add to Project\"></i><span class=\"hidden-xs\">Add to Project</span><span class=\"hidden-xs caret\" aria-hidden=\"true\" title=\"Add to Project\"></span>\n" +
68586858
"</a>\n" +

test/integration/features/user_creates_project.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ describe('', () => {
127127
it('should successfully create a new project', () => {
128128
goToCreateProjectPage();
129129
projectHelpers.createProject(project, 'project/' + project['name'] + '/create');
130-
h.waitForPresence('.project-bar option[selected]', project['displayName']);
130+
h.waitForPresence('.project-bar option[selected][value="' + project['name'] + '"]');
131131
checkProjectSettings(project['name'], project['displayName'], project['description']);
132132
});
133133

0 commit comments

Comments
 (0)