package Ġorg . dsc nit ro ur kel a . ela ichi . adapters Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . paging . Paging Data Adapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . webkit . Web Settings Compat Ċ import Ġandroidx . webkit . WebView Feature Ċ import Ġorg . dsc nit ro ur kel a . ela ichi . R Ċ import Ġorg . dsc nit ro ur kel a . ela ichi . api . data . Parsed Mail Ċ import Ġorg . dsc nit ro ur kel a . ela ichi . databinding . Mail Items Binding Ċ import Ġorg . dsc nit ro ur kel a . ela ichi . others . Api Constants Ċ import Ġorg . dsc nit ro ur kel a . ela ichi . utils . show Toast Ċ Ċ class ĠMail Items Adapter ( ĊĠĠĠ Ġprivate Ġval Ġcolors : ĠInt Array , Ċ // ĠĠĠ Ġprivate Ġval Ġattachment Adapter : ĠAttachment Adapter , Ċ ) Ġ: ĠP aging Data Adapter < Parsed Mail , ĠMail Items Adapter . Mail Items ViewHolder >( ĊĠĠĠ Ġobject Ġ: ĠDiff CallBack < Parsed Mail >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠParsed Mail , Ġnew Item : ĠParsed Mail ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠ Ġ}) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcolors Length Ġ= Ġcolors . last Index ĊĊĠĠĠ Ġclass ĠMail Items ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) ĊĊĠĠĠ Ġvar Ġid Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġtoken : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcss : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġview : ĠTextView ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ ĠMail Items ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . mail _ items , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMail Items ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠMail Items Binding . bind ( holder . item View ) ĊĠĠĠĠĠĠĠ ĠgetItem ( position )?. let Ġ{ Ġmail Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġitem Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . divider . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. text Ġ= Ġmail . subject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup WebView ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content ( binding , Ġmail ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . isVisible Ġ= Ġ! web View . isVisible Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView Attachments . isVisible Ġ= ĠwebView . isVisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView Email Details . isVisible Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . isVisible Ġ&& ĠtextView Mail Body . isVisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView Mail Body . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView Email Details . isVisible Ġ= Ġ! textView Email Details . isVisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SimpleDateFormat ") ĊĠĠĠ Ġprivate Ġfun Ġset Content ( binding : ĠMail Items Binding , Ġmail : ĠParsed Mail ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġcolors [ mail . id Ġ% Ġcolors Length ] ĊĠĠĠĠĠĠĠ Ġval Ġsender Ġ= Ġmail . from ?. split (' Ġ') ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( mail . body Ġ+ Ġmail . attachments ). replace (" auth = co ", Ġ" auth = qp & amp ; z aut ht o ken =$ token ") Ġ+ Ġcss ĊĠĠĠĠĠĠĠ Ġvar Ġaddress Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġmail Body Ġ= Ġ"${ sender ?. last () }\ n ${ mail . time }" ĊĠĠĠĠĠĠĠ Ġmail . address ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Ġ+= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView Sender Name . text Ġ= Ġsender ?. first () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView Mail Body . text Ġ= Ġmail Body ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView Email Details . text Ġ= Ġaddress Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mail . flag ?. contains (' f ') Ġ== Ġtrue ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView St ared . isVisible Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mail . attachments ?. isEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView Attachment . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mail . flag ?. contains (' r ') Ġ== Ġtrue ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView Reply . isVisible Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . load Data With Base URL ( Api Constants . BASE _ URL , Ġbody , Ġ" text / html ", Ġ" utf - 8 ", Ġnull ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView Attachments . apply Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattachment Adapter . attachments Name Ġ= Ġmail . attachments Name Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattachment Adapter . attachments Link Ġ= Ġmail . attachments Link Ġ?: Ġempty List () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġattachment Adapter Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mail . id Ġ== Ġid ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView Attachments . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mail . body . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . show Toast (" This Ġmail Ġhas Ġno Ġcontent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Suppress Lint (" Set JavaScript Enabled ") ĊĠĠĠ Ġprivate Ġfun Ġsetup WebView ( binding : ĠMail Items Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . web View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( WebView Feature . is Feature Supported ( WebView Feature . FORCE _ DARK )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdark Mode Ġ= Ġwhen Ġ( AppCompat Delegate . getDefault Night Mode ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . MODE _ N IGHT _ NO Ġ-> ĠWeb Settings Compat . FORCE _ DARK _ OFF ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠWeb Settings Compat . FORCE _ DARK _ ON ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeb Settings Compat . set Force Dark ( this . settings , Ġdark Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Vertical ScrollBar Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . java Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . loads Images Autom atically Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup On ItemClickListener ( onClick : Ġ(( String ) Ġ-> ĠUnit )) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġattachment Adapter . on ItemClickListener Ġ= ĠonClick ĊĠĠĠ Ġ} Ċ }