Hello Everyone
When I try to signup the app there is a loading feature says “Please wait Authenticating”. Now this hangs on the screen and therefore the app does not work as it is intended to work.
Please have a look at this screen shot
My services.js looks something like this
angular.module('bucketList.services', [])
.factory('API', function ($rootScope, $http, $ionicLoading, $window) {
var base = "http://localhost:9804";
$rootScope.show = function (text) {
$rootScope.loading = $ionicLoading.show({
content: text ? text : 'Loading',
animation: 'fade-in',
showBackdrop: true,
maxWidth: 200,
showDelay: 0
});
};
$rootScope.hide = function () {
$ionicLoading.hide();
};
$rootScope.logout = function () {
$rootScope.setToken("");
$window.location.href = '#/auth/signin';
};
$rootScope.notify =function(text){
$rootScope.show(text);
$window.setTimeout(function () {
$rootScope.hide();
}, 1999);
};
$rootScope.doRefresh = function (tab) {
if(tab == 1)
$rootScope.$broadcast('fetchAll');
else
$rootScope.$broadcast('fetchCompleted');
$rootScope.$broadcast('scroll.refreshComplete');
};
$rootScope.setToken = function (token) {
return $window.localStorage.token = token;
}
$rootScope.getToken = function () {
return $window.localStorage.token;
}
$rootScope.isSessionActive = function () {
return $window.localStorage.token ? true : false;
}
return {
signin: function (form) {
return $http.post(base+'/api/v1/bucketList/auth/login', form);
},
signup: function (form) {
return $http.post(base+'/api/v1/bucketList/auth/register', form);
},
getAll: function (email) {
return $http.get(base+'/api/v1/bucketList/data/list', {
method: 'GET',
params: {
token: email
}
});
},
getOne: function (id, email) {
return $http.get(base+'/api/v1/bucketList/data/item/' + id, {
method: 'GET',
params: {
token: email
}
});
},
saveItem: function (form, email) {
return $http.post(base+'/api/v1/bucketList/data/item', form, {
method: 'POST',
params: {
token: email
}
});
},
putItem: function (id, form, email) {
return $http.put(base+'/api/v1/bucketList/data/item/' + id, form, {
method: 'PUT',
params: {
token: email
}
});
},
deleteItem: function (id, email) {
return $http.delete(base+'/api/v1/bucketList/data/item/' + id, {
method: 'DELETE',
params: {
token: email
}
});
}
}
});
and My controllers.js look like this
angular.module('bucketList.controllers', ['bucketList.services'])
.controller('SignInCtrl', function ($rootScope, $scope, API, $window,$ionicLoading) {
// if the user is already logged in, take him to his bucketlist
if ($rootScope.isSessionActive()) {
$window.location.href = ('#/bucket/list');
}
$scope.user = {
email: "",
password: ""
};
$scope.validateUser = function () {
var email = this.user.email;
var password = this.user.password;
if(!email || !password) {
$rootScope.notify("Please enter valid credentials");
return false;
}
$rootScope.show('Please wait.. Authenticating');
API.signin({
email: email,
password: password
}).success(function (data) {
$rootScope.setToken(email); // create a session kind of thing on the client side
$rootScope.hide();
$window.location.href = ('#/bucket/list');
}).error(function (error) {
$rootScope.hide();
$rootScope.notify("Invalid Username or password");
});
}
})
.controller('SignUpCtrl', function ($rootScope, $scope, API, $window) {
$scope.user = {
email: "",
password: "",
name: ""
};
$scope.createUser = function () {
var email = this.user.email;
var password = this.user.password;
var uName = this.user.name;
if(!email || !password || !uName) {
$rootScope.notify("Please enter valid data");
return false;
}
$rootScope.show('Please wait.. Registering');
API.signup({
email: email,
password: password,
name: uName
}).success(function (data) {
$rootScope.setToken(email); // create a session kind of thing on the client side
$rootScope.hide();
$window.location.href = ('#/bucket/list');
}).error(function (error) {
$rootScope.hide();
if(error.error && error.error.code == 11000)
{
$rootScope.notify("A user with this email already exists");
}
else
{
$rootScope.notify("Oops something went wrong, Please try again!");
}
});
}
})
.controller('myListCtrl', function ($rootScope, $scope, API, $timeout, $ionicModal, $window) {
$rootScope.$on('fetchAll', function(){
API.getAll($rootScope.getToken()).success(function (data, status, headers, config) {
$rootScope.show("Please wait... Processing");
$scope.list = [];
for (var i = 0; i < data.length; i++) {
if (data[i].isCompleted == false) {
$scope.list.push(data[i]);
}
};
if($scope.list.length == 0)
{
$scope.noData = true;
}
else
{
$scope.noData = false;
}
$ionicModal.fromTemplateUrl('templates/newItem.html', function (modal) {
$scope.newTemplate = modal;
});
$scope.newTask = function () {
$scope.newTemplate.show();
};
$rootScope.hide();
}).error(function (data, status, headers, config) {
$rootScope.hide();
$rootScope.notify("Oops something went wrong!! Please try again later");
});
});
$rootScope.$broadcast('fetchAll');
$scope.markCompleted = function (id) {
$rootScope.show("Please wait... Updating List");
API.putItem(id, {
isCompleted: true
}, $rootScope.getToken())
.success(function (data, status, headers, config) {
$rootScope.hide();
$rootScope.doRefresh(1);
}).error(function (data, status, headers, config) {
$rootScope.hide();
$rootScope.notify("Oops something went wrong!! Please try again later");
});
};
$scope.deleteItem = function (id) {
$rootScope.show("Please wait... Deleting from List");
API.deleteItem(id, $rootScope.getToken())
.success(function (data, status, headers, config) {
$rootScope.hide();
$rootScope.doRefresh(1);
}).error(function (data, status, headers, config) {
$rootScope.hide();
$rootScope.notify("Oops something went wrong!! Please try again later");
});
};
})
.controller('completedCtrl', function ($rootScope,$scope, API, $window) {
$rootScope.$on('fetchCompleted', function () {
API.getAll($rootScope.getToken()).success(function (data, status, headers, config) {
$scope.list = [];
for (var i = 0; i < data.length; i++) {
if (data[i].isCompleted == true) {
$scope.list.push(data[i]);
}
};
if(data.length > 0 & $scope.list.length == 0)
{
$scope.incomplete = true;
}
else
{
$scope.incomplete= false;
}
if(data.length == 0)
{
$scope.noData = true;
}
else
{
$scope.noData = false;
}
}).error(function (data, status, headers, config) {
$rootScope.notify("Oops something went wrong!! Please try again later");
});
});
$rootScope.$broadcast('fetchCompleted');
$scope.deleteItem = function (id) {
$rootScope.show("Please wait... Deleting from List");
API.deleteItem(id, $rootScope.getToken())
.success(function (data, status, headers, config) {
$rootScope.hide();
$rootScope.doRefresh(2);
}).error(function (data, status, headers, config) {
$rootScope.hide();
$rootScope.notify("Oops something went wrong!! Please try again later");
});
};
})
.controller('newCtrl', function ($rootScope, $scope, API, $window) {
$scope.data = {
item: ""
};
$scope.close = function () {
$scope.modal.hide();
};
$scope.createNew = function () {
var item = this.data.item;
if (!item) return;
$scope.modal.hide();
$rootScope.show();
$rootScope.show("Please wait... Creating new");
var form = {
item: item,
isCompleted: false,
user: $rootScope.getToken(),
created: Date.now(),
updated: Date.now()
}
API.saveItem(form, form.user)
.success(function (data, status, headers, config) {
$rootScope.hide();
$rootScope.doRefresh(1);
})
.error(function (data, status, headers, config) {
$rootScope.hide();
$rootScope.notify("Oops something went wrong!! Please try again later");
});
};
})
If anyone encountered the same problem before please let me know the issue.