import { ClientIds } from 'config/clients/types'

import { getApiUrl } from '../config/routes'

const errorLexics = {
  5: '',
  10: '',
}

type FailedResponse = {
  error: {
    code: keyof typeof errorLexics,
    message?: string,
  },
  ok: false,
}

type SuccessResponse = {
  ok: true,
}

export const changePassword = async (client_id: ClientIds, password: string) => {
  const url = getApiUrl('/change_password')
  const init: RequestInit = {
    body: new URLSearchParams({ client_id, password }),
    method: 'PUT',
  }
  const response = await fetch(url, init)

  const body: SuccessResponse | FailedResponse = await response.json()

  if (body.ok) return Promise.resolve()

  return Promise.reject(errorLexics[body.error.code])
}
