Steem Electron 데스크탑 앱 개발 - 로그인 두번째

in kr-dev 커뮤니티2 years ago (edited)

오픈소스 Ecency vision 을 포크하여 스팀잇에서 사용할 수 있도록 코드를 수정하고 있습니다.
그리고 작업하는 과정을 매일 기록합니다.

이전글

  1. 오픈소스 ecency-vision 포크해서 steemit electron 데스크탑 앱 개발하기 Start
  2. Steem Electron 데스크탑 앱 개발 - 로그인 1


스팀잇 계정으로 로그인하는 부분에서 에러가 발생하고 있어서 로직을 수정했습니다.

스팀잇 계정으로 로그인을 시도하면 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",
}


그외 에러나는 코드를 찾아서 HIVESTEEM으로, HBDSBD로, HPSP로 수정했습니다.

다 수정하려니 파일이 너무 많아서 에러나는 코드만 최소한으로 수정했습니다.


다시 로그인해보니 로그인은 잘 됩니다.

테스트 해보니 댓글 등록도 잘됩니다.

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

다 수정하려니 파일이 너무 많아서

ㅜㅜ 그래도 일단 로그인 되고 글쓰기도 되니 :)

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.032
BTC 63700.42
ETH 3084.27
USDT 1.00
SBD 3.83