package Ġcom . ba el . d ads . lib . remote . service Ċ Ċ import Ġcom . ap ol log raph ql . apollo . A pol lo Client Ċ import Ġcom . ap ol log raph ql . apollo . api . Operation . Data Ċ import Ġcom . ap ol log raph ql . apollo . api . Operation . Variables Ċ import Ġcom . ap ol log raph ql . apollo . api . Query Ċ import Ġcom . ap ol log raph ql . apollo . coroutines . await Ċ import Ġcom . ba el . d ads . domain . common . exception . No Network Exception Ċ import Ġcom . ba el . d ads . lib . remote . network . Network Ċ import Ġjava . io . IOException Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠEr ick Sum argo Ġon Ġ 0 1 / 0 1 / 2 1 . Ċ Ġ*/ Ċ Ċ abstract Ġclass ĠBase A pol lo Service ( private Ġval Ġclient : ĠApollo Client ) Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġnetwork : ĠNetwork ĊĊĠĠĠ Ġprotected Ġsuspend Ġfun Ġ< D Ġ: ĠData > Ġquery ( script : ĠQuery < D , ĠD , ĠVariables >): ĠResult < D > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! network . isConnected ) Ġthrow ĠNo Network Exception () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . query ( script ). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( response . errors ! ![ 0 ]. message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ