package Ġpro . app craft . lib . navigation Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġcom . github . ter r ak ok . c icer one .* Ċ import Ġcom . github . ter r ak ok . c icer one . android x .* Ċ import Ġcom . github . ter r ak ok . c icer one . android x . App Navigator Ċ Ċ @ Suppress (" unused ") Ċ open Ġclass ĠApp Navigator ( ĊĠĠĠ Ġactivity : ĠFragment Activity , ĊĠĠĠ Ġfragment Manager : ĠFragment Manager , ĊĠĠĠ Ġcontainer Id : ĠInt Ċ ) Ġ: ĠApp Navigator ( activity , Ġcontainer Id , Ġfragment Manager ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĊĠĠĠ Ġoverride Ġfun Ġapply Commands ( var arg Ġcommands : ĠCommand ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . apply Commands ( commands ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Commands (* commands ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply Command ( command : ĠCommand ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( command ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠForward To Ġ-> Ġactivity Forward To ( command ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠForward Ġ-> Ġforward ( command ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠReplace Ġ-> Ġreplace ( command ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTo Top Ġ-> Ġfragment To Top ( command ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBack To Ġ-> Ġback To ( command ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBack Ġ-> Ġback () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfragment To Top ( command : ĠTo Top ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= Ġcommand . screen Ġas ĠFragment Screen ĊĠĠĠĠĠĠĠ Ġcommit New Fragment Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Ġ= Ġscreen , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġactivity Forward To ( command : ĠForward To ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= Ġcommand . screen ĊĠĠĠĠĠĠĠ Ġif Ġ(( screen Ġis ĠActivity Screen ) Ġ|| Ġ(! check Top Stack Screen ( command ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġforward ( Forward ( screen )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Top Stack Screen ( command : ĠForward To ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġcommand . screen . screen Key ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġlocal Stack Copy . indexOf First Ġ{ Ġit Ġ== Ġkey Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġlocal Stack Copy . size ĊĠĠĠĠĠĠĠ Ġreturn Ġindex Ġ!= Ġ- 1 Ġ&& Ġindex Ġ== Ġsize Ġ- Ġ 1 ĊĠĠĠ Ġ} Ċ }