package Ġcom . d le i bo v ich . tod ok otlin . di Ċ Ċ import Ġandroid . arch . persistence . room . Room Ċ import Ġandroid . content . Context Ċ import Ġcom . d le i bo v ich . tod ok otlin . db . App Database Ċ import Ġcom . d le i bo v ich . tod ok otlin . db . Items Repository Ċ import Ġcom . d le i bo v ich . tod ok otlin . notification . Notification Controller Ċ import Ġdagger . Component Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ġ@ Component ( modules Ġ= Ġ[( App Module :: class )]) Ċ interface ĠApp Component Ġ{ ĊĊĠĠĠ Ġfun Ġdata Component (): ĠData Component ĊĊĠĠĠ Ġfun Ġplus ( list Module : ĠList Module ): ĠList Component Ċ } Ċ Ċ @ Module Ċ class ĠApp Module ( private Ġval Ġapp Context : ĠContext ) Ġ{ ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Context (): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapp Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide App Database ( context : ĠContext ): ĠApp Database Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRoom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. database Builder ( context , ĠApp Database :: class . java , Ġ" todo - db ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Items Repository ( database : ĠApp Database ): ĠItems Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠItems Repository ( database . item Dao ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Notification Controller ( context : ĠContext ): ĠNotification Controller Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNotification Controller ( context ) ĊĠĠĠ Ġ} Ċ }