package Ġapp . ak ile sh . nex . utils Ċ Ċ import Ġandroid . util . Log Ċ import Ġapp . ak ile sh . nex . Const . Path . update History Path Ċ import Ġapp . ak ile sh . nex . model . Update History Ċ import Ġcom . top john wu . superuser . Shell Ċ Ċ class ĠUpdate History Util Ġ{ ĊĠĠĠ Ġvar Ġupdate List Ġ= ĠlistOf < Update History >() ĊĠĠĠ Ġprivate Ġvar Ġtime Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġdate Ġ= Ġ"" ĊĊĠĠĠ Ġfun Ġcheck (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġop Ġ= ĠShell . su ("[ Ġ- f Ġ$ update History Path Ġ] Ġ&& Ġecho Ġy "). exec (). out ĊĠĠĠĠĠĠĠ Ġreturn Ġop . isNotEmpty () Ġ&& Ġop . component 1 (). isNotBlank () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit (){ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ ĠShell . su (" cat Ġ$ update History Path "). to ( output ). exec () ĊĊĠĠĠĠĠĠĠ Ġval Ġnon Null Output Ġ= Ġoutput . filter Not Ġ{ Ġit Ġ== Ġ"" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . length Ġ< Ġ 5 0 Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġp Ġ= ĠlistOf < String >() ĊĠĠĠĠĠĠĠ Ġnon Null Output . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ= Ġp Ġ+ Ġit . split (" :", Ġ" -> ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġp Ġ= Ġp . filter Not Ġ{ Ġit Ġ== Ġ" SW UP G " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġp . chunk ed ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġq . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto DateTime ( it . component 1 ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate List Ġ= Ġupdate List Ġ+ ĠUpdate History ( date , Ġtime , Ġit . component 2 (), Ġit . component 3 ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . d (" test ", Ġupdate List . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto DateTime ( s : ĠString ){ ĊĠĠĠĠĠĠĠ Ġdate Ġ= Ġs . substring ( 0 , Ġ 4 ) Ġ+ Ġ"-" Ġ+ Ġs . substring ( 4 , Ġ 6 ) Ġ+ Ġ"-" Ġ+ Ġs . substring ( 6 , Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġtime Ġ= Ġs . substring ( 8 , Ġ 1 0 ) Ġ+ Ġ":" Ġ+ Ġs . substring ( 1 0 , Ġ 1 2 ) Ġ+ Ġ":" Ġ+ Ġs . substring ( 1 2 , Ġs . length ) ĊĠĠĠ Ġ} Ċ }