package Ġcom . sp ut nik messenger . sse _ connector Ċ Ċ import Ġandroid . app . Alarm Manager Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . app . job . Job Info Ċ import Ġandroid . app . job . Job Info . Builder Ċ import Ġandroid . app . job . Job Info . NETWORK _ TYPE _ ANY Ċ import Ġandroid . app . job . Job Scheduler Ċ import Ġandroid . content . Context Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . plugin . common . Method Channel . Result Ċ import Ġio . flutter . plugin . common . Plugin Registry . Registrar Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent . FLAG _ ACTIVITY _ NEW _ TASK Ċ import Ġandroid . net . Network Capabilities Ċ import Ġandroid . net . Network Request Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . provider . Settings . ACTION _ IGNORE _ B ATTER Y _ OPTIMI Z ATION _ SETTINGS Ċ import Ġandroid . os . Power Manager ĊĊ Ċ class ĠS se Connector Plugin ( private Ġvar Ġcontext : ĠContext ) Ġ: ĠMethod Call Handler Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġjob Id 0 Ġ= Ġ 6 0 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġjob Id 1 Ġ= Ġ 6 0 0 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġalarm Id 0 Ġ= Ġ 6 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġregister With ( regist rar : ĠRegist rar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠMethod Channel ( regist rar . messenger (), Ġ" com . sp ut nik - messenger . sse _ connector ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( S se Connector Plugin ( regist rar . context ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenabled Ġ= ĠP refs Helper . get Enabled ( Prefs Helper . get Prefs ( regist rar . context ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschedule One Time Job ( regist rar . context (), Ġ 3 0 , Ġnow Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġschedule One Time Job ( context : ĠContext , Ġfall Back Alarm In Minutes : ĠInt ?, Ġnow : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠBuilder ( jobId 0 , ĠComponent Name ( context , ĠS se Connector JobService :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Job Info ( builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! now ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setMinimum Latency ( 1 0 0 0 Ġ* Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Job ( context , Ġbuilder . build (), Ġfall Back Alarm In Minutes ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġschedule Periodic Job ( context : ĠContext , Ġfall Back Alarm In Minutes : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠBuilder ( jobId 1 , ĠComponent Name ( context , ĠS se Connector JobService :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Job Info ( builder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Periodic ( 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 1 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Requires Battery Not Low ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Periodic ( 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 1 5 , Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Job ( context , Ġbuilder . build (), Ġfall Back Alarm In Minutes ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġschedule Job ( context : ĠContext , Ġinfo : ĠJob Info , Ġfall Back Alarm In Minutes : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjob Scheduler Ġ= Ġcontext . getSystem Service ( Context . JOB _ SCHEDUL ER _ SERVICE ) Ġas ĠJob Scheduler ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob Scheduler . schedule ( info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fall Back Alarm In Minutes Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Alarm ( context , Ġfall Back Alarm In Minutes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbuild Alarm Intent ( context : ĠContext ): ĠPending Intent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIntent ( context , ĠS se Connector Alarm Receiver :: class . java ). let Ġ{ Ġintent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwake Lock Tag Ġ= ĠP refs Helper . get Wake Lock Tag ( Prefs Helper . get Prefs ( context )) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" wake Lock Tag ", Ġwake Lock Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . get Broadcast ( context , Ġalarm Id 0 , Ġintent , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġschedule Alarm ( context : ĠContext , Ġin Minutes : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalarm Manager Ġ= Ġcontext . getSystem Service ( Context . ALARM _ SERVICE ) Ġas ĠAlarm Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalarm Intent Ġ= Ġbuild Alarm Intent ( context ); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalarm Time Ġ= ĠSystem Clock . elapsed Realtime () Ġ+ Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġin Minutes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Manager . set And Allow While Idle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Manager . EL AP SED _ REAL TIME _ WAKE UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Manager . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Manager . EL AP SED _ REAL TIME _ WAKE UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcancel All Jobs And Al arms ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjob Scheduler Ġ= Ġcontext . getSystem Service ( Context . JOB _ SCHEDUL ER _ SERVICE ) Ġas ĠJob Scheduler ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob Scheduler . cancel ( jobId 1 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob Scheduler . cancel ( jobId 0 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalarm Manager Ġ= Ġcontext . getSystem Service ( Context . ALARM _ SERVICE ) Ġas ĠAlarm Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Manager . cancel ( build Alarm Intent ( context )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġconfigure Job Info ( info Builder : ĠBuilder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Builder . set Required Network Type ( NETWORK _ TYPE _ ANY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pers isted ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Builder . set Est imated Network Bytes ( 5 0 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Required Network ( Network Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Capability ( Network Capabilities . NET _ CAP ABILITY _ INTER NET ). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall ( call : ĠMethod Call , Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( call . method Ġ== Ġ" init S se Connection ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwake Lock Tag Ġ= Ġcall . argument < String >(" wake Lock Tag ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpush Key Ġ= Ġcall . argument < String >(" push Key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs se Notifications Url Ġ= Ġcall . argument < String >(" sse Notifications Url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpoll Notification Url Ġ= Ġcall . argument < String >(" poll Notification Url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Channel Id Ġ= Ġcall . argument < String >(" notification Channel Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Channel Name Ġ= Ġcall . argument < String >(" notification Channel Name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Channel Description Ġ= Ġcall . argument < String >(" notification Channel Description ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Channel Import ance Ġ= Ġcall . argument < Int >(" notification Channel Import ance ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Small Icon Ġ= Ġcall . argument < String >(" notification Small Icon ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= ĠP refs Helper . get Prefs ( context ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP refs Helper . set Wake Lock Tag ( editor , Ġwake Lock Tag !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP refs Helper . set Notification Channel Id ( editor , Ġnotification Channel Id !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP refs Helper . set S se Notifications Url ( editor , Ġs se Notifications Url !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP refs Helper . set Poll Notification Url ( editor , Ġpoll Notification Url !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP refs Helper . set Notification Small Icon ( editor , Ġnotification Small Icon !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP refs Helper . set Push Key ( editor , Ġpush Key !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP refs Helper . setEnabled ( editor , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Channel Ġ= ĠNotification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel Import ance !! ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġnotification Channel Description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager : ĠNotification Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager . create Notification Channel ( notification Channel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule One Time Job ( context , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Periodic Job ( context , Ġfall Back Alarm In Minutes Ġ= Ġ 1 5 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( call . method Ġ== Ġ" stop Moon Push Connection ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS se Connector Thread . restart Ġ= Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel All Jobs And Al arms ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= ĠP refs Helper . get Prefs ( context ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP refs Helper . setEnabled ( editor , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW ake Me Thread . global Wake Trigger . release () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( call . method Ġ== Ġ" open Battery Settings ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠACTION _ IGNORE _ B ATTER Y _ OPTIMI Z ATION _ SETTINGS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠFLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( call . method Ġ== Ġ" is Battery Optimization Enabled ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpm Ġ= Ġcontext . getSystem Service ( Context . POWER _ SERVICE ) Ġas ĠPower Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġcontext . packageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success (! pm . is Ign oring Battery Optim izations ( packageName )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ