package Ġio . heck el . nt fy . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġio . heck el . nt fy . data .* Ċ import Ġio . heck el . nt fy . up . Distribut or Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlin . collections . List Ċ Ċ class ĠSub scriptions ViewModel ( private Ġval Ġrepository : ĠRepository ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġfun Ġlist (): ĠLive Data < List < Subscription >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . get Subscriptions LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlist Ids With Instant Status (): ĠLive Data < Set < Pair < Long , ĠBoolean >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . get Subscription Ids With Instant Status LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( subscription : ĠSubscription ) Ġ= ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . add Subscription ( subscription ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove ( context : ĠContext , Ġsubscription Id : ĠLong ) Ġ= ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubscription Ġ= Ġrepository . get Subscription ( subscriptionId ) Ġ?: Ġreturn @ launch ĊĠĠĠĠĠĠĠ Ġif Ġ( subscription . up AppId Ġ!= Ġnull Ġ&& Ġsubscription . up Connector Token Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistribut or Ġ= ĠDist ribut or ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdistribut or . send Un registered ( subscription . up AppId , Ġsubscription . up Connector Token ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepository . removeAll Notifications ( subscriptionId ) ĊĠĠĠĠĠĠĠ Ġrepository . remove Subscription ( subscriptionId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget ( baseUrl : ĠString , Ġtopic : ĠString ): ĠSubscription ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . get Subscription ( baseUrl , Ġtopic ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠSub scriptions ViewModel Factory ( private Ġval Ġrepository : ĠRepository ) Ġ: ĠViewModel Provider . Factory Ġ{ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >) Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( model Class ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis AssignableFrom ( Subscriptions ViewModel :: class . java ) Ġ-> ĠSub scriptions ViewModel ( repository ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unknown ĠviewModel Ġclass Ġ$ model Class ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ