package Ġio . dol by . sdk . com ms . react native . services Ċ Ċ import Ġcom . facebook . react . bridge . React ApplicationContext Ċ import Ġcom . facebook . react . bridge . React Method Ċ import Ġcom . facebook . react . bridge . Readable Map Ċ import Ġcom . v ox e et . sdk . services . Conference Service Ċ import Ġcom . v ox e et . sdk . services . File Presentation Service Ċ import Ġcom . v ox e et . sdk . services . Session Service Ċ import Ġcom . v ox e et . sdk . services . presentation . file . File Presentation Ċ import Ġio . dol by . sdk . com ms . react native . event emitter s . RN File Presentation EventEmitter Ċ import Ġio . dol by . sdk . com ms . react native . mapper . File Presentation Mapper Ċ import Ġio . dol by . sdk . com ms . react native . state . File Presentation Holder Ċ import Ġio . dol by . sdk . com ms . react native . utils . Promises Ċ import Ġio . dol by . sdk . com ms . react native . utils . Promises . forward Ċ import Ġio . dol by . sdk . com ms . react native . utils . Promises . reject If Null Ċ import Ġio . dol by . sdk . com ms . react native . utils . Promises . then Nested Promise Ċ import Ġio . dol by . sdk . com ms . react native . utils . Promises . then Promise Ċ import Ġio . dol by . sdk . com ms . react native . utils . Promises . then Value Ċ import Ġio . dol by . sdk . com ms . react native . utils . React Promise Ċ import Ġio . dol by . sdk . com ms . react native . utils . Rn Collections . copy Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠThe Ġ[ RN File Presentation Service Module ] Ġallows Ġpresent ing Ġfiles Ġduring Ġa Ġconference . Ċ Ġ* ĠThe ĠDol by . io ĠCom munications ĠAPIs Ġservice Ġconverts Ġthe Ġuser - provided Ġfile Ġinto Ġmultiple Ġpages , Ġas Ġimages , Ġaccessible Ġthrough Ġthe Ġimage Ġmethod . Ċ Ġ* Ċ Ġ* Ġ** The Ġfile Ġpresentation Ġworkflow :** Ċ Ġ* Ġ 1 . ĠThe Ġpresenter Ġcalls Ġthe Ġ[ convert ] Ġmethod Ġto Ġupload Ġand Ġconvert Ġa Ġfile . Ċ Ġ* Ġ 2 . ĠThe Ġpresenter Ġcalls Ġthe Ġ[ start ] Ġmethod Ġto Ġstart Ġpresent ing Ġthe Ġfile . Ċ Ġ* Ġ 3 . ĠThe Ġpresenter Ġand Ġthe Ġview ers Ġreceive Ġthe Ġstarted Ġevent Ġthat Ġinform s Ġthat Ġthe Ġfile Ġpresentation Ġstarts . Ċ Ġ* ĠRe ceiving Ġthe Ġstarted Ġevent Ġshould Ġtrigger Ġcalling Ġthe Ġ[ getImage ] Ġmethod Ġto Ġdownload Ġthe Ġconverted Ġfile Ġand Ġdisplay Ġthe Ġproper Ġpage Ġof Ġthe Ġfile Ċ Ġ* Ġby Ġretrieving Ġthe Ġindividual Ġimages . Ċ Ġ* Ġ 4 . ĠThe Ġapplication Ġis Ġresponsible Ġfor Ġcoord in ating Ġthe Ġpage Ġflip Ġbetween Ġthe Ġlocal Ġand Ġthe Ġpresented Ġfiles . ĠThe Ġpresenter Ġcalls Ġthe Ġ[ set Page ] Ġmethod Ġto Ġinform Ġthe Ġservice Ġto Ġsend Ġthe Ġupdated Ġpage Ġnumber Ġto Ġthe Ġparticipants . Ċ Ġ* Ġ 5 . ĠThe Ġpresenter Ġand Ġview ers Ġreceive Ġthe Ġupdated Ġevent Ġwith Ġthe Ġcurrent Ġpage Ġnumber . Ċ Ġ* ĠRe ceiving Ġthe Ġupdated Ġevent Ġshould Ġtrigger Ġcalling Ġthe Ġimage Ġmethod Ġto Ġdisplay Ġthe Ġproper Ġpage Ġof Ġthe Ġfile Ġby Ġretrieving Ġthe Ġindividual Ġimages . Ċ Ġ* Ġ 6 . ĠThe Ġpresenter Ġmay Ġcall Ġthe Ġ[ get Thumbnail ] Ġmethod Ġto Ġobtain Ġthumbnail Ġimages Ġof Ġthe Ġfile Ċ Ġ* Ġand Ġimplement Ġa Ġcarousel Ġcontrol Ġfor Ġthe Ġpresent ing Ġuser Ġto Ġflip Ġpages Ġlocally . Ċ Ġ* Ġ 7 . ĠThe Ġpresenter Ġcalls Ġthe Ġ[ stop ] Ġmethod Ġto Ġend Ġthe Ġfile Ġpresentation . Ċ Ġ* Ġ 8 . ĠThe Ġpresenter Ġand Ġthe Ġview ers Ġreceive Ġthe Ġstopped Ġevent Ġto Ġinform Ġabout Ġthe Ġend Ġof Ġthe Ġfile Ġpresentation . Ċ Ġ* Ċ Ġ* ĠThe Ġ[ getCurrent ] Ġaccessor Ġallows Ġthe Ġparticipants Ġto Ġreceive Ġinformation Ġabout Ġthe Ġcurrent Ġstate Ġof Ġthe Ġfile Ġpresentation . Ċ Ġ* Ċ Ġ* Ġ@ param Ġreact Context ĠĠĠĠĠĠĠĠĠĠĠ Ġreact Ġcontext Ċ Ġ* Ġ@ param Ġsession Service ĠĠĠĠĠĠĠĠĠ Ġ[ Session Service ] Ġfrom ĠAndroid ĠSDK Ċ Ġ* Ġ@ param Ġfile Presentation Service Ġ[ File Presentation Service ] Ġfrom ĠAndroid ĠSDK Ċ Ġ* Ġ@ param Ġfile Presentation Holder Ġ Ġstarted Ġ[ File Presentation ] Ġdata Ġstorage Ċ Ġ* Ġ@ param Ġfile Presentation Mapper Ġ Ġmapper Ġfor Ġ[ File Presentation ] Ġmodel Ġand Ġ[ File ] Ġcreation Ċ Ġ*/ Ċ class ĠRN File Presentation Service Module ( ĊĠ Ġreact Context : ĠReact ApplicationContext , ĊĠ Ġprivate Ġval Ġevent Emitter : ĠRN File Presentation EventEmitter , ĊĠ Ġprivate Ġval Ġsession Service : ĠSession Service , ĊĠ Ġprivate Ġval Ġconference Service : ĠConference Service , ĊĠ Ġprivate Ġval Ġfile Presentation Service : ĠFile Presentation Service , ĊĠ Ġprivate Ġval Ġfile Presentation Holder : ĠFile Presentation Holder , ĊĠ Ġprivate Ġval Ġfile Presentation Mapper : ĠFile Presentation Mapper Ċ ) Ġ: ĠRN EventEmitter Module ( react Context , Ġevent Emitter ) Ġ{ ĊĊĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= Ġ" Com ms API File Presentation Service Module " ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠConverts Ġthe Ġuser - provided Ġfile Ġinto Ġmultiple Ġpages , Ġas Ġimages , Ġthat Ġcan Ġbe Ġshared Ġduring Ġthe Ġfile Ġpresentation . ĊĠĠ Ġ* ĠThe Ġfile Ġis Ġuploaded Ġas ĠFormData . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠSupported Ġfile Ġformats Ġare : ĊĠĠ Ġ* Ġ- Ġdoc / docx Ġ( Microsoft ĠWord ) ĊĠĠ Ġ* Ġ- Ġp pt / ppt x ĊĠĠ Ġ* Ġ- Ġpdf ĊĠĠ Ġ* ĊĠĠ Ġ* ĠAfter Ġconversion , Ġthe Ġfiles Ġare Ġbroken Ġinto Ġindividual Ġimages Ġwith Ġmaximum Ġresolution Ġc apped Ġat Ġ 2 5 6 0 x 1 6 0 0 . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠOnly Ġthe Ġconverted Ġfiles Ġcan Ġbe Ġshared Ġduring Ġcon fer ences . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġfile RN Ġmap Ġwith Ġurl Ġto Ġfile . ĠThis Ġshould Ġbe Ġa Ġcontent :// ĠURI Ġfor Ġa Ġdocument Ġprovided Ġby Ġa ĠDocument Provider ĊĠĠ Ġ* Ġthat Ġmust Ġbe Ġaccessed Ġwith Ġa ĠContent Resolver . ĊĠĠ Ġ* Ġ@ param Ġpromise Ġreturns Ġconverted Ġfile Ġinformation ĊĠĠ Ġ*/ ĊĠ Ġ@ React Method ĊĠ Ġfun Ġconvert ( file RN : ĠRead able Map , Ġpromise : ĠReact Promise ) Ġ{ ĊĠĠĠ ĠPromise s . promise ({ Ġfile Presentation Mapper . file From RN ( file RN ) Ġ}) ĊĠĠĠĠĠ Ġ. then Nested Promise Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠ Ġfile Presentation Service . convert ( file ). then Value Ġ{ Ġfile Ġto Ġit Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. then Value Ġ{ Ġ( file , Ġfile Presentation ) Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġowner Id Ġ= Ġrequire NotNull ( session Service . participant Id ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Converted RN Ġ= Ġfile Presentation Mapper . to RN File Converted ( owner Id , Ġfile . name , Ġfile Presentation ) ĊĠĠĠĠĠĠĠ Ġevent Emitter . on File Converted ( file Converted RN . copy ()) ĊĠĠĠĠĠĠĠ Ġfile Converted RN ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. forward ( promise ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠStarts Ġa Ġfile Ġpresentation . ĠThe ĠDol by . io ĠCom munications ĠAPIs Ġallow Ġpresent ing Ġonly Ġthe Ġconverted Ġfiles . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġfile Converted RN Ġpreviously Ġconverted Ġfile Ġinformation ĊĠĠ Ġ* Ġ@ param Ġpromise Ġreturn Ġnull ĊĠĠ Ġ*/ ĊĠ Ġ@ React Method ĊĠ Ġfun Ġstart ( file Converted RN : ĠRead able Map , Ġpromise : ĠReact Promise ) Ġ{ ĊĠĠĠ ĠPromise s . promise ({ Ġfile Presentation Mapper . file Converted From RN ( file Converted RN ) Ġ}) ĊĠĠĠĠĠ Ġ. then Promise ( file Presentation Service :: start ) ĊĠĠĠĠĠ Ġ. forward ( promise , Ġignore ReturnType Ġ= Ġtrue ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSto ps Ġthe Ġfile Ġpresentation . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġpromise Ġreturn Ġnull ĊĠĠ Ġ*/ ĊĠ Ġ@ React Method ĊĠ Ġfun Ġstop ( promise : ĠReact Promise ) Ġ{ ĊĠĠĠ ĠgetCurrent File Id () ĊĠĠĠĠĠ Ġ. then Promise ( file Presentation Service :: stop ) ĊĠĠĠĠĠ Ġ. forward ( promise , Ġignore ReturnType Ġ= Ġtrue ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġinformation Ġabout Ġthe Ġcurrent Ġfile Ġpresentation . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠUse Ġthis Ġaccessor Ġif Ġyou Ġwish Ġto Ġreceive Ġinformation Ġthat Ġis Ġavailable Ġin Ġthe Ġ[ File Presentation ] Ġobject , Ġsuch Ġas ĊĠĠ Ġ* Ġthe Ġfile ĠID , Ġthe Ġnumber Ġof Ġimages Ġin Ġthe Ġpresentation , Ġinformation Ġabout Ġthe Ġfile Ġowner , Ġor Ġthe Ġcurrent Ġposition Ġin Ġthe Ġpresentation . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġpromise Ġreturns Ġcurrent Ġfile Ġpresentation ĊĠĠ Ġ*/ ĊĠ Ġ@ React Method ĊĠ Ġfun ĠgetCurrent ( promise : ĠReact Promise ) Ġ{ ĊĠĠĠ ĠPromise s . promise ({ Ġconference Service . conference Ġ}) Ġ{ Ġ" Missing Ġcurrent Ġconference " Ġ} ĊĠĠĠĠĠ Ġ. then Value Ġ{ Ġconference Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġno Started Presentation Error Ġ= Ġlazy Of ( Exception (" No Ġstarted Ġfile Ġpresentation Ġfor Ġcurrent Ġconference ")) ĊĠĠĠĠĠĠĠ Ġval Ġowner Id Ġ= Ġfile Presentation Holder . get OwnerId ( conference . id ) Ġ?: Ġthrow Ġno Started Presentation Error . value ĊĠĠĠĠĠĠĠ Ġval Ġpresentation Ġ= Ġfile Presentation Holder . get Presentation ( conference . id ) Ġ?: Ġthrow Ġno Started Presentation Error . value ĊĠĠĠĠĠĠĠ Ġval Ġno Presentation Owner Error Ġ= Ġlazy Of ( Exception (" Unable Ġto Ġfind Ġfile Ġpresentation Ġowner Ġby Ġid Ġ= Ġ Ġ$ owner Id ")) ĊĠĠĠĠĠĠĠ Ġval Ġowner Ġ= Ġconference . find Participant ById ( owner Id ) Ġ?: Ġthrow Ġno Presentation Owner Error . value ĊĠĠĠĠĠĠĠ Ġowner Ġto Ġpresentation ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. then Value Ġ{ Ġ( owner , Ġpresentation ) Ġ-> Ġfile Presentation Mapper . to RN ( owner , Ġpresentation ) Ġ} ĊĠĠĠĠĠ Ġ. forward ( promise ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠProvides Ġthe Ġimage 's ĠURL Ġthat Ġrefers Ġto Ġa Ġspecific Ġpage Ġof Ġthe Ġpresented Ġfile . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġpage ĠThe Ġnumber Ġof Ġthe Ġpresented Ġpage . ĠFiles Ġthat Ġdo Ġnot Ġhave Ġany Ġpages , Ġfor Ġexample Ġj pg Ġimages , ĊĠĠ Ġ* Ġrequire Ġsetting Ġthe Ġvalue Ġof Ġthe Ġpage Ġparameter Ġto Ġ 0 . ĊĠĠ Ġ* Ġ@ param Ġpromise Ġreturns ĠURL Ġof Ġthe Ġindividual Ġpage Ġimage ĊĠĠ Ġ*/ ĊĠ Ġ@ React Method ĊĠ Ġfun ĠgetImage ( page : ĠInt , Ġpromise : ĠReact Promise ) Ġ{ ĊĠĠĠ ĠgetCurrent File Id () ĊĠĠĠĠĠ Ġ. then Value Ġ{ Ġfile Presentation Service . image ( it , Ġpage ) Ġ} ĊĠĠĠĠĠ Ġ. forward ( promise ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠProvides Ġthe Ġthumbnail 's ĠURL Ġthat Ġrefers Ġto Ġa Ġspecific Ġpage Ġof Ġthe Ġpresented Ġfile . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġpage ĠThe Ġnumber Ġof Ġthe Ġpresented Ġpage . ĠFiles Ġthat Ġdo Ġnot Ġinclude Ġany Ġpages , Ġfor Ġexample Ġj pg Ġimages , ĊĠĠ Ġ* Ġrequire Ġsetting Ġthe Ġvalue Ġof Ġthis Ġparameter Ġto Ġ 0 . ĊĠĠ Ġ* Ġ@ param Ġpromise Ġreturns ĠURL Ġof Ġthe Ġindividual Ġpage Ġthumbnail ĊĠĠ Ġ*/ ĊĠ Ġ@ React Method ĊĠ Ġfun Ġget Thumbnail ( page : ĠInt , Ġpromise : ĠReact Promise ) Ġ{ ĊĠĠĠ ĠgetCurrent File Id () ĊĠĠĠĠĠ Ġ. then Value Ġ{ Ġfile Presentation Service . thumbnail ( it , Ġpage ) Ġ} ĊĠĠĠĠĠ Ġ. forward ( promise ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠIn forms Ġthe Ġservice Ġto Ġsend Ġthe Ġupdated Ġpage Ġnumber Ġto Ġthe Ġconference Ġparticipants . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġpage ĠThe Ġpage Ġnumber Ġthat Ġcorresponds Ġto Ġthe Ġpage Ġthat Ġshould Ġbe Ġpresented . ĊĠĠ Ġ* Ġ@ param Ġpromise Ġreturns Ġnull ĊĠĠ Ġ*/ ĊĠ Ġ@ React Method ĊĠ Ġfun Ġset Page ( page : ĠInt , Ġpromise : ĠReact Promise ) Ġ{ ĊĠĠĠ ĠgetCurrent File Id () ĊĠĠĠĠĠ Ġ. then Promise Ġ{ Ġfile Presentation Service . update ( it , Ġpage ) Ġ} ĊĠĠĠĠĠ Ġ. forward ( promise , Ġignore ReturnType Ġ= Ġtrue ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠEvery Ġemitter Ġmodule Ġmust Ġimplement Ġthis Ġmethod Ġin Ġplace , Ġotherwise ĠJS Ġcannot Ġreceive Ġevent ĊĠĠ Ġ*/ ĊĠ Ġ@ React Method ĊĠ Ġoverride Ġfun Ġadd Listener ( eventName : ĠString ) Ġ= Ġsuper . addListener ( eventName ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠEvery Ġemitter Ġmodule Ġmust Ġimplement Ġthis Ġmethod Ġin Ġplace , Ġotherwise ĠJS Ġcannot Ġreceive Ġevent ĊĠĠ Ġ*/ ĊĠ Ġ@ React Method ĊĠ Ġoverride Ġfun Ġremove Listeners ( count : ĠInt ) Ġ= Ġsuper . remove Listeners ( count ) ĊĊĠ Ġprivate Ġfun ĠgetCurrent File Id () Ġ= ĠPromise s ĊĠĠĠ Ġ. promise ( conference Service :: get Conference Id ) Ġ{ Ġ" Missing Ġcurrent Ġconference " Ġ} ĊĠĠĠ Ġ. then Value ( file Presentation Holder :: get Presentation ) ĊĠĠĠ Ġ. reject If Null Ġ{ Ġ" No Ġstarted Ġfile Ġpresentation " Ġ} ĊĠĠĠ Ġ. then Value Ġ{ Ġit . key Ġ} Ċ } Ċ