package Ġedu . rose h ul man . catch and kit Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . google . firebase . firestore . Document Change Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Exception Ċ import Ġcom . google . firebase . firestore . Query Snapshot Ċ Ċ class ĠThumb nail Adapter ( ĊĠĠĠ Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġlistener : ĠThumb nail Grid Fragment . On Thumbnail Listener ? Ċ ) Ġ: ĠRecyclerView . Adapter < Thumbnail ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġthumb nails Ġ= ĠArrayList < Thumbnail >() ĊĊĠĠĠ Ġval Ġthumbnail Ref Ġ= ĠFirebase Fire store ĊĠĠĠĠĠĠĠ Ġ. getInstance () ĊĠĠĠĠĠĠĠ Ġ. collection ( Constants . TH UMB NA IL _ COLLECTION ) ĊĊĠĠĠ Ġ// ĠTODO : ĠAdd Ġstorage Ġref . ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthumbnail Ref . add Snapshot Listener Ġ{ Ġsnapshot : ĠQuery Snapshot ?, Ġexception : ĠFirebase Fire store Exception ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Constants . TAG , Ġ" Adding Ġsnapshot Ġlistener ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exception Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( Constants . TAG , Ġ" Firebase Ġerror : Ġ$ exception ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Thumbnail D iffs ( snapshot !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Thumbnail D iffs ( snapshot : ĠQuery Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( document Change Ġin Ġsnapshot . document Changes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthumbnail Ġ= ĠThumb nail . from Snapshot ( document Change . document ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( document Change . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDocument Change . Type . AD DED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thumbnail . url . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb nails . add ( 0 , Ġthumbnail ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Inserted ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDocument Change . Type . RE MOVED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġthumb nails . indexOf First Ġ{ Ġit . id Ġ== Ġthumbnail . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb nails . remove At ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Removed ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDocument Change . Type . MODI FIED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġthumb nails . indexOf First Ġ{ Ġit . id Ġ== Ġthumbnail . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb nails [ index ] Ġ= Ġthumbnail ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Changed ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠThumb nail ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . thumbnail _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠThumb nail ViewHolder ( item View , Ġcontext , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġthumb nails . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( view Holder : ĠThumb nail ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewHolder . bind ( thumb nails [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Thumbnail Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlistener ?. on Thumbnail Selected ( thumb nails [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( local Path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠYou 'll Ġwant Ġto Ġwait Ġto Ġadd Ġthis Ġto ĠFire tore Ġuntil Ġafter Ġyou Ġhave Ġa ĠStorage Ġdownload ĠURL . ĊĠĠĠĠĠĠĠ Ġ// ĠMove Ġthis Ġline Ġof Ġcode Ġthere . ĊĠĠĠĠĠĠĠ Ġthumbnail Ref . add ( Thumbnail ( local Path )) ĊĠĠĠĠĠĠĠ ĠImage Res cale Task ( local Path ). execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCould Ġsave Ġa Ġsmaller Ġversion Ġto ĠStorage Ġto Ġsave Ġtime Ġon Ġthe Ġnetwork . ĊĠĠĠ Ġ// ĠBut Ġif Ġtoo Ġsmall , Ġrecognition Ġaccuracy Ġcan Ġsuffer . ĊĠĠĠ Ġinner Ġclass ĠImage Res cale Task ( val Ġlocal Path : ĠString ) Ġ: ĠAsync Task < Void , ĠVoid , ĠBitmap >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġp 0 : ĠVoid ?): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRed uc es Ġlength Ġand Ġwidth Ġby Ġa Ġfactor Ġ( currently Ġ 2 ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġratio Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBitmap Utils . rotate And Scale By Ratio ( context , Ġlocal Path , Ġratio ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( bitmap : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠWrite Ġand Ġcall Ġa Ġnew Ġstorage Add () Ġmethod Ġwith Ġthe Ġpath Ġand Ġbitmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthat Ġuses ĠFirebase Ġstorage . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// firebase . google . com / docs / storage / android / upload - files ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }