/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠNik ol ai ĠK ot che tk ov Ġ( motor ro ). Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . motor ro . app update wrapper Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġcom . google . android . play . core . app update . App Update Info Ċ import Ġcom . google . android . play . core . install . model . App Update Type . FLEX IBLE Ċ import Ġcom . google . android . play . core . install . model . App Update Type . IM MEDI ATE Ċ import Ġcom . google . android . play . core . install . model . Install ErrorCode Ċ import Ġcom . google . android . play . core . install . model . Install Status Ċ import Ġcom . google . android . play . core . install . model . Update Availability Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠTri ms Ġtag Ġto Ġfit Ċ Ġ*/ Ċ internal Ġfun Ġtrimmed Tag ( tag : ĠString ): ĠString Ġ= Ġif Ġ( tag . length Ġ<= Ġ 2 3 Ġ Ġ|| ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠ Ġtag Ċ } Ġelse Ġ{ ĊĠĠĠ Ġtag . substring ( 0 , Ġ 2 3 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġlogging Ġtag Ċ Ġ*/ Ċ internal Ġinterface ĠTag ged Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġcommon Ġtag Ġprefix ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Tag Prefix (): ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġlogging Ġtag ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Tag (): ĠString Ġ= Ġtrimmed Tag ("$ LIBRARY _ LOG _ PREFIX :${ getTag Prefix ()} :${ java Class . simple Name }") Ċ } Ċ Ċ /** Ċ Ġ* ĠSets Ġ[ Tim ber . tag ] Ġand Ġreturns Ġtree Ċ Ġ*/ Ċ internal Ġval ĠTag ged . tim ber : ĠTim ber . Tree ĊĠĠĠ Ġget () Ġ= ĠTim ber . tag ( getTag ()) Ċ Ċ /** Ċ Ġ* ĠApp Update Info Ġlogging Ġformat Ċ Ġ*/ Ċ private Ġconst Ġval ĠAPP _ UPDATE _ INFO _ FORMAT Ġ= Ġ""" Update Ġinfo : ĠĊĠĠĠ Ġ- Ġavailable Ġversion Ġcode : Ġ% d ĊĠĠĠ Ġ- Ġupdate Ġavailability : Ġ% s ĊĠĠĠ Ġ- Ġinstall Ġstatus : Ġ% s ĊĠĠĠ Ġ- Ġupdate Ġtypes Ġallowed : Ġ% s """ Ċ Ċ /** Ċ Ġ* ĠForm ats Ġupdate Ġinfo Ġinto Ġhuman - readable Ġformat Ċ Ġ*/ Ċ fun ĠApp Update Info . format (): ĠString Ġ= ĠAPP _ UPDATE _ INFO _ FORMAT . format ( ĊĠĠĠ Ġavailable Version Code (), ĊĠĠĠ Ġformat Update Availability (), ĊĠĠĠ Ġformat Install Status (), ĊĠĠĠ Ġformat Update Types Allowed () Ċ ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġconstant Ġname Ġfor Ġupdate Ġavailability Ċ Ġ*/ Ċ private Ġfun ĠApp Update Info . format Update Availability (): ĠString Ġ= Ġwhen ( update Availability ()) Ġ{ ĊĠĠĠ ĠUpdate Availability . UNKNOWN Ġ-> Ġ" UNKNOWN " ĊĠĠĠ ĠUpdate Availability . UPDATE _ NOT _ AVAILABLE Ġ-> Ġ" UPDATE _ NOT _ AVAILABLE " ĊĠĠĠ ĠUpdate Availability . UPDATE _ AVAILABLE Ġ-> Ġ" UPDATE _ AVAILABLE " ĊĠĠĠ ĠUpdate Availability . DE VELO PER _ TRIGGER ED _ UPDATE _ IN _ PROGRESS Ġ-> Ġ" DE VELO PER _ TRIGGER ED _ UPDATE _ IN _ PROGRESS " ĊĠĠĠ Ġelse Ġ-> Ġ" UNKNOWN ĠUPDATE ĠA VA IL ABILITY : Ġ${ update Availability () }" Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġconstant Ġname Ġfor Ġupdate Ġstatus Ċ Ġ* Ġ@ param Ġstatus ĠInstall Ġstatus Ċ Ġ*/ Ċ fun Ġformat Install Status ( status : ĠInt ): ĠString Ġ= Ġwhen ( status ) Ġ{ ĊĠĠĠ ĠInstall Status . UNKNOWN Ġ-> Ġ" UNKNOWN " ĊĠĠĠ ĠInstall Status . PENDING Ġ-> Ġ" PENDING " ĊĠĠĠ ĠInstall Status . DOWNLOAD ING Ġ-> Ġ" DOWNLOAD ING " ĊĠĠĠ ĠInstall Status . DOWN LOADED Ġ-> Ġ" DOWN LOADED " ĊĠĠĠ ĠInstall Status . INSTALL ING Ġ-> Ġ" INSTALL ING " ĊĠĠĠ ĠInstall Status . INST ALLED Ġ-> Ġ" INST ALLED " ĊĠĠĠ ĠInstall Status . FAILED Ġ-> Ġ" FAILED " ĊĠĠĠ ĠInstall Status . C ANCE LED Ġ-> Ġ" C ANCE LED " ĊĠĠĠ Ġelse Ġ-> Ġ" UNKNOWN ĠINSTALL ĠSTATUS : Ġ$ status " Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġconstant Ġname Ġfor Ġinstallation Ġerror Ċ Ġ* Ġ@ param Ġcode ĠInstallation Ġerror Ġcode Ċ Ġ*/ Ċ @ Suppress (" DE PREC ATION ") Ċ fun Ġformat Install ErrorCode ( code : ĠInt ): ĠString Ġ= Ġwhen ( code ) Ġ{ ĊĠĠĠ ĠInstall ErrorCode . NO _ ERROR Ġ-> Ġ" NO _ ERROR " ĊĠĠĠ ĠInstall ErrorCode . NO _ ERROR _ PAR TI ALLY _ ALLOWED Ġ-> Ġ" NO _ ERROR _ PAR TI ALLY _ ALLOWED " ĊĠĠĠ ĠInstall ErrorCode . ERROR _ UNKNOWN Ġ-> Ġ" ERROR _ UNKNOWN " ĊĠĠĠ ĠInstall ErrorCode . ERROR _ API _ NOT _ AVAILABLE Ġ-> Ġ" ERROR _ API _ NOT _ AVAILABLE " ĊĠĠĠ ĠInstall ErrorCode . ERROR _ INVALID _ REQUEST Ġ-> Ġ" ERROR _ INVALID _ REQUEST " ĊĠĠĠ ĠInstall ErrorCode . ERROR _ INSTALL _ UN AVAILABLE Ġ-> Ġ" ERROR _ INSTALL _ UN AVAILABLE " ĊĠĠĠ ĠInstall ErrorCode . ERROR _ INSTALL _ NOT _ ALLOWED Ġ-> Ġ" ERROR _ INSTALL _ UN AVAILABLE " ĊĠĠĠ ĠInstall ErrorCode . ERROR _ DOWNLOAD _ NOT _ PRESENT Ġ-> Ġ" ERROR _ DOWNLOAD _ NOT _ PRESENT " ĊĠĠĠ ĠInstall ErrorCode . ERROR _ APP _ NOT _ OWN ED Ġ-> Ġ" ERROR _ APP _ NOT _ OWN ED " ĊĠĠĠ ĠInstall ErrorCode . ERROR _ INTERNAL _ ERROR Ġ-> Ġ" ERROR _ INTERNAL _ ERROR " ĊĠĠĠ ĠInstall ErrorCode . ERROR _ PLAY _ STORE _ NOT _ FOUND Ġ-> Ġ" ERROR _ PLAY _ STORE _ NOT _ FOUND " ĊĠĠĠ Ġelse Ġ-> Ġ" UNKNOWN ĠINSTALL ĠERROR : Ġ$ code " Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġconstant Ġname Ġfor Ġupdate Ġstatus Ċ Ġ*/ Ċ private Ġfun ĠApp Update Info . format Install Status (): ĠString Ġ= Ġformat Install Status ( install Status ()) Ċ Ċ /** Ċ Ġ* ĠRetrieves Ġallowed Ġupdate Ġtypes Ċ Ġ*/ Ċ @ Visible ForTesting Ċ fun ĠApp Update Info . format Update Types Allowed (): ĠString Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġif Ġ( is Update Type Allowed ( FLEX IBLE )) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult . add (" FLEX IBLE ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( is Update Type Allowed ( IM MEDI ATE )) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult . add (" IM MEDI ATE ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult . take If Ġ{ Ġit . isNotEmpty () Ġ} ?. join ToString () Ġ?: Ġ" NONE " Ċ }