스팀 앱 개발기 #110 - 오류 수정: 지갑 화면 시작시 오류 토스트 뜸
오류 수정: 지갑 화면 시작시 오류 토스트 뜸
No. 110
2023. 11. 05 (일) | Written by @dorian-mobileapp
시작하며...
꽤 오래 전에 발견했던 버그인데요. 지갑 화면을 시작할 때, 네트워크 오류 팝업이 뜨는 문제입니다. (아래 스크린샷 참고) 오늘은 이 문제를 수정했습니다.
원인
WalletFragment가 시작되고, WalletState 상태 데이터를 walletStateCollector 객체가 수집하는데요. 아래 코드와 같이 상태의 종류를 WalletState.Success냐 아니냐로만 구별했던 것이 문제였습니다. 이 상태의 초기값은 WalletState.Loading이며, 이 값을 체크해야 했습니다.
private val walletStateCollector = FlowCollector<WalletState> { state ->
when (state) {
is WalletState.Success -> updateWallet(state.wallet)
else -> showToastShortly(getString(R.string.error_cannot_load))
}
}
수정
아래와 같이 WalletState 상태 값이 Wallet.Loading인지 체크하는 코드를 추가했습니다. 그리고 지갑 화면은 태그 화면과 다르게 처음부터 데이터를 요청하지 않습니다. 맨 처음에는 지갑이 빈값이므로 이에 해당되는 상태도 필요합니다. 이에 WalletState.Empty 타입도 추가했습니다.
private val walletStateCollector = FlowCollector<WalletState> { state ->
when (state) {
is WalletState.Empty -> updateWalletAsEmpty()
is WalletState.Loading -> updateWalletAsLoading()
is WalletState.Success -> updateWallet(state.wallet)
else -> showToastShortly(getString(R.string.error_cannot_load))
}
}
Empty 타입을 추가한 WalletState 인터페이스
sealed interface WalletState {
object Empty: WalletState
object Loading: WalletState
data class Success(val wallet: SteemitWallet) : WalletState
data class Failure(val content: String): WalletState
data class Error(val throwable: Throwable): WalletState
}
GitHub Commit
보다 자세한 코드는 아래 commit을 참고하세요.
마치며...
이번 개선 작업도 복잡하지 않아서 오늘 하루만에 해결할 수 있었어요. 자잘한 버그들이 있나 하루 이틀 더 확인해보고 다음 개발 진행하면 좋을것 같습니다.
지난 스팀 앱 개발기
- #109 - 개선: 태그 입력하고 검색 버튼 클릭 또는 엔터 키 누르면 키보드 닫기
- #108 - 개선: 태그 검색창에 엔터 키 적용
- #107 - 버그 수정: 태그 화면 복귀시 포스트 리스트 다시 로딩됨
- #106 - 포스트 화면 개발
- #105 - 포스트 화면의 로직 처리를 담당할 PostViewModel 클래스 개발
- #104 - 포스트 내용 읽기 기능을 Repository, Use Case 패턴에 적용
- #103 - 포스트 내용을 읽기 위한 bridge.get_discussion API 연동 코드 작성
- #102 - 포스트 내용을 읽기 위한 bridge.get_discussion API
- #101 - build.gradle에서 라이브러리 이름과 버전 통합
- #1 ~ #100
Layout provided by Steemit Enhancer hommage by ayogom
Posted through the ECblog app (https://blog.etain.club)
Thank you, friend!
I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
please click it!
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)
The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.
안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!