package Ġme . w cy . router . starter Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġme . w cy . router . C Router Ċ import Ġme . w cy . router . Request Ċ import Ġme . w cy . router . Response Ċ import Ġme . w cy . router . Result Manager Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġw cy Ġon Ġ 2 0 2 0 / 1 2 / 3 0 . Ċ Ġ*/ Ċ class ĠSupport Fragment Starter Ġ: ĠFragment (), ĠRouter Starter Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġretain Instance Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ ĠResult Manager . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart ( request : ĠRequest ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart For Result ( request , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart For Result ( ĊĠĠĠĠĠĠĠ Ġrequest : ĠRequest , ĊĠĠĠĠĠĠĠ Ġlistener : Ġ(( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ-> ĠUnit )? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġrequest . context () ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠC Router . get Router Client () ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġclient . new Call ( request ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġcall . execute () ĊĊĠĠĠĠĠĠĠ Ġval Ġlogin Provider Ġ= Ġclient . login Provider () ĊĠĠĠĠĠĠĠ Ġif Ġ( response . need Login () Ġ&& Ġlogin Provider Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Provider . invoke ( context ) Ġ{ Ġreal Start Activity For Result ( response , Ġlistener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreal Start Activity For Result ( response , Ġlistener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġreal Start Activity For Result ( ĊĠĠĠĠĠĠĠ Ġresponse : ĠResponse , ĊĠĠĠĠĠĠĠ Ġlistener : Ġ(( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ-> ĠUnit )? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġresponse . request () ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġrequest . context () ĊĠĠĠĠĠĠĠ Ġif Ġ( response . intent () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( C Router . TAG , Ġ" no Ġtarget Ġfound Ġfor Ġrequest : Ġ$ request ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġbuild Intent ( response ) ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠActivity Ġ&& Ġlistener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Code Ġ= ĠResult Manager . gen Request Code () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġrequest Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult Manager . add ( request Code , Ġlistener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( C Router . TAG , Ġ" start Ġactivity Ġfor Ġresult Ġerror , Ġresponse =$ response ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( C Router . TAG , Ġ" start Ġactivity Ġerror , Ġresponse =$ response ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Intent ( response : ĠResponse ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġresponse . request () ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġresponse . intent () !! ĊĠĠĠĠĠĠĠ Ġintent . put Extras ( request . extras ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( request . uri () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= Ġrequest . uri () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( request . flags () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( request . flags ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠ Ġ} Ċ }