repo list: generic refresh stars function
This commit is contained in:
parent
fb0d3d69c2
commit
6e1877084d
1 changed files with 14 additions and 42 deletions
|
@ -63,7 +63,8 @@
|
||||||
'repository': repo.name
|
'repository': repo.name
|
||||||
};
|
};
|
||||||
ApiService.createStar(data).then(function(result) {
|
ApiService.createStar(data).then(function(result) {
|
||||||
updateReposAfterStar(repo);
|
repo.is_starred = true;
|
||||||
|
refreshStars();
|
||||||
}, ApiService.errorDisplay('Could not star repository'));
|
}, ApiService.errorDisplay('Could not star repository'));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -72,50 +73,21 @@
|
||||||
'repository': repo.namespace + '/' + repo.name
|
'repository': repo.namespace + '/' + repo.name
|
||||||
};
|
};
|
||||||
ApiService.deleteStar(null, data).then(function(result) {
|
ApiService.deleteStar(null, data).then(function(result) {
|
||||||
updateReposAfterUnstar(repo);
|
repo.is_starred = false;
|
||||||
|
refreshStars();
|
||||||
}, ApiService.errorDisplay('Could not unstar repository'));
|
}, ApiService.errorDisplay('Could not unstar repository'));
|
||||||
};
|
};
|
||||||
|
|
||||||
// Finds a repository within the list of namespaces attached to $scope.
|
var refreshStars = function() {
|
||||||
var findRepoInList = function(repoNamespace, repoName) {
|
var starred = [];
|
||||||
var namespaceIndex = $scope.namespaces.map(function (n) {
|
$scope.namespaces.map(function(namespace) {
|
||||||
return n.username || n.name;
|
namespace.repositories.value.map(function(repository) {
|
||||||
}).indexOf(repoNamespace);
|
if (repository.is_starred) {
|
||||||
|
starred.push(repository);
|
||||||
var namespace = $scope.namespaces[namespaceIndex]
|
}
|
||||||
|
});
|
||||||
var repoIndex = namespace.repositories.value.map(function (r) {
|
});
|
||||||
return r.namespace + '/' + r.name;
|
$scope.starred_repositories.value = starred;
|
||||||
}).indexOf(repoNamespace + '/' + repoName);
|
|
||||||
|
|
||||||
return repoIndex != -1 ? namespace.repositories.value[repoIndex] : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add a starred repository to the list starred repository list and make
|
|
||||||
// sure it appears starred elsewhere on the page.
|
|
||||||
var updateReposAfterStar = function(repository) {
|
|
||||||
$scope.starred_repositories.value.push(repository);
|
|
||||||
|
|
||||||
var repo = findRepoInList(repository.namespace, repository.name);
|
|
||||||
if (repo != null) {
|
|
||||||
repo.is_starred = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove a repository from the starred repository list and make sure that
|
|
||||||
// it doesn't appear starred elsewhere on the page.
|
|
||||||
var updateReposAfterUnstar = function(repository) {
|
|
||||||
// Remove from the starred listings
|
|
||||||
var index = $scope.starred_repositories.value.map(function(r) {
|
|
||||||
return r.namespace + '/' + r.name;
|
|
||||||
}).indexOf(repository.namespace + '/' + repository.name);
|
|
||||||
$scope.starred_repositories.value.splice(index, 1);
|
|
||||||
|
|
||||||
// Set repo from the normal listings to unstarred.
|
|
||||||
var repo = findRepoInList(repository.namespace, repository.name);
|
|
||||||
if (repo != null) {
|
|
||||||
repo.is_starred = false;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var loadStarredRepos = function() {
|
var loadStarredRepos = function() {
|
||||||
|
|
Reference in a new issue