package Ġcom . rar ible . protocol . nft . listener . admin Ċ Ċ import Ġcom . rar ible . core . task . Task Handler Ċ import Ġcom . rar ible . core . task . Task Status Ċ import Ġcom . rar ible . protocol . nft . core . model . ItemId Ċ import Ġcom . rar ible . protocol . nft . core . model . Reduce Token Items Task Params Ċ import Ġcom . rar ible . protocol . nft . core . model . Re index Token Task Params Ċ import Ġcom . rar ible . protocol . nft . core . repository . Temp Task Repository Ċ import Ġcom . rar ible . protocol . nft . core . service . item . Item Reduce Service Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . reactive . as Flow Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġscale ther . domain . Address Ċ Ċ @ Component Ċ class ĠReduce Token Task Handler ( ĊĠĠĠ Ġprivate Ġval Ġtask Repository : ĠTemp Task Repository , ĊĠĠĠ Ġprivate Ġval Ġitem Reduce Service : ĠItem Reduce Service Ċ ) Ġ: ĠTask Handler < String > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġtype : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠReduce Token Items Task Params . ADMIN _ RED UCE _ TOKEN _ ITEMS ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġis Ab le To Run ( param : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Params Ġ= ĠReduce Token Items Task Params . from Param String ( param ) ĊĠĠĠĠĠĠĠ Ġreturn Ġverify All Re index Token Task Completed ( task Params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun Long Task ( from : ĠString ?, Ġparam : ĠString ): ĠFlow < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠReduce Token Items Task Params . from Param String ( param ) ĊĠĠĠĠĠĠĠ Ġval ĠitemId Ġ= Ġfrom ?. let Ġ{ ĠItem Id . parse Id ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġitem Reduce Service ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( token Ġ= Ġparams . token , Ġtoken Id Ġ= Ġnull , Ġfrom Ġ= ĠitemId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . stringValue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Flow () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġverify All Re index Token Task Completed ( params : ĠReduce Token Items Task Params ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparams . token Ġ! in Ġfind Re indexing Tokens () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġfind Re indexing Tokens (): ĠList < Address > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtask Repository ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. findBy Type ( Re index Token Task Params . ADMIN _ RE INDEX _ TOKEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . last Status Ġ!= ĠTask Status . COMPLETED Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠRe index Token Task Params . from Param String ( it . param ). tokens Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatten () ĊĠĠĠ Ġ} Ċ } Ċ