스팀 앱 개발기 #21 - 사용자 지갑 정보를 담을 SteemitWallet 클래스 정의
지난 두 포스트에서 서버 데이터 읽기/쓰기를 담당할 dorian-steem-data 모듈, 도메인 데이터를 담당할 dorian-steem-domain 모듈을 프로젝트에 추가하는 과정을 보여 드렸습니다. 이번 포스트에서는 도메인 모듈에 지갑 데이터를 담당할 SteemitWalletDTO 데이터 클래스를 정의하는 과정을 보여 드립니다.
SteemitWalletDTO 클래스가 필요한 이유?
SteemitWalletDTO 클래스에는 사용자 계정, 지갑 잔액 등을 정의할 예정입니다. 스팀 API에서는 지갑 정보만 콕 집어서 주는 API는 없구요. condenser_api.get_accounts API가 주는 계정 정보를 통해 지갑 관련 자료를 구할 수 있습니다. 지갑 내용을 보여줄 화면에서 계정 정보 전체를 사용할 필요는 없지요. 거기서 스팀/스팀달러/스팀파워 잔액 등을 추출하여 SteemitWalletDTO 데이터 객체에 담는 것이 더 좋겠다고 판단합니다.
SteemitWalletDTO 클래스 정의
dorian-steem-domain 모듈 생성시 정의했던 SteemitAccount 클래스는 SteemitWallet로 이름을 변경하구요. 이 클래스는 다음과 같이 정의합니다.
data class SteemitWalletDTO(
val account: String,
val steemBalance: String,
val sbdBalance: String,
val savingSteemBalance: String,
val savingSbdBalance: String,
val steemPowerVest: String,
val delegatedSteemPowerVest: String,
val receivedSteemPowerVest: String,
val spWithdrawRate: String,
val spToBeWithdrawn: String
)
이 클래스의 필드들은 다음과 같습니다.
- account: 스팀잇 계정
- steemBalance: 스팀 잔액
- sbdBalance: 스팀달러 잔액
- savingSteemBalance: 예금에 예치된 스팀 잔액
- savingSbdBalance: 예금에 예치된 스팀달러 잔액
- steemPowerVest: 스팀 파워 (VEST 단위)
- delegatedSteemPowerVest: 임대 중인 스팀 파워 (VEST 단위)
- receivedSteemPowerVest: 임대 받고 있는 스팀 파워 (VEST 단위)
- spWithdrawRate: 1주에 파워다운 할 스팀 파워 수량 (VEST 단위)
- spToBeWithdrawn: 파워다운 할 스팀 파워 수량 (VEST 단위)
지금은 스팀 파워를 VEST 단위로 읽으며, 추후 이를 SP 단위로 바꿀 예정입니다.
GitHub Commit
마치며...
다음 포스트에서는 dorian-steem-data 모듈에 API 연동을 위한 1차 작업을 진행할 예정입니다.
지난 스팀 앱 개발기
- #20 - 클린 아키텍처를 위한 모듈 구성 (2)
- #19 - 클린 아키텍처를 위한 모듈 구성 (1)
- #18 - VEST로부터 STEEM POWER를 계산하는 방법
- #17 - VEST를 STEEM POWER로 변환하기 위해 필요한 get_dynamic_global_properties API
- #16 - 지갑 내용을 읽기 위해 필요한 API
- #15 - 지갑 서브화면(WalletFragment) 레이아웃 구성해 보기
- #14 - 지갑 서브화면(WalletFragment)에서 계정 인식하기
- #13 - 프로파일 서브화면(ProfileFragment)에서 계정 인식하기
- #12 - 태그 서브화면에서 태그 인식하기
- #11 - 검색 레이아웃을 메인 화면에 적용
- #10 - 태그 및 계정 검색 레이아웃 만들기
- #9 - BaseActivity 클래스 정의 그리고 MainActivity 클래스에 적용
- #8 - BaseFragment 클래스 정의 그리고 기존 프래그먼트들에 적용
- #7 - ProfileFragment 그리고 WalletFragment에 데이터 바인딩 적용
- #6 - 태그별 검색 내용을 보여줄 TagsFragment에 데이터 바인딩 적용
- #5 - GitHub에 소스 올리기
- #4 - 하단 내비게이션의 탭 관련 클래스 이름 수정
- #3 - 하단 내비게이션 바의 아이콘, 텍스트 수정
- #2 - 프로젝트 생성
- #1 - 시작하며...
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Upvoted! Thank you for supporting witness @jswit.