/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 1 8 ĠT ua ĠR ua ĠLtd . Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ġcom . tu ar ua . firebase . dynamic links Ċ Ċ import Ġandroid . net . Uri Ċ import Ġcom . adobe . fre . F RE Context Ċ import Ġcom . adobe . fre . F RE Object Ċ import Ġcom . tu ar ua . fre kotlin .* Ċ import Ġjava . util .* Ċ import Ġcom . google . firebase . dynamic links . Firebase Dynamic Links Ċ import Ġcom . google . gson . Gson Ċ import Ġandroid . content . Clip Data Ċ import Ġandroid . content . Clipboard Manager Ċ import Ġandroid . content . Context Ċ import Ġcom . tu ar ua . firebase . dynamic links . events . Dynamic Link Event ĊĊ Ċ @ Suppress (" unused ", Ġ" UNUSED _ PARAMETER ", Ġ" UN CHECK ED _ CAST ", Ġ" Private PropertyName ") Ċ class ĠKotlin Controller Ġ: ĠFre Kotlin Main Controller Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTRACE Ġ= Ġ" TRACE " ĊĠĠĠ Ġprivate Ġval Ġgson Ġ= ĠGson () ĊĊĠĠĠ Ġfun Ġcreate GUID ( ctx : ĠF RE Context , Ġargv : ĠF RE Arg v ): ĠF RE Object ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUUID . randomUUID (). toString (). to F RE Object () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit ( ctx : ĠF RE Context , Ġargv : ĠF RE Arg v ): ĠF RE Object ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue . to F RE Object () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild Dynamic Link ( ctx : ĠF RE Context , Ġargv : ĠF RE Arg v ): ĠF RE Object ? Ġ{ ĊĠĠĠĠĠĠĠ Ġargv . take If Ġ{ Ġargv . size Ġ> Ġ 4 Ġ} Ġ?: Ġreturn ĠFre Arg Exception (" create Dynamic Link ") ĊĠĠĠĠĠĠĠ Ġval Ġlink Fre Ġ= Ġargv [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġevent Id Ġ= ĠString ( argv [ 1 ]) Ġ?: Ġreturn ĠFre Conversion Exception (" eventId ") ĊĠĠĠĠĠĠĠ Ġval Ġcopy To Clipboard Ġ= ĠBoolean ( argv [ 2 ]) Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġshort en Ġ= ĠBoolean ( argv [ 3 ]) Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġsuffix Ġ= ĠInt ( argv [ 4 ]) Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġlink Ġ= ĠString ( link Fre [" link "]) ĊĠĠĠĠĠĠĠ Ġval Ġdynamic Link Domain Ġ= ĠString ( link Fre [" dynamic Link Domain "]) ĊĠĠĠĠĠĠĠ Ġval Ġios Parameters Ġ= ĠI os Parameters ( link Fre [" ios Parameters "]) ĊĠĠĠĠĠĠĠ Ġval Ġandroid Parameters Ġ= ĠAndroid Parameters ( link Fre [" android Parameters "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠFre Arg Exception (" android Parameters ") ĊĠĠĠĠĠĠĠ Ġval Ġgoogle Analytics Parameters Ġ= ĠGoogle Analytics Parameters ( link Fre [" google Analytics Parameters "]) ĊĠĠĠĠĠĠĠ Ġval Ġit unes Connect Analytics Parameters Ġ= ĠIt unes Connect Analytics Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Fre [" it unes Connect Analytics Parameters "] ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsocial Meta Tag Parameters Ġ= ĠSocial Meta Tag Parameters ( link Fre [" social Meta Tag Parameters "]) ĊĠĠĠĠĠĠĠ Ġval Ġnavigation Info Parameters Ġ= ĠNavigation Info Parameters ( link Fre [" navigation Info Parameters "]) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠFirebase Dynamic Links . getInstance (). create Dynamic Link () ĊĠĠĠĠĠĠĠ Ġif Ġ(! link . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Link ( Uri . parse ( link )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( dynamic Link Domain Ġ!= Ġnull Ġ&& Ġ! dynamic Link Domain . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Dynamic Link Domain ( dynamic Link Domain ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . set Android Parameters ( android Parameters ) ĊĠĠĠĠĠĠĠ Ġif Ġ( ios Parameters Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set I os Parameters ( ios Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( google Analytics Parameters Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Google Analytics Parameters ( google Analytics Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( it unes Connect Analytics Parameters Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set It unes Connect Analytics Parameters ( it unes Connect Analytics Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( social Meta Tag Parameters Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Social Meta Tag Parameters ( social Meta Tag Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( navigation Info Parameters Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Navigation Info Parameters ( navigation Info Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( short en ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdynamic Link Ġ= Ġbuilder . build Short Dynamic Link ( suffix ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Link . add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwarnings : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . result . warnings . map To ( warnings ) Ġ{ Ġit . message Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( copy To Clipboard ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġact Ġ= Ġctx . activity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcb Ġ= Ġact . getSystem Service ( Context . CLIP BOARD _ SERVICE ) Ġas ĠClip board Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb . primary Clip Ġ= ĠClip Data . new Plain Text (" short Ġlink ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . result . short Link . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Event ( Dynamic Link Event . ON _ CREATED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgson . toJson ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Link Event ( eventId , Ġtrue , Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" preview Link " Ġto Ġtask . result . preview Link . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" short Link " Ġto Ġtask . result . short Link . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" warnings " Ġto Ġwarnings )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġtask . exception ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Event ( Dynamic Link Event . ON _ CREATED , Ġgson . toJson ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Link Event ( eventId , Ġtrue , Ġnull , Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" text " Ġto Ġerror ?. localized Message . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id " Ġto Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdynamic Link Ġ= Ġbuilder . build Dynamic Link () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( copy To Clipboard ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġact Ġ= Ġctx . activity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcb Ġ= Ġact . getSystem Service ( Context . CLIP BOARD _ SERVICE ) Ġas ĠClip board Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb . primary Clip Ġ= ĠClip Data . new Plain Text (" link ", Ġdynamic Link . uri . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Event ( Dynamic Link Event . ON _ CREATED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgson . toJson ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Link Event ( eventId , Ġfalse , Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" url " Ġto Ġdynamic Link . uri . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Dynamic Link ( ctx : ĠF RE Context , Ġargv : ĠF RE Arg v ): ĠF RE Object ? Ġ{ ĊĠĠĠĠĠĠĠ Ġargv . take If Ġ{ Ġargv . size Ġ> Ġ 0 Ġ} Ġ?: Ġreturn ĠFre Arg Exception (" get Dynamic Link ") ĊĠĠĠĠĠĠĠ Ġval Ġevent Id Ġ= ĠString ( argv [ 0 ]) Ġ?: Ġreturn ĠFre Conversion Exception (" eventId ") ĊĠĠĠĠĠĠĠ Ġval Ġapp Activity Ġ= Ġctx . activity ĊĠĠĠĠĠĠĠ Ġif Ġ( app Activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠFirebase Dynamic Links . getInstance (). get Dynamic Link ( app Activity . intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlink Ġ= Ġit ?. link Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Event ( Dynamic Link Event . ON _ LINK , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgson . toJson ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Link Event ( eventId , Ġfalse , Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" url " Ġto Ġlink . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Event ( Dynamic Link Event . ON _ LINK , Ġgson . toJson ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Link Event ( eventId , Ġtrue , Ġnull , Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" text " Ġto Ġit . localized Message . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id " Ġto Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval ĠTAG : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis :: class . java . canonical Name ĊĠĠĠ Ġprivate Ġvar Ġ_ context : ĠF RE Context ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġcontext : ĠF RE Context ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ context ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ context Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ċ }