package Ġcom . ly te fast . flex input . model Ċ Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . core . view . input method . Input Content Info Compat Ċ import Ġcom . facebook . common . util . HashCode Util Ċ import Ġcom . ly te fast . flex input . utils . FileUtils . get FileName Ċ import Ġjava . io . File ĊĊ Ċ /** Ċ Ġ* ĠRepresents Ġan Ġattach able Ġresource Ġin Ġthe Ġform Ġof Ġ[ Uri ]. Ċ Ġ* Ċ Ġ* Ġ@ author ĠSam ĠSh ih Ċ Ġ*/ Ċ open Ġclass ĠAttachment < out ĠT >( ĊĠĠĠ Ġval Ġid : ĠLong , ĊĠĠĠ Ġval Ġuri : ĠUri , ĊĠĠĠ Ġval ĠdisplayName : ĠString , ĊĠĠĠ Ġval Ġdata : ĠT ? Ġ= Ġnull Ċ ) Ġ: ĠParcel able Ġ{ ĊĊĠ Ġconstructor ( parcel In : ĠParcel ) Ġ: Ġthis ( ĊĠĠĠĠĠ Ġid Ġ= Ġparcel In . read Long (), ĊĠĠĠĠĠ Ġuri Ġ= Ġparcel In . read Parcelable ( Uri :: class . java . class Loader ) Ġ?: ĠUri . EMPTY , ĊĠĠĠĠĠ ĠdisplayName Ġ= Ġparcel In . readString () Ġ?: Ġ"", ĊĠĠĠĠĠ Ġdata Ġ= Ġnull Ġ Ġ// Ġthis Ġshouldn 't Ġbe Ġrequired Ġany ways . ĊĠ Ġ) ĊĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( other Ġ!= Ġnull Ġ&& Ġother Ġis ĠAttachment <* >) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġthis . id Ġ== Ġother . id Ġ&& Ġthis . uri Ġ== Ġother . uri ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= ĠHash Code Util . hashCode ( id , Ġuri ) ĊĊĠ Ġoverride Ġfun Ġdescribe Contents (): ĠInt Ġ= Ġ 0 ĊĊĠ Ġ@ Call Super ĊĠ Ġoverride Ġfun ĠwriteTo Parcel ( dest : ĠParcel , Ġflags : ĠInt ) Ġ{ ĊĠĠĠ Ġdest . write Long ( id ) ĊĠĠĠ Ġdest . write Parcelable ( uri , Ġflags ) ĊĠĠĠ Ġdest . writeString ( displayName ) ĊĠĠĠ Ġ// ĠĠĠ Ġdest . write Parcelable ( data , Ġflags ); ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" unused ") Ġ Ġ// ĠUsed Ġas Ġpart Ġof ĠPar cell able ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval ĠCRE ATOR Ġ= Ġobject Ġ: ĠParcel able . Creator < Attachment <* >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel ( parcel In : ĠParcel ): ĠAttachment < *> Ġ= ĠAttachment < Any >( parcel In ) ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ): ĠArray < Attachment < *> ?> Ġ= ĠarrayOf Null s ( size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun ĠUri . to Attachment ( resolver : ĠContent Resolver ): ĠAttachment < Uri > Ġ{ ĊĠĠĠĠĠ Ġval ĠfileName Ġ= Ġget FileName ( resolver ) Ġ?: ĠhashCode (). toString () ĊĠĠĠĠĠ Ġreturn ĠAttachment ( hashCode (). to Long (), Ġthis , ĠfileName , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun ĠInput Content Info Compat . to Attachment ( ĊĠĠĠĠĠĠĠ Ġresolver : ĠContent Resolver , ĊĠĠĠĠĠĠĠ Ġappend Extension : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġdefault Name : ĠString Ġ= Ġ" unknown "): ĠAttachment < Input Content Info Compat > Ġ{ ĊĠĠĠĠĠ Ġval Ġraw FileName Ġ= Ġcontent Uri . getQuery Parameter (" fileName ") Ġ?: Ġdefault Name ĊĠĠĠĠĠ Ġval ĠfileName Ġ= Ġraw FileName . substring After Last ( File . separator Char ) ĊĊĠĠĠĠĠ Ġval Ġattachment Name Ġ= Ġif Ġ( append Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġdescription . get MimeType ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġcontent Uri . getQuery Parameter (" mime Type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġresolver . getType ( content Uri ) ĊĠĠĠĠĠĠĠ Ġtype ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ"$ fileName .${ it . substring After Last ('/') }" ĊĠĠĠĠĠĠĠ Ġ} Ġ?: ĠfileName ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠfileName ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġreturn ĠAttachment ( ĊĠĠĠĠĠĠĠĠĠ Ġcontent Uri . hashCode (). to Long (), ĊĠĠĠĠĠĠĠĠĠ Ġcontent Uri , ĊĠĠĠĠĠĠĠĠĠ Ġattachment Name , ĊĠĠĠĠĠĠĠĠĠ Ġthis ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ