package Ġcom . example . cond uit . utils Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . example . cond uit . base . Resource Ċ import Ġcom . google . android . material . sn ackbar . Snackbar ĊĊ Ċ fun ĠView . show Sn ackBar ( ĊĠĠĠ Ġmessage : ĠString , ĊĠĠĠ Ġaction : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġval Ġsn ackBar Ġ= ĠSn ackbar . make ( this , Ġmessage , ĠSn ackbar . LENGTH _ SHORT ) ĊĠĠĠ Ġaction ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġsn ackBar . setAction (" Retry ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġsn ackBar . show () Ċ } ĊĊ Ċ fun ĠFragment . handle ApiError ( ĊĠĠĠ Ġerror : ĠResource . Error , ĊĠĠĠ Ġretry Fun : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġerror . is Network Error Ġ-> Ġrequire View (). show Sn ackBar (" Please Ġcheck Ġyour Ġinternet Ġconnection ", Ġretry Fun ) ĊĠĠĠĠĠĠĠ Ġ// ĠCode Ġ 4 0 1 Ġ-> ĠUn Authorized Ġrequest ĊĠĠĠĠĠĠĠ Ġerror . errorCode Ġ== Ġ 4 0 1 Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // Ċ // fun ĠFragment . handle ApiError ( Ċ // ĠĠĠ Ġfailure : ĠResource . Error , Ċ // ĠĠĠ Ġretry Function : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull Ċ // ) Ġ{ Ċ // ĠĠĠ Ġwhen Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġfailure . is Network Error Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġrequire View (). show Sn ackBar (" Please Ġcheck Ġyour Ġnetwork Ġconnection ", Ġretry Function ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġfailure . errorCode Ġ== Ġ 4 0 1 Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠError Ġcode Ġ 4 0 1 Ġmeans ĠUn Authorized Ġrequest Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠSign In Fragment ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġit Ġcomes Ġfrom Ġsign In Fragment Ġ-> ĠMe ans Ġuser Ġhas Ġentered Ġwrong Ġemail Ġor Ġpassword Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire View (). show Sn ackBar (" You Ġhave Ġentered Ġwrong Ġemail Ġor Ġpassword ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġit Ġcomes Ġfrom Ġother Ġthan ĠSign In Fragment Ġthen Ġaccess / auth Ġtoken Ġhas Ġbeen Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexpired Ġso Ġwe Ġneed Ġto Ġlogout Ġthe Ġuser Ġ& Ġuser Ġwill Ġhave Ġto Ġsig In Ġagain Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠLogout Ġthe Ġuser Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( this Ġas ĠBase Fragment < *, Ġ*, Ġ*> ). logout () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġany Ġother Ġerror Ġwe Ġcan Ġsimply Ġdisplay Ġerror Ġbody Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror : ĠString Ġ= Ġfailure . error Body ?. string () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toString () Ġ Ġ// ĠtoString () Ġlg ane Ġse Ġnull Ġstring Ġn hi Ġa ae gi Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġrequire View (). show Sn ackBar ( error ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ //} Ċ