package Ġcom . chr yn an . colors . sample . android . action Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġco il . Image Loader Ċ import Ġco il . request . Image Request Ċ import Ġcom . chr yn an . colors . palette . Palette Ċ import Ġcom . chr yn an . colors . palette . generate Ċ import Ġcom . chr yn an . colors . sample . android . state . Palette Change Ċ import Ġcom . chr yn an . colors . sample . android . state . Palette Intent Ċ import Ġcom . chr yn an . colors . sample . android . state . Palette State Ċ import Ġcom . chr yn an . presentation . Action Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . flow Ċ Ċ class ĠGenerate Palette From Uri Action ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġimage Loader : ĠImage Loader Ċ ) Ġ: ĠAction < Palette Intent . Load Uri , ĠPalette State , ĠPalette Change > Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġperform ( ĊĠĠĠĠĠĠĠ Ġintent : ĠPalette Intent . Load Uri , ĊĠĠĠĠĠĠĠ Ġstate : ĠPalette State ? ĊĠĠĠ Ġ): ĠFlow < Palette Change > Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġemit ( Palette Change . Started Loading ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠImage Request . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. data ( intent . uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġimage Loader . execute ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= Ġresult . drawable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( drawable Ġis ĠBitmap Drawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpalette Ġ= ĠPalette . generate ( drawable ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( Palette Change . Loaded ( palette Ġ= Ġpalette )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( Palette Change . Encounter ed Error ( message Ġ= Ġ" Error Ġgenerating Ġpalette .")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( Palette Change . Encounter ed Error ( message Ġ= Ġe . message Ġ?: Ġ" Error Ġgenerating Ġpalette .")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ