package Ġde . mr pine . xk cd feed Ċ Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . format . DateFormat Ċ import Ġandroid . util . Log Ċ import Ġandroidx . activity . Component Activity Ċ import Ġandroidx . activity . compose . setContent Ċ import Ġandroidx . compose . foundation . Experimental Foundation Api Ċ import Ġandroidx . compose . material . Experimental Material Api Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . remember Coroutine Scope Ċ import Ġandroidx . compose . ui . Experimental Compose Ui Api Ċ import Ġandroidx . datastore . core . DataStore Ċ import Ġandroidx . datastore . preferences . core . Preferences Ċ import Ġandroidx . datastore . preferences . preferences DataStore Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . view model . compose . viewModel Ċ import Ġandroidx . navigation . Nav Type Ċ import Ġandroidx . navigation . compose . Nav Host Ċ import Ġandroidx . navigation . compose . comp osable Ċ import Ġandroidx . navigation . compose . remember Nav Controller Ċ import Ġandroidx . navigation . nav Argument Ċ import Ġandroidx . navigation . nav Deep Link Ċ import Ġcom . google . ac comp an ist . pager . Experimental Pager Api Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġcom . google . firebase . messaging . k tx . messaging Ċ import Ġde . mr pine . xk cd feed . comp os ables . main . Main Content Ċ import Ġde . mr pine . xk cd feed . comp os ables . single . Single View Content State ful Ċ import Ġde . mr pine . xk cd feed . ui . theme . X KC DF eed Theme Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlinx . coroutines . flow . first Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " Ċ Ċ val ĠContext . userData Store : ĠData Store < Preferences > Ġby Ġpreferences DataStore ( name Ġ= Ġ" user - data ") Ċ Ċ @ Experimental Foundation Api Ġ@ Obsolete Cor outines Api Ċ @ Experimental Compose Ui Api @ Experimental Pager Api Ġ@ Experimental Material Api Ċ class ĠMainActivity Ġ: ĠComponent Activity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate : Ġ${ intent . data }") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe ĠNotification Channel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠgetString ( R . string . new _ com ic _ channel _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Text Ġ= ĠgetString ( R . string . new _ com ic _ channel _ description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimportance Ġ= ĠNotification Manager . IMPORT ANCE _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Channel Ġ= ĠNotification Channel ( getString ( R . string . new _ com ic _ channel _ id ), Ġname , Ġimportance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Channel . description Ġ= Ġdescription Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRegister Ġthe Ġchannel Ġwith Ġthe Ġsystem ; Ġyou Ġcan 't Ġchange Ġthe Ġimportance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġor Ġother Ġnotification Ġbehaviors Ġafter Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= Ġget System Service ( NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager . create Notification Channel ( m Channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠFirebase . messaging . subscribe To Topic (" new Com ic ") ĊĊĠĠĠĠĠĠĠ Ġset Content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscope Ġ= Ġremember Coroutine Scope () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġremember Nav Controller () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsingle Com ic ViewModel : ĠSingle Com ic ViewModel Ġ= ĠviewModel () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain ViewModel : ĠMain ViewModel Ġ= ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain ViewModel Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser DataStore , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDate Format . get DateFormat ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis :: startActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller :: navigate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Com ic ViewModel :: addTo Com ic Cache ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). get ( Main ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( main ViewModel . latest Com ics List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . add Latest Com ics ( 4 , Ġthis ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfav List Ġ= Ġmain ViewModel . favorite List Flow . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġfav List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . add Com ic Sync ( i , Ġthis @ MainActivity , ĠMain ViewModel . Tab . FA V OR ITES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate : Ġ${ Thread . currentThread (). name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠX KC DF eed Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Uri Ġ= Ġ" https :// www . xk cd . com " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNav Host ( nav Controller Ġ= Ġnav Controller , Ġstart Destination Ġ= Ġ" main View ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable (" main View ", Ġdeep Links Ġ= ĠlistOf ( nav Deep Link Ġ{ Ġuri Pattern Ġ= Ġroot Uri Ġ})) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Content ( main ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate (" single View /${ it . id }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable (" test ") Ġ{ ĠText (" hello ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ= Ġ" single View /{ number }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠlistOf ( nav Argument (" number ") Ġ{ Ġtype Ġ= ĠNav Type . Int Type Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeep Links Ġ= ĠlistOf ( nav Deep Link Ġ{ Ġuri Pattern Ġ= Ġ"$ root Uri /{ number }" Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġback Stack Entry Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcom ic Number Ġ= Ġback Stack Entry . arguments ?. getInt (" number ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Com ic ViewModel . set Com ic ( com ic Number Ġ?: Ġmain ViewModel . latest Com ic Number , Ġthis @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle View Content State ful ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel Ġ= Ġmain ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsingle ViewModel Ġ= Ġsingle Com ic ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Com ic Ġ= Ġ{ Ġsingle Com ic ViewModel . set Com ic ( it , Ġthis @ MainActivity )}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate Ġ= Ġnav Controller :: navigate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ= Ġ" single View " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( single Com ic ViewModel . current Com ic . value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Com ic ViewModel . set Com ic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . latest Com ic Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ MainActivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle View Content State ful ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel Ġ= Ġmain ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsingle ViewModel Ġ= Ġsingle Com ic ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Com ic Ġ= Ġ{ Ġsingle Com ic ViewModel . set Com ic ( it , Ġthis @ MainActivity ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate Ġ= Ġnav Controller :: navigate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }