/* Ċ Ġ* Ġ Ġ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 . messaging Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Build Ċ import Ġcom . adobe . air . Android Activity Wrapper .* Ċ import Ġcom . adobe . air . Android Activity Wrapper . Activity State .* Ċ import Ġcom . adobe . air . Fre Kotlin Activity Result Callback Ċ import Ġcom . adobe . air . Fre Kotlin StateChange Callback Ċ import Ġcom . adobe . fre . F RE Context Ċ import Ġcom . adobe . fre . F RE Object Ċ import Ġcom . google . firebase . iid . Firebase InstanceId Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . tu ar ua . firebase . messaging . events . Message Event Ċ import Ġcom . tu ar ua . fre kotlin .* Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode Ċ import Ġjava . util .* Ċ import Ġkotlin . concurrent . schedule Ċ Ċ @ Suppress (" unused ", Ġ" UNUSED _ PARAMETER ", Ġ" UN CHECK ED _ CAST ", Ġ" Private PropertyName ") Ċ class ĠKotlin Controller Ġ: ĠFre Kotlin Main Controller , ĠFre Kotlin StateChange Callback , ĠFre Kotlin Activity Result Callback Ġ{ ĊĠĠĠ Ġ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 ? Ġ{ ĊĠĠĠĠĠĠĠ Ġargv . take If Ġ{ Ġargv . size Ġ> Ġ 1 Ġ} Ġ?: Ġreturn ĠFre Arg Exception () ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). register ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= ĠString ( argv [ 0 ]) Ġ?: Ġ" fc m _ default _ channel " ĊĠĠĠĠĠĠĠ Ġval Ġchannel Name Ġ= ĠString ( argv [ 1 ]) ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Activity Ġ= Ġctx . activity Ġ?: Ġreturn Ġtrue . to F RE Object () ĊĠĠĠĠĠĠĠ Ġif Ġ( channel Name Ġ!= Ġnull Ġ&& ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Activity . getSystem Service ( Notification Manager :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager ?. create Notification Channel ( Notification Channel ( channelId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Name , ĠNotification Manager . IMPORT ANCE _ LOW )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( app Activity . intent . extras Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsendMessage From Extras ( app Activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue . to F RE Object () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetToken ( ctx : ĠF RE Context , Ġargv : ĠF RE Arg v ): ĠF RE Object ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFirebase InstanceId . getInstance (). token ?. to F RE Object () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsubscribe ( ctx : ĠF RE Context , Ġargv : ĠF RE Arg v ): ĠF RE Object ? Ġ{ ĊĠĠĠĠĠĠĠ Ġargv . take If Ġ{ Ġargv . size Ġ> Ġ 0 Ġ} Ġ?: Ġreturn ĠFre Arg Exception () ĊĠĠĠĠĠĠĠ Ġval Ġto Topic Ġ= ĠString ( argv [ 0 ]) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ ĠFirebase Messaging . getInstance (). subscribe To Topic ( to Topic ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunsubscribe ( ctx : ĠF RE Context , Ġargv : ĠF RE Arg v ): ĠF RE Object ? Ġ{ ĊĠĠĠĠĠĠĠ Ġargv . take If Ġ{ Ġargv . size Ġ> Ġ 0 Ġ} Ġ?: Ġreturn ĠFre Arg Exception () ĊĠĠĠĠĠĠĠ Ġval Ġfrom Topic Ġ= ĠString ( argv [ 0 ]) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ ĠFirebase Messaging . getInstance (). unsubscribe From Topic ( from Topic ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Fre Exception :: class ) ĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon Message Event ( event : ĠMessage Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(_ context Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Event ( event . callback Id , Ġgson . toJson ( Message Event ( event . callback Id , Ġevent . data ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsendMessage From Extras ( app Activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextras Ġ= Ġapp Activity . intent . extras Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( extras . isEmpty ) Ġreturn ĊĠĠĠĠĠĠĠ Ġvar Ġfrom : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġttl Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar ĠmessageId : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġsent Time : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġcollapse Key : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmutable Map Of < String , ĠString >() ĊĊĠĠĠĠĠĠĠ Ġif Ġ( extras . keySet (). contains (" google . message _ id ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġextras . keySet ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġextras . get ( key ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" google . sent _ time " Ġ-> Ġsent Time Ġ= Ġvalue Ġas ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" google . ttl " Ġ-> Ġttl Ġ= Ġvalue Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" from " Ġ-> Ġfrom Ġ= Ġvalue Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" google . message _ id " Ġ-> ĠmessageId Ġ= Ġvalue Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" collapse _ key " Ġ-> Ġcollapse Key Ġ= Ġvalue Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Activity . intent . remove Extra ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpayload Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" from " Ġto Ġfrom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" data " Ġto Ġdata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message Id " Ġto ĠmessageId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" collapse Key " Ġto Ġcollapse Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sent Time " Ġto Ġsent Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ttl " Ġto Ġttl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimer (" Intent Message Event ", Ġfalse ). schedule ( 5 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Event ( Message Event . ON _ MESSAGE _ RECE IVED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgson . toJson ( Message Event ( Message Event . ON _ MESSAGE _ RECE IVED , Ġpayload ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Configuration Changed ( configuration : ĠConfiguration ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity StateChanged ( activity State : ĠActivity State ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( activity State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTART ED Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRE STARTED Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRES U MED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Activity Ġ= Ġ_ context ?. activity Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app Activity . intent . extras Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsendMessage From Extras ( app Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPA USED Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTOP PED Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEST ROY ED Ġ-> Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFre Kotlin Logger . context Ġ= Ġ_ context ĊĠĠĠĠĠĠĠ Ġ} Ċ } ĊĊ