Steem Electron 데스크탑 앱 개발 - 로그인 두번째
오픈소스 Ecency vision 을 포크하여 스팀잇에서 사용할 수 있도록 코드를 수정하고 있습니다.
그리고 작업하는 과정을 매일 기록합니다.
이전글
스팀잇 계정으로 로그인하는 부분에서 에러가 발생하고 있어서 로직을 수정했습니다.
스팀잇 계정으로 로그인을 시도하면 ecency API를 호출하는 부분에서 에러가 납니다.
아래 코드에서 에러가 발생하네요.
// src/common/components/login/index.tsx
// ...
doLogin = async (hsCode: string, postingKey: null | undefined | string, account: Account) => {
const {global, setActiveUser, updateActiveUser, addUser} = this.props;
// get access token from code
return hsTokenRenew(hsCode).then(x => {
const user: User = {
username: x.username,
accessToken: x.access_token,
refreshToken: x.refresh_token,
expiresIn: x.expires_in,
postingKey
};
// add / update user data
addUser(user);
// activate user
setActiveUser(user.username);
// add account data of the user to the reducer
updateActiveUser(account);
if (global.usePrivate) {
// login activity
usrActivity(user.username, 20);
}
// redirection based on path name
const {location, history} = this.props;
if (location.pathname.startsWith("/signup")) {
const u = `/@${x.username}/feed`;
history.push(u);
}
});
}
에러 원인인 hsTokenRenew
함수를 호출하는 코드를 제거했습니다.
수정된 코드는 다음과 같습니다.
// src/common/components/login/index.tsx
// ...
doLogin = async (hsCode: string, postingKey: null | undefined | string, account: Account) => {
const { global, setActiveUser, updateActiveUser, addUser } = this.props;
const user: User = {
username: account.name,
accessToken: '',
refreshToken: '',
expiresIn: 0,
postingKey,
};
// add / update user data
addUser(user);
// activate user
setActiveUser(user.username);
// add account data of the user to the reducer
updateActiveUser(account);
if (global.usePrivate) {
// login activity
usrActivity(user.username, 20);
}
// redirection based on path name
const {location, history} = this.props;
if (location.pathname.startsWith("/signup")) {
const u = `/@${x.username}/feed`;
history.push(u);
}
}
코드를 수정하고 다시 로그인 해보는데 다른 에러가 또 발생합니다.
asset를 파싱하다가 에러가 발생했습니다.
symbol이 HIVE로 되어 있어서 파싱하다가 에러가 발생하는 것 같습니다.
hive-wallet.ts
에서 해당 코드를 찾아서 수정했습니다.
// src/common/helper/hive-wallet.ts:L49
// ...
this.sbdBalance = parseAsset(account.sbd_balance).amount;
this.savingBalanceSbd = parseAsset(account.savings_sbd_balance).amount;
this.rewardSteemBalance = parseAsset(account.reward_steem_balance).amount;
this.rewardSbdBalance = parseAsset(account.reward_sbd_balance).amount;
this.rewardVestingSteem = parseAsset(account.reward_vesting_steem).amount;
그리고 parse-asset.ts
에서 Symbol을 Steem으로 모두 변경했습니다.
// src/common/helper/parse-asset.ts
export enum Symbol {
STEEM = "STEEM",
SBD = "SBD",
VESTS = "VESTS",
}
export enum NaiMap {
"@@000000021" = "STEEM",
"@@000000013" = "SBD",
"@@000000037" = "VESTS",
}
그외 에러나는 코드를 찾아서 HIVE
는 STEEM
으로, HBD
는 SBD
로, HP
는 SP
로 수정했습니다.
다 수정하려니 파일이 너무 많아서 에러나는 코드만 최소한으로 수정했습니다.
다시 로그인해보니 로그인은 잘 됩니다.
테스트 해보니 댓글 등록도 잘됩니다.
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
ㅜㅜ 그래도 일단 로그인 되고 글쓰기도 되니 :)