package Ġcom . mo eg irl viewer . screen . contribution Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . items Indexed Ċ import Ġandroidx . compose . material . Experimental Material Api Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Sca ffold Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . La unched Effect Ċ import Ġandroidx . compose . runtime . remember Coroutine Scope Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . text . style . Text Overflow Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġandroidx . h ilt . navigation . compose . h ilt ViewModel Ċ import Ġcom . google . ac comp an ist . swiper ef resh . Swipe Refresh Ċ import Ġcom . mo eg irl viewer . R Ċ import Ġcom . mo eg irl viewer . comp able . On Swipe Loading Ċ import Ġcom . mo eg irl viewer . component . Center Ċ import Ġcom . mo eg irl viewer . component . Empty Content Ċ import Ġcom . mo eg irl viewer . component . R ipple Color Scope Ċ import Ġcom . mo eg irl viewer . component . Scroll Load List Footer Ċ import Ġcom . mo eg irl viewer . component . styled . Styled Swipe Refresh Indicator Ċ import Ġcom . mo eg irl viewer . component . styled . Styled Text Ċ import Ġcom . mo eg irl viewer . component . styled . Styled Top AppBar Ċ import Ġcom . mo eg irl viewer . screen . contribution . component . Contribution Item Ċ import Ġcom . mo eg irl viewer . theme . background 2 Ċ import Ġcom . mo eg irl viewer . theme . elevation Ċ import Ġcom . mo eg irl viewer . util . Load Status Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . time . format . DateTime Formatter Ċ Ċ @ Suppress Lint (" Unused Material Sca ffold Padding Parameter ") Ċ @ Experimental Material Api Ċ @ Composable Ċ fun ĠCont ribution Screen ( arguments : ĠCont ribution Route Arguments ) Ġ{ ĊĠ Ġval Ġmodel : ĠCont ribution Screen Model Ġ= Ġh ilt ViewModel () ĊĠ Ġval Ġscope Ġ= Ġremember Coroutine Scope () ĊĠ Ġval Ġtheme Colors Ġ= ĠMaterial Theme . colors ĊĊĠ ĠLa unched Effect ( true ) Ġ{ ĊĠĠĠ Ġmodel . route Arguments Ġ= Ġarguments ĊĠĠĠ Ġif Ġ( model . status Ġ== ĠLoad Status . INITIAL ) Ġmodel . load Contribution List ( true ) ĊĠ Ġ} ĊĊĠ ĠLa unched Effect ( model . status ) Ġ{ ĊĠĠĠ Ġmodel . swipe Refresh State . is Refresh ing Ġ= Ġmodel . status Ġ== ĠLoad Status . INIT _ LOADING ĊĠ Ġ} ĊĊĠ Ġmodel . lazy List State . On Swipe Loading () Ġ{ ĊĠĠĠ Ġscope . launch Ġ{ Ġmodel . load Contribution List () Ġ} ĊĠ Ġ} ĊĊĠ ĠScaffold ( ĊĠĠĠ ĠbackgroundColor Ġ= Ġtheme Colors . background 2 , ĊĠĠĠ Ġtop Bar Ġ= Ġ{ ĊĠĠĠĠĠ ĠComp osed Header ( ĊĠĠĠĠĠĠĠ ĠuserName Ġ= Ġarguments . userName ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠSw ipe Refresh ( ĊĠĠĠĠĠ Ġstate Ġ= Ġmodel . swipe Refresh State , ĊĠĠĠĠĠ Ġon Refresh Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ Ġmodel . load Contribution List ( true ) Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ Ġindicator Ġ= Ġ{ Ġstate , Ġtrigger Ġ-> ĊĠĠĠĠĠĠĠ ĠStyled Swipe Refresh Indicator ( state , Ġtrigger ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( model . status Ġ!= ĠLoad Status . EMPTY ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLazy Column ( ĊĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize (), ĊĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġmodel . lazy List State ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġitems Indexed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġmodel . contribution List , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ{ Ġ_, Ġitem Ġ-> Ġitem . re vid Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġindex , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCont ribution Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Name Ġ= Ġitem . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrev Id Ġ= Ġitem . re vid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Rev Id Ġ= Ġitem . parent id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate ISO Ġ= Ġitem . timestamp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= Ġitem . comment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiff Size Ġ= Ġitem . sized iff , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġitem Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScroll Load List Footer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġmodel . status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Reload Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ Ġmodel . load Contribution List () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠEmpty Content () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠComp osed Header ( ĊĠ ĠuserName : ĠString Ċ ) Ġ{ ĊĠ Ġval Ġmodel : ĠCont ribution Screen Model Ġ= Ġh ilt ViewModel () ĊĠ Ġval Ġscope Ġ= Ġremember Coroutine Scope () ĊĠ Ġval Ġtheme Colors Ġ= ĠMaterial Theme . colors ĊĊĠ ĠSurface ( ĊĠĠĠ Ġelevation Ġ= Ġif Ġ( Material Theme . elevation ) Ġ 3 . dp Ġelse Ġ 0 . dp , ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠColumn () Ġ{ ĊĠĠĠĠĠ ĠStyled Top AppBar ( ĊĠĠĠĠĠĠĠ Ġelevation Ġ= Ġ 0 . dp , ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠStyled Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( id Ġ= ĠR . string . user Contribution ) Ġ+ Ġ" ï¼ļ" Ġ+ ĠuserName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverflow Ġ= ĠText Overflow . El lipsis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġtheme Colors . on Primary ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ ĠR ipple Color Scope ( color Ġ= Ġtheme Colors . on Primary ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 4 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( theme Colors . primary ), ĊĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠCenter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. weight ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ Ġmodel . show DatePicker Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStyled Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġmodel . startDate . format ( DateTime Formatter . of Pattern (" yyyy - MM - dd ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġtheme Colors . on Primary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 6 . sp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ ĠStyled Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġ 1 0 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"-", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġtheme Colors . on Primary ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠ ĠCenter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. weight ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ Ġmodel . show DatePicker Dialog ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStyled Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġmodel . endDate . format ( DateTime Formatter . of Pattern (" yyyy - MM - dd ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġtheme Colors . on Primary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 6 . sp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }