package Ġcom . ge ot ab . mobile . sdk . module . file System Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . annotation . Keep Ċ import Ġcom . ge ot ab . mobile . sdk . Error Ċ import Ġcom . ge ot ab . mobile . sdk . models . enums . Ge ot ab Drive Error Ċ import Ġcom . ge ot ab . mobile . sdk . module . Base Function Ċ import Ġcom . ge ot ab . mobile . sdk . module . Failure Ċ import Ġcom . ge ot ab . mobile . sdk . module . Module Function Ċ import Ġcom . ge ot ab . mobile . sdk . module . Result Ċ import Ġcom . ge ot ab . mobile . sdk . module . Success Ċ import Ġcom . ge ot ab . mobile . sdk . util . FileUtils Ċ import Ġcom . ge ot ab . mobile . sdk . util . Json Util Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . lang . reflect . Type Ċ Ċ @ Keep Ċ data Ġclass ĠRead File As Text Argument ( ĊĠĠĠ Ġval Ġpath : ĠString ? Ċ ) Ċ class ĠRead File As Text Function ( val Ġcontext : ĠContext , Ġoverride Ġval Ġname : ĠString Ġ= Ġ" readFile As Text ", Ġoverride Ġval Ġmodule : ĠFileSystem Module ) Ġ: ĊĠĠĠ ĠModule Function , ĠBase Function < ReadFile As Text Argument >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfile Utils Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFileUtils ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Javascript Call ( json String : ĠString ?, Ġjs Callback : Ġ( Result < Success < String >, ĠFailure >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodule . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Options Ġ= Ġtransform Or Invalidate ( json String , Ġjs Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġthe ĠGson ĠTransformer Ġconverts Ġto Ġnull Ġvalue . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Options . path Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjs Callback ( Failure ( Error ( Ge ot ab Drive Error . MODULE _ FUNCTION _ ARGUMENT _ ERROR ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Uri Ġ= Ġmodule . drv fs Root Uri Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjs Callback ( Failure ( Error ( Ge ot ab Drive Error . FILE _ EXCEPTION , ĠFileSystem Module . FILE SYSTEM _ NOT _ EXIST ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġfile Utils . validate Url And Return Path ( file Options . path ) Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjs Callback ( Failure ( Error ( Ge ot ab Drive Error . MODULE _ FUNCTION _ ARGUMENT _ ERROR ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFile Ġexist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile To Read Ġ= Ġfile Utils . getFile ( path , Ġroot Uri ) Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjs Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFailure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGe ot ab Drive Error . FILE _ EXCEPTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileSystem Module . FILE _ NOT _ EXIST ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġread Ġfrom Ġfile ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( file To Read ). read Text ( Charsets . UTF _ 8 ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext String Ġ= ĠJson Util . toJson ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjs Callback ( Success ( text String )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġe . message ?. let Ġ{ Ġ": Ġ$ it " Ġ} Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjs Callback ( Failure ( Error ( Ge ot ab Drive Error . FILE _ EXCEPTION , ĠFileSystem Module . READ FILE _ FAIL Ġ+ Ġmessage ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetType (): ĠType Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠType Token < ReadFile As Text Argument >() Ġ{} . type ĊĠĠĠ Ġ} Ċ } Ċ