import App from '../../../base'

export default App.controller(
  'UserOauthController',
  function ($http, $scope, $q) {
    const _reset = function () {
      $scope.ui = {
        hasError: false,
        errorMessage: ''
      }
      $scope.providers = window.oauthProviders
      $scope.thirdPartyIds = window.thirdPartyIds
    }
    const _unlinkError = (providerId, err) => {
      $scope.providers[providerId].ui.hasError = true
      $scope.providers[providerId].ui.errorMessage =
        err && err.data && err.data.message ? err.data.message : 'error'
    }

    $scope.unlink = providerId => {
      if (window.ExposedSettings.isOverleaf) {
        // UI
        $scope.providers[providerId].ui = {
          hasError: false,
          isProcessing: true
        }
        // Data for update
        const data = {
          _csrf: window.csrfToken,
          link: false,
          providerId
        }
        $http
          .post('/user/oauth-unlink', data)
          .catch(error => {
            $scope.providers[providerId].ui.isProcessing = false
            _unlinkError(providerId, error)
          })
          .then(response => {
            $scope.providers[providerId].ui.isProcessing = false
            if (response.status === 200) {
              $scope.thirdPartyIds[providerId] = null
            } else {
              _unlinkError(providerId, response)
            }
          })
      }
    }

    _reset()
  }
)
