/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠK arn ĠSa he b Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġio . k arn . notify Ċ Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġio . k arn . notify . entities . Payload Ċ import Ġio . k arn . notify . internal . Raw Notification Ċ import Ġio . k arn . notify . internal . utils . Action Ċ import Ġio . k arn . notify . internal . utils . Errors Ċ import Ġio . k arn . notify . internal . utils . Notify Scope Marker Ċ Ċ /** Ċ Ġ* ĠFluent ĠAPI Ġfor Ġcreating Ġa ĠNotification Ġobject . Ċ Ġ*/ Ċ @ Notify Scope Marker Ċ class ĠNotify Creator Ġinternal Ġconstructor ( private Ġval Ġnotify : ĠNotify ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġmeta Ġ= ĠPayload . Meta () ĊĠĠĠ Ġprivate Ġvar Ġalerts Ġ= ĠNotify . default Config . default Alert ing ĊĠĠĠ Ġprivate Ġvar Ġheader Ġ= ĠNotify . default Config . default Header . copy () ĊĠĠĠ Ġprivate Ġvar Ġcontent : ĠPayload . Content Ġ= ĠPayload . Content . Default () ĊĠĠĠ Ġprivate Ġvar Ġactions : ĠArrayList < Action >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġstack able : ĠPayload . Stack able ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScoped Ġfunction Ġfor Ġmodifying Ġthe ĠMetadata Ġof Ġa Ġnotification , Ġsuch Ġas Ġclick Ġintent s , ĊĠĠĠĠ Ġ* Ġnotification Ġcategory , Ġand Ġpriority Ġamong Ġother Ġoptions . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmeta ( init : ĠPayload . Meta . () Ġ-> ĠUnit ): ĠNotify Creator Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . meta . init () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScoped Ġfunction Ġfor Ġmodifying Ġthe ĠAlert ing Ġof Ġa Ġnotification . ĠThis Ġincludes Ġvisibility , ĊĠĠĠĠ Ġ* Ġsounds , Ġlights , Ġetc . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġan Ġexisting Ġkey Ġis Ġprovided Ġthe Ġexisting Ġchannel Ġis Ġretrieved Ġ( API Ġ>= ĠAndroid O ) Ġand Ġset Ġas Ġthe Ġalert ing ĊĠĠĠĠ Ġ* Ġconfiguration . ĠIf Ġthe Ġkey Ġis Ġnew , Ġthe Ġchannel Ġis Ġcreated Ġand Ġset Ġas Ġthe Ġalert ing Ġconfiguration . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġalert ing ( key : ĠString , Ġinit : ĠPayload . Alerts . () Ġ-> ĠUnit ): ĠNotify Creator Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠClone Ġobject Ġand Ġassign Ġthe Ġkey . ĊĠĠĠĠĠĠĠ Ġthis . alerts Ġ= Ġthis . alerts . copy ( channel Key Ġ= Ġkey ) ĊĠĠĠĠĠĠĠ Ġthis . alerts . init () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScoped Ġfunction Ġfor Ġmodifying Ġthe ĠHeader Ġof Ġa Ġnotification . ĠSpecific ally , Ġit Ġallows Ġthe ĊĠĠĠĠ Ġ* Ġmodification Ġof Ġthe Ġnotification Icon , Ġcolor , Ġthe Ġheader Text Ġ( optional Ġtext Ġnext Ġto Ġthe ĊĠĠĠĠ Ġ* ĠappName ), Ġand Ġfinally Ġthe Ġnotify Channel Ġof Ġthe Ġnotification Ġif Ġtargeting ĠAndroid ĠO . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġheader ( init : ĠPayload . Header . () Ġ-> ĠUnit ): ĠNotify Creator Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . header . init () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScoped Ġfunction Ġfor Ġmodifying Ġthe Ġcontent Ġof Ġa Ġ' Default ' Ġnotification . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcontent ( init : ĠPayload . Content . Default . () Ġ-> ĠUnit ): ĠNotify Creator Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . content Ġ= ĠPayload . Content . Default () ĊĠĠĠĠĠĠĠ Ġ( this . content Ġas ĠPayload . Content . Default ). init () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScoped Ġfunction Ġfor Ġmodifying Ġthe Ġcontent Ġof Ġa Ġ' Text List ' Ġnotification . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġas Text List ( init : ĠPayload . Content . Text List . () Ġ-> ĠUnit ): ĠNotify Creator Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . content Ġ= ĠPayload . Content . Text List () ĊĠĠĠĠĠĠĠ Ġ( this . content Ġas ĠPayload . Content . Text List ). init () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScoped Ġfunction Ġfor Ġmodifying Ġthe Ġcontent Ġof Ġa Ġ' Big Text ' Ġnotification . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġas Big Text ( init : ĠPayload . Content . Big Text . () Ġ-> ĠUnit ): ĠNotify Creator Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . content Ġ= ĠPayload . Content . Big Text () ĊĠĠĠĠĠĠĠ Ġ( this . content Ġas ĠPayload . Content . Big Text ). init () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScoped Ġfunction Ġfor Ġmodifying Ġthe Ġcontent Ġof Ġa Ġ' Big Picture ' Ġnotification . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġas Big Picture ( init : ĠPayload . Content . Big Picture . () Ġ-> ĠUnit ): ĠNotify Creator Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . content Ġ= ĠPayload . Content . Big Picture () ĊĠĠĠĠĠĠĠ Ġ( this . content Ġas ĠPayload . Content . Big Picture ). init () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScoped Ġfunction Ġfor Ġmodifying Ġthe Ġcontent Ġof Ġa Ġ' Message ' Ġnotification . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġas Message ( init : ĠPayload . Content . Message . () Ġ-> ĠUnit ): ĠNotify Creator Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . content Ġ= ĠPayload . Content . Message () ĊĠĠĠĠĠĠĠ Ġ( this . content Ġas ĠPayload . Content . Message ). init () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScoped Ġfunction Ġfor Ġmodifying Ġthe Ġ' Actions ' Ġof Ġa Ġnotification . ĠThe Ġtransformation ĊĠĠĠĠ Ġ* Ġrelies Ġon Ġadding Ġstandard Ġnotification ĠAction Ġobjects . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġactions ( init : ĠArrayList < Action >. () Ġ-> ĠUnit ): ĠNotify Creator Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . actions Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġ( this . actions Ġas ĠArrayList < Action >). init () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScoped Ġfunction Ġfor Ġmodifying Ġthe Ġbehaviour Ġof Ġ' Stack ed ' Ġnotifications . ĠThe Ġtransformation ĊĠĠĠĠ Ġ* Ġrelies Ġon Ġthe Ġ' summary Text ' Ġof Ġa Ġstack able Ġnotification . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstack able ( init : ĠPayload . Stack able . () Ġ-> ĠUnit ): ĠNotify Creator Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . stack able Ġ= ĠPayload . Stack able () ĊĠĠĠĠĠĠĠ Ġ( this . stack able Ġas ĠPayload . Stack able ). init () ĊĊĠĠĠĠĠĠĠ Ġthis . stack able ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . key . isNull OrEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( Errors . INVALID _ STACK _ KEY _ ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġstandard Ġ{@ see ĠNotification Compat . Builder } Ġafter Ġapplying Ġfluent ĠAPI ĊĠĠĠĠ Ġ* Ġtransformations Ġ( if Ġany ) Ġfrom Ġthe Ġ{@ see ĠNotify Creator } Ġbuilder Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġas Builder (): ĠNotification Compat . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify . as Builder ( Raw Notification ( meta , Ġalerts , Ġheader , Ġcontent , Ġstack able , Ġactions )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelegate Ġa Ġ{@ see ĠNotification . Builder } Ġobject Ġto Ġthe ĠNotify ĠNotification Interop Ġclass Ġwhich ĊĠĠĠĠ Ġ* Ġbuilds Ġand Ġdisplays Ġthe Ġnotification . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġis Ġa Ġterminal Ġoperation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid ĠĠĠ ĠAn Ġoptional Ġinteger Ġwhich Ġwill Ġbe Ġused Ġas Ġthe ĠID Ġfor Ġthe Ġnotification Ġthat Ġis ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshown . ĠThis Ġargument Ġis Ġignored Ġif Ġthe Ġnotification Ġis Ġa ĠNotify Creator # stack able ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Ġis Ġset . ĊĠĠĠĠ Ġ* Ġ@ return ĠAn Ġinteger Ġcorresponding Ġto Ġthe ĠID Ġof Ġthe Ġsystem Ġnotification . ĠAny Ġupdates Ġshould Ġuse ĊĠĠĠĠ Ġ* Ġthis Ġreturned Ġinteger Ġto Ġmake Ġupdates Ġor Ġto Ġcancel Ġthe Ġnotification . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow ( id : ĠInt ? Ġ= Ġnull ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify . show ( id , Ġas Builder ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel Ġan Ġexisting Ġnotification Ġgiven Ġan ĠID . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ deprecated ĠChoose Ġto Ġinstead Ġuse Ġthe Ġstatic Ġfunction Ġ{@ see ĠNotify # cancel Notification ()} ĊĠĠĠĠ Ġ* Ġwhich Ġprovides Ġthe Ġcorrect Ġencaps ulation Ġof Ġthe Ġthis Ġ` cancel ` Ġfunction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Deprecated ( message Ġ= Ġ" Ex poses Ġfunction Ġunder Ġthe Ġincorrect ĠAPI Ġ-- ĠNotify Creator Ġis Ġreserved Ġstrictly Ġfor Ġnotification Ġconstruction .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace With Ġ= ĠReplace With (" Notify . cancel Notification ( id )", Ġ" io . k arn . notify . Notify ")) ĊĠĠĠ Ġfun Ġcancel ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNotify . cancel Notification ( id ) ĊĠĠĠ Ġ} Ċ } Ċ