package Ġio . github . se var 8 3 . graphql demo . data Ċ Ċ import Ġcom . ap ol log raph ql . apollo . A pol lo Client Ċ import Ġcom . ap ol log raph ql . apollo . api . cache . http . Http Cache Policy Ċ import Ġcom . ap ol log raph ql . apollo . rx 2 . rx Query Ċ import Ġio . github . se var 8 3 . graphql demo . Github Repository Commits Query Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Scheduler Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġio . reactivex . subjects . Publish Subject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠS vet lo z ar ĠK ost adin ov Ġon Ġ 0 5 . 0 1 . 2 0 . Ċ Ġ*/ Ċ class ĠCommit s DataSource ( ĊĠĠĠ Ġprivate Ġval Ġap ollo Client : ĠApollo Client , ĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable : ĠComposite Disposable Ġ= ĠComposite Disposable (), ĊĠĠĠ Ġprivate Ġval Ġprocess Scheduler : ĠScheduler Ġ= ĠS chedulers . io (), ĊĠĠĠ Ġprivate Ġval Ġresult Scheduler : ĠScheduler Ġ= ĠAndroid Schedulers . main Thread () Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcommits Subject : ĠPublish Subject < List < Github Repository Commits Query . Edge >> Ġ= ĠPublish Subject . create () ĊĠĠĠ Ġprivate Ġval Ġexception Subject : ĠPublish Subject < Throwable > Ġ= ĠPublish Subject . create () ĊĊĠĠĠ Ġval Ġcommits : ĠObservable < List < Github Repository Commits Query . Edge >> Ġ= Ġcommits Subject . hide () ĊĠĠĠ Ġval Ġerror : ĠObservable < Throwable > Ġ= Ġexception Subject . hide () ĊĊĠĠĠ Ġfun Ġfetch Commits ( repository Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommits Query Ġ= ĠGithub Repository Commits Query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġrepository Name ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdis posable Ġ= Ġap ollo Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. rx Query ( commits Query ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Cache Policy ( Http Cache Policy . NETWORK _ FIRST ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( process Scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( result Scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhead Commit Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data ()?. viewer ?. repository ?. ref ?. target Ġas ? ĠGithub Repository Commits Query . As Commit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhead Commit ?. history ?. edges ?. filter NotNull (). or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommits Subject :: onNext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception Subject :: onNext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel Fetching () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . dispose () ĊĠĠĠ Ġ} Ċ }