package Ġio . iv an . react . navigation . view Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . facebook . infer . annotation . Assertions Ċ import Ġcom . facebook . react . dev support . Double Tap Reload Recognizer Ċ import Ġcom . facebook . react . modules . core . Default Hardware Back Btn Handler Ċ import Ġcom . facebook . react . modules . core . Permission Aware Activity Ċ import Ġcom . facebook . react . modules . core . Permission Listener Ċ import Ġio . iv an . react . navigation . utils . react Native Host Ċ Ċ open Ġclass ĠRN Base Activity Ġ: ĠAppCompatActivity (), ĠDefault Hardware Back Btn Handler , ĠPermission Aware Activity Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Permission Listener : ĠPermission Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġm Double Tap Reload Recognizer : ĠDouble Tap Reload Recognizer Ġby Ġlazy Ġ{ ĠDouble Tap Reload Recognizer () Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġreact Native Host . react Instance Manager . create React Context In Background () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ( react Native Host . has Instance ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreact Native Host . react Instance Manager . on Host Resume ( this , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġif Ġ( react Native Host . has Instance ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreact Native Host . react Instance Manager . on Host Pause ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġif Ġ( react Native Host . has Instance ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreact Native Host . react Instance Manager . on Host Destroy ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( react Native Host . has Instance ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreact Native Host . react Instance Manager . on Activity Result ( this , Ġrequest Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon KeyDown ( keyCode : ĠInt , Ġevent : ĠKeyEvent ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( react Native Host . has Instance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġreact Native Host . use Developer Support ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ MEDIA _ FAST _ FORWARD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . start Tracking () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ run Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ run Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġ|| Ġsuper . on KeyDown ( keyCode , Ġevent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon KeyUp ( keyCode : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshould Show Dev Menu Or Reload ( keyCode , Ġevent ) Ġ|| Ġsuper . on KeyUp ( keyCode , Ġevent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Key Long Press ( keyCode : ĠInt , Ġevent : ĠKeyEvent ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( react Native Host . has Instance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġreact Native Host . use Developer Support ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ MEDIA _ FAST _ FORWARD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreact Native Host . react Instance Manager . show Dev Options Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ run Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ run Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġ|| Ġsuper . on Key Long Press ( keyCode , Ġevent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( react Native Host . has Instance ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreact Native Host . react Instance Manager . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke Default On Back Pressed () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( react Native Host . has Instance ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreact Native Host . react Instance Manager . on New Intent ( intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on New Intent ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġoverride Ġfun Ġrequest Permissions ( permissions : ĠArray < String ?> ?, Ġrequest Code : ĠInt , Ġlistener : ĠPermission Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Permission Listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġrequest Permissions ( permissions !! , Ġrequest Code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String ? >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Permission Listener Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġm Permission Listener !!. on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Permission Listener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġdeleg ating Ġthe Ġ[ Activity . on KeyUp ] Ġmethod Ġto Ġdetermine Ġwhether Ġthe ĊĠĠĠĠ Ġ* Ġapplication Ġshould Ġshow Ġthe Ġdeveloper Ġmenu Ġor Ġshould Ġreload Ġthe ĠReact ĠApplication . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġwe Ġconsume Ġthe Ġevent Ġand Ġeither Ġsh o ed Ġthe Ġdevelop Ġmenu Ġor Ġre loaded Ġthe ĊĠĠĠĠ Ġ* Ġapplication . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshould Show Dev Menu Or Reload ( keyCode : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( react Native Host . has Instance () Ġ&& Ġreact Native Host . use Developer Support ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( keyCode Ġ== ĠKeyEvent . KEYCODE _ MENU ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreact Native Host . react Instance Manager . show Dev Options Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdid Double Tap R Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertNotNull < Double Tap Reload Recognizer >( m Double Tap Reload Recognizer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. did Double Tap R ( keyCode , Ġcurrent Focus ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( did Double Tap R ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreact Native Host . react Instance Manager . dev Support Manager . handle Reload JS () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ Ċ } Ċ