package Ġcom . demo . auth . firebase . di . module ĊĊ Ċ import Ġcom . android . arch . auth . core . common . Email Field Validator Ċ import Ġcom . android . arch . auth . core . common . Login Field Validator Ċ import Ġcom . android . arch . auth . core . common . Password Field Validator Ċ import Ġcom . android . arch . auth . core . data . repository . Base Auth Repository Ċ import Ġcom . android . arch . auth . core . data . repository . Email Auth Repository Ċ import Ġcom . android . arch . auth . core . data . repository . Social Network Auth Repository Ċ import Ġcom . android . arch . auth . core . data . repository . UserProfile Data Cache Ċ import Ġcom . android . arch . auth . core . domain . auth .* Ċ import Ġcom . android . arch . auth . core . domain . profile . Delete Profile UseCase Ċ import Ġcom . android . arch . auth . core . domain . profile . Get Profile Uid UseCase Ċ import Ġcom . android . arch . auth . core . domain . profile . Get Profile UseCase Ċ import Ġcom . android . arch . auth . core . domain . profile . Update Profile UseCase Ċ import Ġcom . android . arch . auth . firebase . Firebase Auth Repository Ċ import Ġcom . demo . auth . firebase . common . Email Field Validator Impl Ċ import Ġcom . demo . auth . firebase . common . Login Field Validator Impl Ċ import Ġcom . demo . auth . firebase . common . Password Field Validator Impl Ċ import Ġcom . demo . auth . firebase . db . App Database Ċ import Ġcom . demo . auth . firebase . db . UserProfile Repository Ċ import Ġcom . demo . auth . firebase . db . entity . UserProfile Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ class ĠRepository Module Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide UserProfile Data Cache ( database : ĠApp Database ): ĠUser Profile Data Cache < UserProfile > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUser Profile Repository ( database . dao ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Base Auth Repository ( repository : ĠFirebase Auth Repository < UserProfile >): ĠBase Auth Repository < UserProfile > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Email Auth Repository ( repository : ĠFirebase Auth Repository < UserProfile >): ĠEmail Auth Repository < UserProfile > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Social Network Auth Repository ( repository : ĠFirebase Auth Repository < UserProfile >): ĠSocial Network Auth Repository < UserProfile > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠField Validators ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Email Field Validator (): ĠEmail Field Validator Ġ= ĠEmail Field Validator Impl () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Login Field Validator (): ĠLogin Field Validator Ġ= ĠLogin Field Validator Impl () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Password Field Validator (): ĠPassword Field Validator Ġ= ĠPassword Field Validator Impl () ĊĊĠĠĠ Ġ// ĠUse Cases ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Get Profile UseCase ( data Cache : ĠUser Profile Data Cache < UserProfile >): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Profile UseCase < UserProfile > Ġ= ĠGet Profile UseCase ( data Cache ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Get Profile Uid UseCase ( data Cache : ĠUser Profile Data Cache < UserProfile >): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet Profile Uid UseCase < UserProfile > Ġ= ĠGet Profile Uid UseCase ( data Cache ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Update Profile UseCase ( data Cache : ĠUser Profile Data Cache < UserProfile >): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Profile UseCase < UserProfile > Ġ= ĠUpdate Profile UseCase ( data Cache ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Delete Profile UseCase ( data Cache : ĠUser Profile Data Cache < UserProfile >): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDelete Profile UseCase < UserProfile > Ġ= ĠDelete Profile UseCase ( data Cache ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Networks Sign Out UseCase ( repository : ĠSocial Network Auth Repository < UserProfile >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠNetworks Sign Out UseCase < UserProfile > Ġ= ĠNetworks Sign Out UseCase ( repository ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Auth Response Listener UseCase ( repository : ĠBase Auth Repository < UserProfile >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠAuth Response Listener UseCase < UserProfile > Ġ= ĠAuth Response Listener UseCase ( repository ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide SignIn With Email UseCase ( repository : ĠEmail Auth Repository < UserProfile >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠSign In With Email UseCase < UserProfile > Ġ= ĠSign In With Email UseCase ( repository ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide SignIn With Social Network UseCase ( repository : ĠSocial Network Auth Repository < UserProfile >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠSign In With Social Network UseCase < UserProfile > Ġ= ĊĠĠĠĠĠĠĠ ĠSign In With Social Network UseCase ( repository ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide SignUp UseCase ( repository : ĠEmail Auth Repository < UserProfile >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠSign Up UseCase < UserProfile > Ġ= ĠSign Up UseCase ( repository ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Send Edit Profile Request UseCase ( repository : ĠEmail Auth Repository < UserProfile >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠSend Edit Profile Request UseCase < UserProfile > Ġ= ĠSend Edit Profile Request UseCase ( repository ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Change Password UseCase ( repository : ĠEmail Auth Repository < UserProfile >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠChange Password UseCase < UserProfile > Ġ= ĠChange Password UseCase ( repository ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Recovery Password UseCase ( repository : ĠEmail Auth Repository < UserProfile >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠRecovery Password UseCase < UserProfile > Ġ= ĠRecovery Password UseCase ( repository ) Ċ }