package Ġcom . github . ku ya 3 2 . ch itch at . presentation . profile čĊč Ċ import Ġandroidx . compose . foundation . Image č Ċ import Ġandroidx . compose . foundation . border č Ċ import Ġandroidx . compose . foundation . layout .* č Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column č Ċ import Ġandroidx . compose . foundation . lazy . remember Lazy List State č Ċ import Ġandroidx . compose . foundation . shape . Circle Shape č Ċ import Ġandroidx . compose . material . Material Theme č Ċ import Ġandroidx . compose . material . Text č Ċ import Ġandroidx . compose . runtime . Composable č Ċ import Ġandroidx . compose . runtime . remember č Ċ import Ġandroidx . compose . ui . Alignment č Ċ import Ġandroidx . compose . ui . Alignment . Companion . Center H orizontally č Ċ import Ġandroidx . compose . ui . Modifier č Ċ import Ġandroidx . compose . ui . draw . clip č Ċ import Ġandroidx . compose . ui . geometry . Offset č Ċ import Ġandroidx . compose . ui . graphics . Transform Origin č Ċ import Ġandroidx . compose . ui . graphics . graphics Layer č Ċ import Ġandroidx . compose . ui . input . nested scroll . Nested Scroll Connection č Ċ import Ġandroidx . compose . ui . input . nested scroll . Nested Scroll Source č Ċ import Ġandroidx . compose . ui . input . nested scroll . nested Scroll č Ċ import Ġandroidx . compose . ui . platform . Local Configuration č Ċ import Ġandroidx . compose . ui . res . p ainter Resource č Ċ import Ġandroidx . compose . ui . res . string Resource č Ċ import Ġandroidx . compose . ui . text . font . Font Weight č Ċ import Ġandroidx . compose . ui . unit . dp č Ċ import Ġandroidx . h ilt . navigation . compose . h ilt ViewModel č Ċ import Ġandroidx . navigation . Nav Controller č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . R č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . core . domain . models . Post č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . core . domain . models . User č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . core . presentation . components . Post č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . core . presentation . components . Standard Toolbar č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . presentation . profile . components . Banner Section č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . presentation . profile . components . Profile Header Section č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . core . presentation . ui . theme . Large Profile Picture Size č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . core . presentation . ui . theme . Space Medium č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . core . utils . Screen č Ċ import Ġcom . github . ku ya 3 2 . ch itch at . core . utils . to Px čĊč Ċ @ Composable č Ċ fun ĠProfile Screen ( čĊĠĠĠ Ġnav Controller : ĠNav Controller , čĊĠĠĠ ĠviewModel : ĠProfile ViewModel Ġ= Ġh ilt ViewModel () č Ċ ) Ġ{ čĊĠĠĠ Ġval Ġlazy List State Ġ= Ġremember Lazy List State () čĊĠĠĠ Ġval Ġtoolbar State Ġ= ĠviewModel . toolbar State . value čĊčĊĠĠĠ Ġval Ġtoolbar Height Collapsed Ġ= Ġ 7 5 . dp čĊĠĠĠ Ġval Ġimage Collapse Offset Y Ġ= Ġremember Ġ{ čĊĠĠĠĠĠĠĠ Ġ( toolbar Height Collapsed Ġ- ĠLarge Profile Picture Size Ġ/ Ġ 2 f ) Ġ/ Ġ 2 f čĊĠĠĠ Ġ} čĊĠĠĠ Ġval Ġbanner Height Ġ= Ġ( Local Configuration . current . screen Width Dp Ġ/ Ġ 2 . 5 f ). dp čĊĠĠĠ Ġval Ġtoolbar Height Expanded Ġ= Ġremember Ġ{ čĊĠĠĠĠĠĠĠ Ġbanner Height Ġ+ ĠLarge Profile Picture Size čĊĠĠĠ Ġ} čĊĠĠĠ Ġval Ġmax Offset Ġ= Ġremember Ġ{ čĊĠĠĠĠĠĠĠ Ġtoolbar Height Expanded Ġ- Ġtoolbar Height Collapsed čĊĠĠĠ Ġ} čĊĠĠĠ Ġval Ġnested Scroll Connection Ġ= Ġremember Ġ{ čĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠNested Scroll Connection Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pre Scroll ( available : ĠOffset , Ġsource : ĠNested Scroll Source ): ĠOffset Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelta Ġ= Ġavailable . y čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( delta Ġ> Ġ 0 f Ġ&& Ġlazy List State . first Visible Item Index Ġ!= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOffset . Zero čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Offset Ġ= ĠviewModel . toolbar State . value . toolbar Offset Y Ġ+ Ġdelta čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Toolbar Offset Y ( new Offset . coerce In ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Value Ġ= Ġ- max Offset . to Px (), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaximum Value Ġ= Ġ 0 f čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Expanded Ratio (( viewModel . toolbar State . value . toolbar Offset Y Ġ+ Ġmax Offset . to Px ()) Ġ/ Ġmax Offset . to Px ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOffset . Zero čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊĠĠĠ ĠBox ( čĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. nested Scroll ( nested Scroll Connection ) čĊĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠ ĠLazy Column ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize (), čĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġlazy List State čĊĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar Height Expanded Ġ- ĠLarge Profile Picture Size Ġ/ Ġ 2 0 f čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Header Section ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= ĠUser ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Picture Url Ġ= Ġ"", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" March ael ĠA code ", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Today ĠI Ġwent Ġto ĠS af ew ay Ġto Ġgrab Ġsome Ġgro c eries Ġand Ġspent Ġ$ 5 5 . ĠL ater ĠI Ġwill Ġgo Ġwork out Ġwith ĠSam Ġat Ġthe Ġ 2 4 ĠH r Ġgym .", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfollow er Count Ġ= Ġ 2 3 4 , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfollowing Count Ġ= Ġ 2 , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Count Ġ= Ġ 1 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Own Profile Ġ= Ġtrue , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Edit Click Ġ= Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( Screen . Edit Profile Screen . route ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( Space Medium )) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems ( 2 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Ġ= ĠPost ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" March ael ĠA code ", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġ"", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile ImageUrl Ġ= Ġ"", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Lorem ĠIpsum Ġis Ġsimply Ġdummy Ġtext Ġof Ġthe Ġprinting Ġand Ġtype setting Ġindustry . ĠLorem ĠIpsum Ġhas Ġbeen Ġthe Ġindustry 's Ġstandard Ġdummy Ġtext Ġever Ġsince Ġthe Ġ 1 5 0 0 s , Ġwhen Ġan Ġunknown Ġprinter Ġtook Ġa Ġg alley Ġof Ġtype Ġand Ġscr amb led Ġit Ġto Ġmake Ġa Ġtype Ġspec imen Ġbook .", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlike Count Ġ= Ġ 1 7 , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Count Ġ= Ġ 1 0 0 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Profile Image Ġ= Ġfalse , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Post Click Ġ= Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠNavigate Ġto Ġpost Ġdetails Ġdepending Ġon Ġpost čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( Screen . Post Detail Screen . route ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ ĠColumn ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Top Center ) čĊĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠStandard Toolbar ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Controller , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠR . string . your _ profile , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Bold , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Background čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill Max Width () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠBanner Section ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height (( banner Height Ġ* Ġtoolbar State . expanded R ation ). coerce In ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Value Ġ= Ġtoolbar Height Collapsed , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaximum Value Ġ= Ġbanner Height čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)), čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . ic _ ma ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġstring Resource ( id Ġ= ĠR . string . profile _ picture ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Center H orizontally ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. graphics Layer Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation Y Ġ= Ġ- Large Profile Picture Size . to Px () Ġ/ Ġ 2 f Ġ- Ġ( 1 f Ġ- Ġtoolbar State . expanded R ation ) Ġ* Ġimage Collapse Offset Y . to Px () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Origin Ġ= ĠTransform Origin ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Fraction X Ġ= Ġ 0 . 5 f , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Fraction Y Ġ= Ġ 0 f čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġ 0 . 5 f Ġ+ Ġtoolbar State . expanded R ation Ġ* Ġ 0 . 5 f čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale X Ġ= Ġscale čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Y Ġ= Ġscale čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( Large Profile Picture Size ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Circle Shape ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. border ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 . dp , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Surface , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= ĠCircle Shape čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} č Ċ }