package Ġcom . fun ny devs . base Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġcom . blue lin el abs . cond uctor . Controller Ċ import Ġcom . blue lin el abs . cond uctor . aut od is pose . Controller Scope Provider Ċ import Ġcom . fun ny devs . base . di . Base ViewModel Factory Ċ import Ġjavax . inject . Inject Ċ Ċ abstract Ġclass ĠBaseController < G : ĠBase ViewModel >( args : ĠBundle ?) Ġ: ĠController ( args ) Ċ { ĊĠĠĠ Ġ// Navigator Ġinstance ĊĠĠĠ Ġprotected Ġval Ġnavigator Ġby Ġlazy Ġ{ Ġbase Activity ?. get Navigator () Ġ} ĊĠĠĠ Ġ// Scope provider Ġaut od is pose ĊĠĠĠ Ġprotected Ġval Ġscope Provider Ġ= ĠController Scope Provider . from ( this ) ĊĠĠĠ Ġprotected Ġlateinit Ġvar ĠviewModel : ĠG ĊĠĠĠ Ġprotected Ġvar Ġbase Activity : ĠBase Activity ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( activity Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġas ĠBase Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠBase ViewModel Factory ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Context Available ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Context Available ( context ) ĊĠĠĠĠĠĠĠ Ġinject Dependencies () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġinject Dependencies () ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View ( view ) ĊĠĠĠ Ġ} ĊĊ Ċ }