def _authCallback(self, callbackinfo):
            auth, public, action = callbackinfo

            if self.__insideAuthCallback: return  # prevent looping
            self.__insideAuthCallback = True

            try:
                if action == 0 or (action == 2 and not auth['enabled']):
                    good = self.removeCollection(auth['user'])
                    if not good:  # means something went wrong during  removal attempt - probably async collection syncing problem. Try later
                        if public:
                            GithubAuthorizator.setPublicCollsctionEnabled(auth['user'], True)
                        else:
                            GithubAuthorizator.setAuthorizationEnabled(auth['user'], True)

                elif action == 1 or (action == 2 and auth['enabled']):
                    if public:
                        self.addCollection(GithubCollection(auth['user'], public=True), do_async=True)  # TODO: reuse some token for public access
                    else:
                        self.addCollection(GithubCollection(auth['token']), do_async=True)
            except CollectionSyncError as e:
                QMessageBox.critical(self, 'something went wrong!', 'could not add/remove collection: %s' % str(e))
            finally:
                self.__insideAuthCallback = False