package Ġcom . money tree . app . repository . network . callbacks Ċ Ċ import Ġcom . money tree . app . common . NS Constants Ċ import Ġcom . money tree . app . repository . network . error . NS Api ErrorHandler Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . net . Unknown Host Exception Ċ Ċ /** Ċ Ġ* ĠCallback Ġthat Ġextends Ġthe ĠRet rofit Ġcallback Ġin Ġorder Ġto Ġperform Ġactions Ġother Ġthan ĠAPI Ġsuccess Ġor Ġfailure . Ċ Ġ* Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġto Ġaccept Ċ Ġ* Ġ@ property ĠviewModel Callback ĠThe Ġcallback Ġto Ġcommunicate Ġback Ġto Ġrepository Ċ Ġ* Ġ@ property Ġerror Response Tag ĠThe Ġerror Ġresponse Ġtag Ġto Ġhandle Ġthe Ġappropriate Ġerror Ġtype Ċ Ġ*/ Ċ abstract Ġclass ĠNS Ret rofit Callback < T >( ĊĠĠĠ Ġprivate Ġval ĠviewModel Callback : ĠNS Generic ViewModel Callback , ĊĠĠĠ Ġprivate Ġval Ġerror Response Tag : ĠString ? Ġ= Ġnull Ċ ) Ġ: ĠCallback < T > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < T >, Ġresponse : ĠResponse < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . body () Ġ== Ġnull Ġ&& Ġresponse . error Body () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNS Api ErrorHandler . get Api ErrorMessage ( response , ĠviewModel Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Response ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Response ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNS Api ErrorHandler . get Api ErrorMessage ( response , ĠviewModel Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonError Response ( response ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġresponse Ġis Ġfailed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < T >, Ġthrowable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġcancell ing Ġall Ġrunning Ġapi Ġif Ġuser Ġpress Ġback Ġfrom Ġany Ġscreen . ĠSo Ġthat Ġtime Ġwe Ġdon 't Ġneed Ġto Ġshow Ġerror Ġalert Ġwith ĠSomething Ġwent Ġwrong ĊĠĠĠĠĠĠĠ Ġif Ġ(! call . is Canceled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Callback . on Failure (( if Ġ( throwable Ġis ĠUnknown Host Exception ) ĠNS Constants . UNKNOWN _ HOST _ EXCEPTION Ġelse Ġnull )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġresponse Ġis Ġsuccess ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠT Ġtemplate ĊĠĠĠĠ Ġ* Ġ@ param Ġresponse Ġresponse Ġof Ġweb Ġrequest ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġ< T > Ġon Response ( response : ĠResponse < T >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġresponse Ġis Ġerror ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠT Ġtemplate ĊĠĠĠĠ Ġ* Ġ@ param Ġresponse Ġresponse Ġof Ġweb Ġrequest ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġ< T > ĠonError Response ( response : ĠResponse < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġwill Ġbe Ġoverridden Ġby Ġextended Ġcallbacks Ġto Ġhandle Ġthe Ġerror Ġresponse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthere Ġis Ġno Ġnetwork Ġwhile Ġmaking Ġthe Ġweb Ġservice Ġcall . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon No Network () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Callback . on No Network ( null ) ĊĠĠĠ Ġ} Ċ }