package Ġland . mo ka . k mm . shared . app . network . caller Ċ Ċ import Ġcom . ap ol log raph ql . apollo . A pol lo Call Ċ import Ġcom . ap ol log raph ql . apollo . A pol lo Exception Ċ import Ġcom . ap ol log raph ql . apollo . A pol lo HttpException Ċ import Ġcom . ap ol log raph ql . apollo . A pol lo Network Exception Ċ import Ġcom . ap ol log raph ql . apollo . api . A pol lo Experimental Ċ import Ġkotlinx . coroutines . Internal Cor outines Api Ċ import Ġkotlinx . coroutines . channels . Broadcast Channel Ċ import Ġkotlinx . coroutines . flow . single Ċ import Ġland . mo ka . k mm . shared . app . model . Layout Command er Ċ import Ġland . mo ka . k mm . shared . app . network . error . App Exception Ċ import Ġland . mo ka . k mm . shared . app . network . error . Error Parser Ċ import Ġland . mo ka . k mm . shared . app . network . error . Token Exception Ċ import Ġland . mo ka . k mm . shared . lib . log . Log Ċ Ċ class ĠCall Builder < T >( ĊĊĠĠĠ Ġprivate Ġvar Ġap ollo Call : ĠApollo Call < T >, ĊĠĠĠ Ġprivate Ġvar Ġerror Parser : ĠError Parser Ċ Ċ ) Ġ: ĠCall er < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar ĠerrorHandler : ĠHandler ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġglobal ErrorHandler : ĠHandler ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġset ErrorHandler ( handler : ĠHandler ): ĠCall Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠerrorHandler Ġ= Ġhandler ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Global ErrorHandler ( handler : ĠHandler ): ĠCall Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġglobal ErrorHandler Ġ= Ġhandler ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ A pol lo Experimental ĊĠĠĠ Ġ@ Internal Cor outines Api ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget (): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġap ollo Call . execute (). single () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġresponse . errors ?. first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġresponse . data !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġerror . message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorCode Ġ= Ġerror . custom Attributes [" code "]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġerror Parser . parse Exception ( errorCode , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġglobal ErrorHandler ?. invoke ( exception ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= ĠerrorHandler ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler ?. invoke ( exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . print (" e : Ġparse Exception Ġ$ exception ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġexception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠApollo Network Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠApp Exception . Network ( e . message Ġ?: Ġ" A pol lo Network Exception ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġglobal ErrorHandler ?. invoke ( exception ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= ĠerrorHandler ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler ?. invoke ( exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . print (" e : ĠApp Exception . Network Ġ$ exception ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġexception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠApollo HttpException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . print (" aaaa aaa Ġ: Ġ${ e }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠApp Exception . Internal Server ( e . message Ġ?: Ġ" A pol lo HttpException ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġglobal ErrorHandler ?. invoke ( exception ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= ĠerrorHandler ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler ?. invoke ( exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . print (" e : ĠApp Exception . Hash up Server Ġ$ exception ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġexception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠApollo Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . print (" e : ĠApollo Exception Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ A pol lo Experimental ĊĠĠĠ Ġ@ Internal Cor outines Api ĊĠĠĠ Ġsuspend Ġfun Ġget ( layout Command er : ĠBroadcast Channel < Layout Command er >): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠToken Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( e ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApp Exception . Network Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Command er . offer ( Layout Command er . Show Network Error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApp Exception . Internal Server Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Command er . offer ( Layout Command er . Show App Error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Internal Cor outines Api ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġcall ( callback : Ġ( T ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġget () ĊĠĠĠĠĠĠĠ Ġcallback . invoke ( res ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ