import { createAsyncThunk } from '@reduxjs/toolkit';
import axios from 'axios';
import { Token, LoginParams } from './types';
import pickBy from 'lodash/pickBy';
import identity from 'lodash/identity';

interface MyObj {
  token: string;
  error: string;
}

export const fetchToken = createAsyncThunk<Token[], LoginParams>(
  'token/fetchTokenStatus',
  async (params) => {
    const { login, password } = params;
    const { data } = await axios.post<Token[]>('/api/login', {
      params: pickBy(
        {
          login: login,
          password: password,
        },
        identity,
      ),
    });
    let obj: MyObj = JSON.parse(JSON.stringify(data));
    console.log(obj.error);
    obj.token ? localStorage.setItem('token', JSON.stringify(obj.token)) : '';
    return data;
  },
);
