/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠMatrix . org ĠFoundation ĠC . I . C . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . matrix . android . sdk . internal . session . group Ċ Ċ import Ġcom . zh u inden . mon arch y . Mon arch y Ċ import Ġorg . matrix . android . sdk . api . session . room . model . Membership Ċ import Ġorg . matrix . android . sdk . internal . database . model . Group Entity Ċ import Ġorg . matrix . android . sdk . internal . database . model . Group Summary Entity Ċ import Ġorg . matrix . android . sdk . internal . database . query . get OrCreate Ċ import Ġorg . matrix . android . sdk . internal . database . query . where Ċ import Ġorg . matrix . android . sdk . internal . di . Session Database Ċ import Ġorg . matrix . android . sdk . internal . network . Global Error Receiver Ċ import Ġorg . matrix . android . sdk . internal . network . execute Request Ċ import Ġorg . matrix . android . sdk . internal . session . group . model . Group Rooms Ċ import Ġorg . matrix . android . sdk . internal . session . group . model . Group Summary Response Ċ import Ġorg . matrix . android . sdk . internal . session . group . model . Group Users Ċ import Ġorg . matrix . android . sdk . internal . task . Task Ċ import Ġorg . matrix . android . sdk . internal . util . await Transaction Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ internal Ġinterface ĠGet GroupData Task Ġ: ĠTask < Get GroupData Task . Params , ĠUnit > Ġ{ ĊĠĠĠ Ġsealed Ġclass ĠParams Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠFetch All Active Ġ: ĠParams () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠFetch With Ids ( val Ġgroup Ids : ĠList < String >) Ġ: ĠParams () ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠDefault Get GroupData Task Ġ@ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġgroup API : ĠGroup API , ĊĠĠĠĠĠĠĠ Ġ@ Session Database Ġprivate Ġval Ġmon arch y : ĠMon arch y , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġglobal Error Receiver : ĠGlobal Error Receiver Ċ ) Ġ: ĠGet GroupData Task Ġ{ ĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠGroup Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠgroupId : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Summary : ĠGroup Summary Response , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Rooms : ĠGroup Rooms , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Users : ĠGroup Users ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( params : ĠGet GroupData Task . Params ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ids Ġ= Ġwhen Ġ( params ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGet GroupData Task . Params . Fetch All Active Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Active Group Ids () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGet GroupData Task . Params . Fetch With Ids Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . group Ids ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTim ber . v (" Fetch Ġdata Ġfor Ġgroup Ġwith Ġids : Ġ${ group Ids . join ToString ("; ") }") ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġgroup Ids . map Ġ{ ĠgroupId Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Summary Ġ= Ġexecute Request ( global Error Receiver ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup API . get Summary ( groupId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Rooms Ġ= Ġexecute Request ( global Error Receiver ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup API . get Rooms ( groupId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Users Ġ= Ġexecute Request ( global Error Receiver ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup API . get Users ( groupId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGroup Data ( groupId , Ġgroup Summary , Ġgroup Rooms , Ġgroup Users ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinsert In Db ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Active Group Ids (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmon arch y . fetch All Mapped Sync ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġrealm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGroup Entity . where ( realm , ĠMembers hip . active Membership s ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġit . groupId Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġinsert In Db ( group DataList : ĠList < GroupData >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmon arch y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. await Transaction Ġ{ Ġrealm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup DataList . forEach Ġ{ Ġgroup Data Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Summary Entity Ġ= ĠGroup Summary Entity . get OrCreate ( realm , Ġgroup Data . groupId ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Summary Entity . avatar Url Ġ= Ġgroup Data . group Summary . profile ?. avatar Url Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġgroup Data . group Summary . profile ?. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Summary Entity . displayName Ġ= Ġif Ġ( name . isNull OrEmpty ()) Ġgroup Data . groupId Ġelse Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Summary Entity . short Description Ġ= Ġgroup Data . group Summary . profile ?. short Description Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Summary Entity . room Ids . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Data . group Rooms . rooms . map To ( group Summary Entity . room Ids ) Ġ{ Ġit . roomId Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Summary Entity . user Ids . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Data . group Users . users . map To ( group Summary Entity . user Ids ) Ġ{ Ġit . userId Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ