Use counter for ajax loader
You SHOULD consider migrating to Angular (aka Angular2, aka Angular5) from ANgularJS (version 1), as it's not developing and soon won't be supported anymore. 
I guess nested promises would be much useful here (more details below).


Rewrite init() as follow

function init() {
  return mainService.get().then(function (response) {
    if (response) {

    }
    $scope.isLoading = false;
  });
}


And in main block instead of

mainService.post(alteredItems).then(function (response) {
  init();
})


Write:

mainService.post(alteredItems).then(function (response) {
  return init();
})


In this case your finally would be called AFTER bot async calls completed.

P.S. Consider using library cg-buisy https://github.com/cgross/angular-busy
It automates displaying of loading indicator and accepts promises. Used it a lot in production.