package Ġcom . rog ert alk . ro ger . ui . screens Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġcom . rog ert alk . kotlin j ub atus . LONG _ ANIM _ DURATION Ċ import Ġcom . rog ert alk . kotlin j ub atus . be G one Ċ import Ġcom . rog ert alk . kotlin j ub atus . fadeIn Ċ import Ġcom . rog ert alk . ro ger . R Ċ import Ġcom . rog ert alk . ro ger . manager . Event Tracking Manager Ċ import Ġcom . rog ert alk . ro ger . manager . Local Invite Manager Ċ import Ġcom . rog ert alk . ro ger . models . json . Stream Ċ import Ġcom . rog ert alk . ro ger . repo . Stream Cache Repo Ċ import Ġcom . rog ert alk . ro ger . repo . User Account Repo Ċ import Ġcom . rog ert alk . ro ger . ui . screens . base . Base AppCompatActivity Ċ import Ġcom . rog ert alk . ro ger . utils . android . Share Utils Ċ import Ġcom . rog ert alk . ro ger . utils . constant . NO _ ID Ċ import Ġcom . rog ert alk . ro ger . utils . extensions . string Resource Ċ import Ġcom . rog ert alk . ro ger . utils . image . Round Image Utils Ċ import Ġcom . rog ert alk . ro ger . utils . log . log Debug Ċ import Ġcom . rog ert alk . ro ger . utils . phone . Phone Utils Ċ import Ġkotlinx . android . synt hetic . main . invite _ after _ talk ing _ screen .* Ċ import Ġjava . util .* Ċ import Ġkotlin . Lazy Thread Safety Mode . NONE Ċ Ċ class ĠInv ite Activity Ġ: ĠBase AppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX TRA _ TOKEN Ġ= Ġ" token " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX TRA _ STREAM _ ID Ġ= Ġ" stream Id " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX TRA _ P ARTIC IP ANT _ NAME Ġ= Ġ" participant Name " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX TRA _ PHONE _ LIST Ġ= Ġ" phone List " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX TRA _ OPEN _ GROUP Ġ= Ġ" open Group " ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext , Ġtoken : ĠString , Ġparticipant Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphone List : ĠArrayList < String >, Ġstream Id : ĠLong , ĠisOpen Group : ĠBoolean ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Intent Ġ= ĠIntent ( context , ĠInv ite Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Intent . putExtra ( EXTRA _ TOKEN , Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Intent . putExtra ( EXTRA _ STREAM _ ID , Ġstream Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Intent . putExtra ( EXTRA _ P ARTIC IP ANT _ NAME , Ġparticipant Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Intent . putExtra ( EXTRA _ PHONE _ LIST , Ġphone List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Intent . putExtra ( EXTRA _ OPEN _ GROUP , ĠisOpen Group ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstart Intent ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshare Via Other ( context : ĠContext , Ġtoken : ĠString , ĠisOpen Group : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgroupName : ĠString ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Account Ġ= ĠUser Account Repo . current () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Tracking Manager . inv itation ( Event Tracking Manager . Invitation Method . ONE _ ON _ ONE _ OTHER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlink Ġ= Ġ" Ġ${ Share Utils . get Complete Share Url ( user Account , Ġtoken , ĠisOpen Group )}" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isOpen Group ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= ĠgroupName Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= ĠR . string . inv itation _ send _ email _ cho oser . string Resource ( group ) Ġ+ Ġlink ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= ĠR . string . inv itation _ message . string Resource () Ġ+ Ġlink ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠShare Utils . share Audio Link ( message , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠEx tras ĊĠĠĠ Ġprivate Ġval Ġtoken : ĠString Ġby Ġlazy ( NONE ) Ġ{ Ġintent . getString Extra ( EXTRA _ TOKEN ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġstream Id : ĠLong Ġby Ġlazy ( NONE ) Ġ{ Ġintent . getLong Extra ( EXTRA _ STREAM _ ID , ĠNO _ ID ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġparticipant Name : ĠString Ġby Ġlazy ( NONE ) Ġ{ Ġintent . getString Extra ( EXTRA _ P ARTIC IP ANT _ NAME ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġphone List : ĠArrayList < String > Ġby Ġlazy ( NONE ) Ġ{ Ġintent . getString ArrayList Extra ( EXTRA _ PHONE _ LIST ) Ġ} ĊĠĠĠ Ġprivate Ġval ĠisOpen Group : ĠBoolean Ġby Ġlazy ( NONE ) Ġ{ Ġintent . getBoolean Extra ( EXTRA _ OPEN _ GROUP , Ġfalse ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġstream : ĠStream ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStream Cache Repo . get Stream ( stream Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOVER RIDE ĠMETHO DS ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . invite _ after _ talk ing _ screen ) ĊĠĠĠĠĠĠĠ Ġsetup UI () ĊĊĠĠĠĠĠĠĠ Ġ// ĠClear Ġmemory ĊĠĠĠĠĠĠĠ ĠLocal Invite Manager . new ly Inv ited Participants Ġ= ĠArrayList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġsupport Finish After Transition () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠPUBLIC ĠMETHO DS ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠPRIVATE ĠMETHO DS ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġprivate Ġfun Ġsetup UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoad ĠAvatar ĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠStream Cache Repo . get Stream ( stream Id ) ĊĠĠĠĠĠĠĠ Ġstream ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphoto Ġ= Ġstream . image URL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( photo Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRound Image Utils . create Round Image Main Avatar ( this , Ġcontact Photo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphoto ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlog Debug Ġ{ Ġ" Phone Ġnumbers Ġlist : Ġ$ phone List " Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe al Ġwith Ġeach Ġinvite Ġflow Ġcase Ġseparately ĊĠĠĠĠĠĠĠ Ġif Ġ( isOpen Group ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup UI For Open Group () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup UI For Normal Invite () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġother Ġcomponents Ġappear ĊĠĠĠĠĠĠĠ Ġouter Circle . fadeIn ( LONG _ ANIM _ DURATION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Conversation Description . fadeIn () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup UI For Open Group () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠgroupName Ġ= Ġstream ?. title Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġstart Conversation Description . text Ġ= ĠR . string . invite _ open _ group _ main . string Resource ( groupName ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġopen Ġgroups , Ġalways Ġshare Ġvia Ġmultiple Ġoptions ĊĠĠĠĠĠĠĠ Ġother Sharing Options Button . be G one () ĊĠĠĠĠĠĠĠ Ġsend Button . setOnClickListener Ġ{ Ġshare Via Other ( true ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup UI For Normal Invite () Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Conversation Description . text Ġ= ĠR . string . invite _ start _ conversation _ description . string Resource ( participant Name ) ĊĠĠĠĠĠĠĠ Ġval Ġcan Send Sms Ġ= ĠPhone Utils . can Send Sms () ĊĠĠĠĠĠĠĠ Ġval Ġis Group Ġ= Ġphone List . size Ġ> Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( can Send Sms ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Button . setText ( R . string . invite _ send _ via _ sms _ button _ label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Button . setOnClickListener Ġ{ Ġshare Via SMS () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Group ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Sharing Options Button . be G one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Sharing Options Button . setOnClickListener Ġ{ Ġshare Via Other ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġdevice Ġcannot Ġsend ĠSMS ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Sharing Options Button . be G one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Button . setOnClickListener Ġ{ Ġshare Via Other ( false ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshare Via SMS () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Account Ġ= ĠUser Account Repo . current () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠR . string . inv itation _ message . string Resource () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ${ Share Utils . get Complete Share Url ( user Account , Ġtoken , ĠisOpen Group Ġ= Ġfalse )}" ĊĠĠĠĠĠĠĠ ĠEvent Tracking Manager . inv itation ( Event Tracking Manager . Invitation Method . ONE _ ON _ ONE _ SMS ) ĊĠĠĠĠĠĠĠ ĠShare Utils . share Via SMS ( message , Ġphone List , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshare Via Other ( isOpen Group : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshare Via Other ( this , Ġtoken , ĠisOpen Group , Ġparticipant Name ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ Ċ }