package Ġru . ch err yper ry . am iam i . presentation . activity Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . webkit . URL Util Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . fragment . app . Fragment Transaction Ċ import Ġru . ch err yper ry . am iam i . R Ċ import Ġru . ch err yper ry . am iam i . data . prefs . App Prefs Ċ import Ġru . ch err yper ry . am iam i . domain . model . Item Ċ import Ġru . ch err yper ry . am iam i . domain . model . Update Info Ċ import Ġru . ch err yper ry . am iam i . presentation . highlight . Highlight Fragment Ċ import Ġru . ch err yper ry . am iam i . presentation . main . Main Fragment Ċ import Ġru . ch err yper ry . am iam i . presentation . settings . Settings Fragment Ċ import Ġru . ch err yper ry . am iam i . presentation . update . Update Dialog Fragment Ċ Ċ class ĠNavigator ( ĊĠĠĠ Ġprivate Ġval Ġfragment Manager : ĠFragment Manager , ĊĠĠĠ Ġ@ Id Res Ġprivate Ġval Ġroot View : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġsingle Activity : ĠSingle Activity , ĊĠĠĠ Ġ// ĠTODO ĠReplace Ġwith Ġdomain Ġrepository ! ĊĠĠĠ Ġprivate Ġval Ġapp Prefs : ĠApp Prefs Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġopen List () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( root View , ĠMain Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Allow ing State Loss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( root View , ĠSettings Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Transition ( Fragment Transaction . TRANS IT _ FRAGMENT _ OPEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Allow ing State Loss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Highlight () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( root View , ĠHighlight Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Transition ( Fragment Transaction . TRANS IT _ FRAGMENT _ OPEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Allow ing State Loss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Item ( item : ĠItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! URL Util . is Network Url ( item . url )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ( item . url ) ĊĠĠĠĠĠĠĠ Ġif Ġ(!( app Prefs . chrome Custom Tabs . value Ġ&& Ġsingle Activity . try Open Custom Tabs ( uri ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Activity . open Default ( uri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Update Dialog ( update Info : ĠUpdate Info ) Ġ{ ĊĠĠĠĠĠĠĠ ĠUpdate Dialog Fragment . newInstance ( update Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( fragment Manager , ĠUpdate Dialog Fragment :: class . java . simple Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Url ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! URL Util . is Network Url ( url )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ( url ) ĊĠĠĠĠĠĠĠ Ġif Ġ(!( app Prefs . chrome Custom Tabs . value Ġ&& Ġsingle Activity . try Open Custom Tabs ( uri ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Activity . open Default ( uri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcan Go Back () Ġ= Ġfragment Manager . back Stack Entry Count Ġ> Ġ 0 ĊĊĠĠĠ Ġfun Ġback () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( can Go Back ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager . pop Back Stack Immediate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure Toolbar ( toolbar : ĠToolbar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( can Go Back ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . set Navigation Icon ( R . drawable . icon _ back _ 2 4 dp _ black ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ Ġback () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ