package Ġcom . k ou . seek make . screens . share Ċ Ċ import Ġandroid . net . Uri Ċ import Ġcom . google . android . gms . tasks . On Failure Listener Ċ import Ġcom . k ou . seek make . common . Single Live Event Ċ import Ġcom . k ou . seek make . data . firebase . Feed Posts Repository Ċ import Ġcom . k ou . seek make . data . firebase . Users Repository Ċ import Ġcom . k ou . seek make . models . Firebase . Feed Post Ċ import Ġcom . k ou . seek make . models . Firebase . User Ċ import Ġcom . k ou . seek make . screens . common . Base ViewModel Ċ Ċ class ĠShare ViewModel ( private Ġval Ġfeed Posts Repo : ĠFeed Posts Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġusers Repo : ĠUsers Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure Listener : ĠOn Failure Listener ) Ġ: ĠBase ViewModel ( on Failure Listener ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ share Completed Event Ġ= ĠSingle Live Event < Unit >() ĊĠĠĠ Ġval Ġshare Completed Event Ġ= Ġ_ share Completed Event ĊĠĠĠ Ġval Ġuser Ġ= Ġusers Repo . getUser () ĊĊĊĠĠĠ Ġfun Ġshare ( user : ĠUser , Ġimage U ris : ĠList < Uri >, Ġcaption : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollected Urls Ġ= Ġarray ListOf < String >() ĊĠĠĠĠĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( image Uri Ġin Ġimage U ris ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġusers Repo . upload User Image ( user . uid , Ġimage Uri ). on Success Task Ġ{ Ġdownload Url Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollected Urls . add ( download Url . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusers Repo . setUser Image ( user . uid , Ġdownload Url !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Complete Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( counter Ġ== Ġimage U ris . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Posts Repo . create Feed Post ( user . uid , Ġmk Feed Post ( user , Ġcaption , Ġcollected Urls )). add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ share Completed Event . call () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener ( on Failure Listener ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmk Feed Post ( user : ĠUser , Ġcaption : ĠString , Ġimage Download Url : ĠList < String >): ĠFeed Post Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFeed Post ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuid Ġ= Ġuser . uid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġuser . username , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= Ġimage Download Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcaption Ġ= Ġcaption , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Ġ= Ġuser . photo ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }