package Ġall anks r . com . firebase . authentication . mvp Microsoft Ċ Ċ import Ġall anks r . com . firebase . R Ċ import Ġall anks r . com . firebase . authentication . Prevent Exit Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġkotlinx . android . synt hetic . main . loading .* Ċ import Ġkotlinx . android . synt hetic . main . microsoft _ layout .* Ċ import Ġjava . security . Secure Random Ċ import Ġjavax . net . ssl .* Ċ Ċ class ĠMicrosoft Ġ: ĠAppCompatActivity (), ĠMicrosoft View , ĠPrevent Exit Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġfirebase Auth : ĠFirebase Auth ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm icrosoft Presenter Ġ: ĠMicrosoft Presenter ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . microsoft _ layout ) ĊĊĠĠĠĠĠĠĠ Ġm icrosoft Presenter Ġ= ĠMicrosoft Imp ( this , Ġthis ) ĊĠĠĠĠĠĠĠ Ġbtn _ connect . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm icrosoft Presenter . microsoft Login ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġm icrosoft Presenter . firebase Auth ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fail ( fail : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtv _ microsoft _ result . text Ġ= Ġfail ĊĠĠĠĠĠĠĠ Ġinclude _ loading . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġla _ loading . cancel Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwait Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġtv _ microsoft _ result . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġinclude _ loading . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġinclude _ loading . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġla _ loading . play Animation () ĊĠĠĠĠĠĠĠ Ġinclude _ loading . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" wait ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonSuccess ( name : ĠString , Ġimage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinclude _ loading . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġla _ loading . cancel Animation () ĊĠĠĠĠĠĠĠ Ġtv _ microsoft _ result . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġrl _ sig in . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġrl _ welcome . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ ĠG lide . with ( this ). load ( image ). into ( iv _ profile ) ĊĠĠĠĠĠĠĠ Ġtv _ name . text Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġbtn _ sign out . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm icrosoft Presenter . sign Out () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sign Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġrl _ sig in . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġrl _ welcome . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Enable s Ġhttps Ġconnections Ġ| ĠNot Ġdo Ġthis Ġin Ġproduction ĊĠĠĠ Ġoverride Ġfun Ġhandle SSL Handshake () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrust All Certs : ĠArray < Trust Manager > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( object Ġ: ĠX 5 0 9 Trust Manager Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Client Trusted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain : ĠArray < out Ġjava . security . cert . X 5 0 9 Certificate > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Type : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" microsoft Success ", Ġ"$ auth Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Server Trusted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain : ĠArray < out Ġjava . security . cert . X 5 0 9 Certificate > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Type : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" microsoft Success ", Ġ"$ auth Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Accepted Iss u ers (): ĠArray < java . security . cert . X 5 0 9 Certificate > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" microsoft Success ", Ġ" get Accepted Iss u ers ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc : ĠSSL Context Ġ= ĠSSL Context . getInstance (" SSL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsc . init ( null , Ġtrust All Certs , ĠSecure Random ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp s URLConnection . setDefault SS LS ocket Factory ( sc . socket Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp s URLConnection . setDefault Hostname Verifier Ġ{ Ġ_, Ġ_ Ġ-> Ġtrue Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" microsoft Success ", Ġ"$ ignored ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġed t _ email . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġbtn _ connect . text Ġ= ĠgetString ( R . string . provider ) ĊĠĠĠĠĠĠĠ Ġbtn _ connect . setBackground Resource ( R . drawable . button _ red ) ĊĠĠĠĠĠĠĠ Ġbtn _ connect . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm icrosoft Presenter . find Provider ( this , Ġed t _ email . text . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwait To Exit () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠgetString ( R . string . wait ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexit Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġm icrosoft Presenter . exit Activity () ĊĠĠĠ Ġ} Ċ }