package Ġfr . sm ar quis . fc m . di Ċ Ċ import Ġandroidx . room . Room Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . adapters . Pol ymorphic Json Adapter Factory Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory Ċ import Ġfr . sm ar quis . fc m . data . db . App Database Ċ import Ġfr . sm ar quis . fc m . data . db . Migrate From SharedPreferences Ċ import Ġfr . sm ar quis . fc m . data . model . Payload Ċ import Ġfr . sm ar quis . fc m . data . repository . Message Repository Ċ import Ġfr . sm ar quis . fc m . view model . Messages ViewModel Ċ import Ġorg . k oin . android . ext . k oin . android Context Ċ import Ġorg . k oin . android . view model . dsl . viewModel Ċ import Ġorg . k oin . dsl . module Ċ Ċ val Ġmain Ġ= Ġmodule Ġ{ ĊĠĠĠ ĠviewModel Ġ{ ĠMessages ViewModel ( get (), Ġget ()) Ġ} ĊĠĠĠ Ġsingle Ġ{ ĠMessage Repository ( get ()) Ġ} Ċ } Ċ Ċ val Ġdatabase Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġsingle Ġ{ ĠRoom . database Builder ( android Context (), ĠApp Database :: class . java , Ġ" database "). add Callback ( Migrate From SharedPreferences ( get (), Ġget ())). build () Ġ} ĊĠĠĠ Ġsingle Ġ{ Ġget < App Database >(). dao () Ġ} Ċ } Ċ Ċ val Ġjson Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠ ĠM oshi . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Pol ymorphic Json Adapter Factory . of ( Payload :: class . java , Ġ" type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( Payload . App :: class . java , Ġ" app ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( Payload . Link :: class . java , Ġ" link ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( Payload . Ping :: class . java , Ġ" ping ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( Payload . Raw :: class . java , Ġ" raw ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Subtype ( Payload . Text :: class . java , Ġ" text ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Kotlin Json Adapter Factory ()). build () ĊĠĠĠ Ġ} ĊĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" app " Ġto ĠPayload . App :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" link " Ġto ĠPayload . Link :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ping " Ġto ĠPayload . Ping :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" text " Ġto ĠPayload . Text :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ