interface resData {
data: {
access_token: string;
};
}
interface signUpData {
userClusterName: string;
accessToken: string;
}
export const startRegister = async (code: string | ParsedQs | string[] | ParsedQs[] | undefined): Promise<any> => {
const res: resData = await client.post('<https://api.intra.42.fr/oauth/token>', {
grant_type: 'authorization_code',
client_id: process.env.REACT_APP_REGISTER_CLIENT_UID,
client_secret: process.env.REACT_APP_REGISTER_CLIENT_SERECT,
code: code,
redirect_uri: '<http://localhost:3000/register>',
});
const info42 = await client.get('<https://api.intra.42.fr/v2/me>', {
headers: {
Authorization: `Bearer ${res.data.access_token}`,
},
});
return { info: info42, accessToken: res.data.access_token };
};
export const signUp = async (data: signUpData): Promise<any> =>
await client.post(`/${data.userClusterName}`, {
accessToken: data.accessToken,
userPassword: '123',
userDeadline: '2022-01-29',
userEmail: '[email protected]',
});
const getUser = async (): Promise<any> => {
try {
const query = QueryString.parse(location.search, {
ignoreQueryPrefix: true,
});
const res = await startRegister(query.code);
setUser(res);
} catch (e) {
console.log(e);
}
};
const getUser = async (): Promise<void> => {
try {
const query = QueryString.parse(location.search, {
ignoreQueryPrefix: true,
});
const res = await startRegister(query.code as string);
setUser(res);
} catch (e) {
console.log(e);
}
};
useEffect(() => {
(() => {
getUser()
.then((data) => console.log(data))
.catch((err) => console.error(err));
})();
return () => {};
}, []);
해당 함수 getuser를 오류 없이 불러오기에는 .then 과 catch가 필요하다. 하지만 우리에게 꼭 필요한 부분이 아니기 때문에 쓰고싶지 않을때는 void를 이용하면 되는듯하다.
useEffect(() => {
void getUser();
}, []);
이는 페이지 no-floating-promises 관련 오류이다