Skip to content

Instantly share code, notes, and snippets.

@matthewkremer
Created January 2, 2014 17:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matthewkremer/8223280 to your computer and use it in GitHub Desktop.
Save matthewkremer/8223280 to your computer and use it in GitHub Desktop.
$scope.inProjectRefInitial = false;
$scope.inProjectRef = firebaseRef('/usersInProject/'+$scope.projectid).push();
$scope.usersCurrentFile = {};
$scope.inProjectRef.on('value', function(snap){
if (snap.val()==null && $scope.inProjectRefInitial==false){
$scope.inProjectRefInitial = true;
$scope.inProjectRef.onDisconnect().remove();
$scope.inProjectRef.child('name').set($scope.auth.user.information.firstName);
$scope.inProjectRef.child('email').set($scope.auth.user.email);
$scope.inProjectRef.child('inFile').set('');
}
});
$scope.$watch('activeFile', function(a){
if ($scope.inProjectRefInitial==true){
$scope.inProjectRef.update({'inFile': a});
}
});
$scope.usersInProject = syncData('/usersInProject/'+$scope.projectid);
$scope.numOtherUsers = 0;
$scope.usersFile = function usersFile(userid){
if (userid in $scope.usersCurrentFile){
if ($scope.usersCurrentFile[userid].inFile !== ""){
return $scope.usersCurrentFile[userid];
}
}
return false;
}
$scope.allProjectUsers = syncData('/projects/' + $scope.projectid + '/users');
$scope.users = {};
$scope.allProjectUsers.$on('change', function(){
var users = fbGetIndex($scope.allProjectUsers);
for (var user in users){
if (!(user in $scope.users)){
$scope.users[users[user]] = syncData('/users/'+users[user]);
}
}
});
$scope.isOffline = function isOffline(email){
var users = fbGetIndex($scope.usersInProject);
var ret = [];
for (var user in users){
var u = $scope.usersInProject[users[user]];
ret.push(u.email.replace('.',','));
}
if (ret.indexOf(email)>-1){
return false;
}
return true;
}
$scope.usersInProject.$on('change', function(){
var users = fbGetIndex($scope.usersInProject);
if (users.indexOf($scope.inProjectRef.name()) == -1){
$scope.numOtherUsers = users.length;
}else{
$scope.numOtherUsers = users.length - 1;
}
for (var i=0;i<users.length;i++){
var u = $scope.usersInProject[users[i]];
if (typeof u.inFile !== "undefined"){
if (u.inFile == ""){
$scope.usersCurrentFile[u.email] = {'inFile': ''}
}else{
$scope.usersCurrentFile[u.email] = {'inFile': u.inFile, 'fileInfo': syncData('/fileSettings/'+u.inFile)};
}
}
}
$scope.$apply();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment