package Ġcom . connect yc ube . flutter . connect yc ube _ flutter _ call _ kit Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . local broadcast manager . content . Local Broadcast Manager Ċ import Ġcom . connect yc ube . flutter . connect yc ube _ flutter _ call _ kit . utils . Context Holder Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Service Ċ import Ġcom . google . firebase . messaging . Remote Message Ċ import Ġorg . json . JSONObject Ċ Ċ class ĠConnect yc ube F CM Service Ġ: ĠFirebase Messaging Service () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Message Received ( remote Message : ĠRemote Message ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Message Received ( remote Message ) ĊĠĠĠĠĠĠĠ ĠContext Holder . application Context Ġ= Ġapplication Context ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġremote Message . data ĊĠĠĠĠĠĠĠ Ġif Ġ( data . containsKey (" signal _ type ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( data [" signal _ type "]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start Call " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Invite Call Event ( application Context , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" end Call " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess End Call Event ( application Context , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" reject Call " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess End Call Event ( application Context , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess End Call Event ( application Context : ĠContext , Ġdata : ĠMap < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcall Id Ġ= Ġdata [" session _ id "] Ġ?: Ġreturn ĊĊĊĠĠĠĠĠĠĠ Ġprocess Call Ended ( application Context , Ġcall Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Invite Call Event ( application Context : ĠContext , Ġdata : ĠMap < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcall Id Ġ= Ġdata [" session _ id "] ĊĊĠĠĠĠĠĠĠ Ġif Ġ( call Id Ġ== Ġnull Ġ|| ĠCALL _ STATE _ UNKNOWN Ġ!= Ġget Call State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcall Type Ġ= Ġdata [" call _ type "] ?. toInt () ĊĠĠĠĠĠĠĠ Ġval Ġcall Init iator Id Ġ= Ġdata [" caller _ id "] ?. toInt () ĊĠĠĠĠĠĠĠ Ġval Ġcall Init iator Name Ġ= Ġdata [" caller _ name "] ĊĠĠĠĠĠĠĠ Ġval Ġcall Opp onent s String Ġ= Ġdata [" call _ opp onent s "] ĊĠĠĠĠĠĠĠ Ġvar Ġcall Opp onent s Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ Ġif Ġ( call Opp onent s String Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Opp onent s Ġ= ĠArrayList ( call Opp onent s String . split (',' ). map Ġ{ Ġit . toInt () Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠuserInfo Ġ= Ġdata [" user _ info "] Ġ?: ĠJSONObject ( empty Map < String , ĠString > ()). toString () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( call Type Ġ== Ġnull Ġ|| Ġcall Init iator Id Ġ== Ġnull Ġ|| Ġcall Init iator Name Ġ== Ġnull Ġ|| Ġcall Opp onent s . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshow Call Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Init iator Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Init iator Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Opp onent s , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserInfo ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsave Call State ( application Context , Ġcall Id , ĠCALL _ STATE _ PENDING ) ĊĠĠĠĠĠĠĠ Ġsave Call Data ( application Context , Ġcall Id , Ġdata ) ĊĠĠĠĠĠĠĠ Ġsave Call Id ( application Context , Ġcall Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon New Token ( token : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on New Token ( token ) ĊĊĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. send Broadcast ( Intent ( ACTION _ TOKEN _ REFRESH ED ). putExtra ( EXTRA _ PUSH _ TOKEN , Ġtoken )) ĊĠĠĠ Ġ} Ċ }