package Ġ` in `. bit ots av . shared . workers Ċ Ċ import Ġ` in `. bit ots av . notification . utils . delete F cm Token Async Ċ import Ġ` in `. bit ots av . notification . utils . send F cm Token Async Ċ import Ġ` in `. bit ots av . shared . exceptions . Non Retry able Exception Ċ import Ġ` in `. bit ots av . shared . utils . is Bit ots av Over Ċ import Ġ` in `. bit ots av . shared . workers . F cm Token Work Type . valueOf Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroidx . work . Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" F cm Token Worker " Ċ Ċ enum Ġclass ĠF cm Token Work Type Ġ{ ĊĠĠĠ ĠS END _ TOKEN , ĊĠĠĠ ĠDELETE _ TOKEN Ċ } Ċ Ċ class ĠF cm Token Worker ( context : ĠContext , Ġparams : ĠWorker Parameters ) Ġ: ĠWorker ( context , Ġparams ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Bit ots av Over ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġinput Data . getString (" type ") ?. let Ġ{ Ġvalue Of ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNon Retry able Exception (" Invalid Ġwork Ġtype ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauth Token Ġ= Ġinput Data . getString (" auth Token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNon Retry able Exception (" Auth Ġtoken Ġis Ġempty ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf cm Token Ġ= Ġinput Data . getString (" fc m Token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNon Retry able Exception (" F CM Ġtoken Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF cm Token Work Type . SEND _ TOKEN Ġ-> Ġrun Blocking Ġ{ Ġsend F cm Token Async ( auth Token , Ġf cm Token ). await () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF cm Token Work Type . DELETE _ TOKEN Ġ-> Ġrun Blocking Ġ{ Ġdelete F cm Token Async ( auth Token , Ġf cm Token ). await () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . success () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNon Retry able Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġe . message Ġ?: Ġ" Non - retry able Ġexception ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . failure () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġe . message Ġ?: Ġ" Unknown ĠError ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . retry () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }