package Ġtz . co . as oft Ċ Ċ import Ġkotlinx . coroutines . suspend C ancellable Coroutine Ċ import Ġkotlin . coroutines . resume Ċ import Ġkotlin . coroutines . resume With Exception Ċ Ċ actual Ġexternal Ġclass ĠFirebase Storage Upload Task Ġ{ ĊĠĠĠ Ġfun Ġon ( ĊĠĠĠĠĠĠĠ Ġevent : ĠString , ĊĠĠĠĠĠĠĠ Ġprogress : Ġ(( Task Snapshot ) Ġ-> ĠUnit )? , ĊĠĠĠĠĠĠĠ Ġerror : Ġ(( dynamic ) Ġ-> ĠUnit )? , ĊĠĠĠĠĠĠĠ Ġcomplete : Ġ(() Ġ-> ĠUnit )? ĊĠĠĠ Ġ) Ċ } Ċ Ċ actual Ġsuspend Ġfun ĠFirebase Storage Upload Task . await () Ġ= Ġsuspend C ancellable Coroutine < Unit > Ġ{ Ġcont Ġ-> ĊĠĠĠ Ġon ( ĊĠĠĠĠĠĠĠ Ġevent Ġ= Ġ" state _ changed ", ĊĠĠĠĠĠĠĠ Ġprogress Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġerror Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcont . resume With Exception ( Throwable (" Failed Ġto Ġupload Ġfile : Ġ$ it ")) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġcomplete Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcont . resume ( Unit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ actual Ġfun ĠFirebase Storage Upload Task . on Progress ( call : Ġ( Firebase Storage Upload Task Snapshot ) Ġ-> ĠUnit ) Ġ= Ġon ( ĊĠĠĠ Ġevent Ġ= Ġ" state _ changed ", ĊĠĠĠ Ġprogress Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġcall ( J ST ask Snapshot ( it )) ĊĠĠĠ Ġ}, ĊĠĠĠ Ġerror Ġ= Ġnull , ĊĠĠĠ Ġcomplete Ġ= Ġnull Ċ )