package Ġcom . cube . fusion . android . activity . actions Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . View Ċ import Ġcom . cube . fusion . android . activity . R Ċ import Ġcom . cube . fusion . android . activity . WebView Activity Ċ import Ġcom . cube . fusion . android . core . actions . F usion Android Action Handler Ċ import Ġcom . cube . fusion . android . core . actions . Multi Action Handler Ċ import Ġcom . cube . fusion . core . model . action . Email Action Ċ import Ġcom . cube . fusion . core . model . action . Link Action Ċ import Ġcom . cube . fusion . core . model . action . Native Action Ċ import Ġcom . cube . fusion . core . model . action . Page Action Ċ import Ġcom . cube . fusion . core . utils . Constants Ċ Ċ /** Ċ Ġ* Ġ[ F usion Android Action Handler ] Ġimplementation Ġfor Ġthe Ġdefault Ġhandling Ġof Ġactions Ġby Ġredirects Ġto Ġactivities Ċ Ġ* ĠAlso Ġcontains Ġeach Ġof Ġthe Ġindividual Ġdefault Ġchild Ġhandlers Ġas Ġstatic Ġmethods Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠJ R ĠMit che ll Ġon Ġ 0 6 / January / 2 0 2 2 . Ċ Ġ* ĠCopyright ĠÂ ® Ġ 3 Side d Cube . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ġ@ param Ġpage Intent Generator Ġa Ġmethod Ġto Ġgenerate Ġintent s Ġfor Ġ[ Page Action ] s Ġto Ġredirect Ġto Ċ Ġ*/ Ċ class ĠDefault Activity Action Handlers ( page Intent Generator : Ġ( View , ĠPage Action ) Ġ-> ĠIntent ?) Ġ: ĠMulti Action Handler () Ġ{ Ċ ĉ /** Ċĉ Ġ* Ġ@ param Ġpage Class Ġthe Ġactivity Ġclass Ġfor Ġ[ Page Action ] s Ġto Ġredirect Ġto Ċĉ Ġ*/ Ċ ĉ constructor ( page Class : ĠClass < out ĠActivity >) Ġ: Ġthis ({ Ġview , Ġ_ Ġ-> ĠIntent ( view . context , Ġpage Class ) Ġ}) ĊĊ ĉ comp anion Ġobject Ġ{ Ċĉ ĉ /** Ċĉĉ Ġ* ĠConvenience Ġmethod Ġto Ġhandle Ġa Ġnullable Ġintent Ġcreated Ġduring Ġaction Ġhandling Ġby Ġstarting Ġan Ġactivity Ġif Ġnot - null Ċĉĉ Ġ* Ċĉĉ Ġ* Ġ@ param Ġview Ġthe Ġview Ġto Ġhandle Ġthe Ġnullable Ġintent Ġwith Ċĉĉ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġintent Ġis Ġnon - null , Ġand Ġtherefore ĠstartActivity Ġhas Ġbeen Ġcalled ; Ġfalse Ġotherwise Ċĉĉ Ġ*/ Ċĉ ĉ fun ĠIntent ?. handled By View ( view : ĠView ) Ġ= Ġthis ?. let Ġ{ Ċĉĉ ĉ view . context . startActivity ( it ) Ċĉĉ ĉ true Ċĉ ĉ } Ġ?: Ġfalse ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠGet Ġa Ġdefault Ġhandler Ġfor Ġ[ Page Action ] s Ġthat Ġredirects Ġbased Ġon Ġthe Ġintent Ġgenerated Ġby Ġ[ page Intent Generator ] Ġfor Ġeach Ġ[ Page Action ], Ġpassing Ġthe Ġpage ĠURL Ġas Ġan Ġextra Ċĉĉ Ġ* Ġ@ param Ġpage Intent Generator Ġa Ġmethod Ġto Ġgenerate Ġintent s Ġfor Ġ[ Page Action ] s Ġto Ġredirect Ġto Ċĉĉ Ġ* Ġ@ return Ġa Ġ[ F usion Android Action Handler ] Ġwhich Ġredirects Ġfor Ġany Ġ[ Page Action ] s Ġbased Ġon Ġthe Ġintent Ġgenerated Ġby Ġ[ page Intent Generator ] Ċĉĉ Ġ*/ Ċĉ ĉ fun Ġdefault Page Activity Action Handler ( page Intent Generator : Ġ( View , ĠPage Action ) Ġ-> ĠIntent ?) Ġ= ĠF usion Android Action Handler Ġ{ Ġview , Ġaction Ġ-> Ċĉĉ ĉ if Ġ( action Ġis ĠPage Action ) Ġ{ Ċĉĉĉ ĉ page Intent Generator ( view , Ġaction ). handled By View ( view ) Ċĉĉ ĉ } Ċĉĉ ĉ else Ġfalse Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠGet Ġa Ġdefault Ġhandler Ġfor Ġ[ Link Action ] s Ċĉĉ Ġ* Ġ@ return Ġa Ġ[ F usion Android Action Handler ] Ġthat Ġredirects Ġ[ Link Action ] s Ġeither Ġto Ġ[ WebView Activity ] Ġif Ġin App , Ġor Ġan Ġexternal Ġapp Ġotherwise Ċĉĉ Ġ*/ Ċĉ ĉ fun Ġdefault Link Activity Action Handler () Ġ= ĠF usion Android Action Handler Ġ{ Ġview , Ġaction Ġ-> Ċĉĉ ĉ if Ġ( action Ġis ĠLink Action ) Ġ{ Ċĉĉĉ ĉ val Ġintent Ġ= Ġif Ġ( action . in App ) Ġ{ Ċĉĉĉĉ ĉ WebView Activity . get Intent ( view . context , Ġaction . extract Click ()) Ċĉĉĉ ĉ } Ċĉĉĉ ĉ else Ġ{ Ċĉĉĉĉ ĉ Intent ( Intent . ACTION _ VIEW ). apply Ġ{ Ċĉĉĉĉĉ ĉ data Ġ= ĠUri . parse ( action . extract Click ()) Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } Ċĉĉĉ ĉ intent . handled By View ( view ) Ċĉĉ ĉ } Ċĉĉ ĉ else Ġfalse Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠGet Ġa Ġdefault Ġhandler Ġfor Ġ[ Email Action ] s Ċĉĉ Ġ* Ġ@ return Ġa Ġ[ F usion Android Action Handler ] Ġthat Ġhandles Ġ[ Email Action ] s Ġby Ġlaunch ing Ġan Ġemail Ġapp Ġselector Ġwith Ġthe Ġrelevant Ġemail Ġextras Ċĉĉ Ġ*/ Ċĉ ĉ fun Ġdefault Email Activity Action Handler () Ġ= ĠF usion Android Action Handler Ġ{ Ġview , Ġaction Ġ-> Ċĉĉ ĉ if Ġ( action Ġis ĠEmail Action ) Ġ{ Ċĉĉĉ ĉ val Ġselector Intent Ġ= ĠIntent ( Intent . ACTION _ SEND TO ). apply Ġ{ Ċĉĉĉĉ ĉ data Ġ= ĠUri . parse ( Constants . MAIL _ TO ) Ċĉĉĉ ĉ } Ċĉĉĉ ĉ val Ġemail Intent Ġ= ĠIntent ( Intent . ACTION _ SEND ). apply Ġ{ Ċĉĉĉĉ ĉ putExtra ( Intent . EXTRA _ EMAIL , Ġaction . to ) Ċĉĉĉĉ ĉ putExtra ( Intent . EXTRA _ B CC , Ġaction . bcc ) Ċĉĉĉĉ ĉ putExtra ( Intent . EXTRA _ CC , Ġaction . cc ) Ċĉĉĉĉ ĉ putExtra ( Intent . EXTRA _ SUBJECT , Ġaction . subject ) Ċĉĉĉĉ ĉ putExtra ( Intent . EXTRA _ TEXT , Ġaction . body ) Ċĉĉĉĉ ĉ selector Ġ= Ġselector Intent Ċĉĉĉ ĉ } Ċĉĉĉ ĉ Intent . create Chooser ( email Intent , Ġview . context . getString ( R . string . send _ email _ header )). handled By View ( view ) Ċĉĉ ĉ } Ċĉĉ ĉ else Ġfalse Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ override Ġval Ġchild Handlers Ġ= Ġmutable ListOf ( Ċĉ ĉ default Page Activity Action Handler ( page Intent Generator ), Ċĉ ĉ default Link Activity Action Handler (), Ċĉ ĉ default Email Activity Action Handler () Ċ ĉ ) ĊĊ ĉ /** Ċĉ Ġ* ĠRegister Ġa Ġnew Ġhandler Ġfor Ġ[ Native Action ] s Ċĉ Ġ* Ċĉ Ġ* Ġ@ param Ġhandler Ġthe Ġhandling Ġmethod Ġto Ġcall Ġfor Ġany Ġnative Ġaction . Ċĉ Ġ* Ġ ĉ Should Ġreturn Ġtrue Ġif Ġthe Ġaction Ġis Ġsuccessfully Ġhandled , Ġand Ġfalse Ġotherwise . Ċĉ Ġ*/ Ċ ĉ fun Ġregister Native Action ( handler : Ġ( View , ĠNative Action ) Ġ-> ĠBoolean ) Ġ{ Ċĉ ĉ child Handlers . add ( F usion Android Action Handler Ġ{ Ġview , Ġaction Ġ-> Ċĉĉ ĉ if Ġ( action Ġis ĠNative Action ) Ġ{ Ċĉĉĉ ĉ handler ( view , Ġaction ) Ċĉĉ ĉ } Ċĉĉ ĉ else Ġfalse Ċĉ ĉ }) Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠRegister Ġa Ġnew Ġhandler Ġfor Ġ[ Native Action ] s Ġwith Ġa Ġspecific Ġlink , Ġwhich Ġreturns Ġtrue Ġand Ġcalls Ġ[ on Link Match ] Ġwhenever Ġthe Ġaction Ġlink Ġexactly Ġmatches Ġ[ link ] Ċĉ Ġ* Ċĉ Ġ* Ġ@ param Ġlink Ġthe Ġexact Ġlink Ġto Ġhandle Ċĉ Ġ* Ġ@ param Ġon Link Match Ġthe Ġmethod Ġto Ġcall Ġwhenever Ġa Ġ[ Native Action ] Ġwith Ġthe Ġgiven Ġlink Ġis Ġhandled Ċĉ Ġ*/ Ċ ĉ fun Ġregister Native Action For Link ( link : ĠString , Ġon Link Match : Ġ( View , ĠNative Action ) Ġ-> ĠUnit ) Ġ= Ġregister Native Action Ġ{ Ġview , Ġnative Action Ġ-> Ċĉ ĉ if Ġ( native Action . link Ġ== Ġlink ) Ġ{ Ċĉĉ ĉ on Link Match ( view , Ġnative Action ) Ċĉĉ ĉ true Ċĉ ĉ } Ċĉ ĉ else Ġfalse Ċ ĉ } Ċ }