diff --git a/app/src/main/java/com/mindorks/framework/mvvm/di/builder/ActivityBuilder.java b/app/src/main/java/com/mindorks/framework/mvvm/di/builder/ActivityBuilder.java index d42bb36..701fbca 100644 --- a/app/src/main/java/com/mindorks/framework/mvvm/di/builder/ActivityBuilder.java +++ b/app/src/main/java/com/mindorks/framework/mvvm/di/builder/ActivityBuilder.java @@ -16,15 +16,12 @@ package com.mindorks.framework.mvvm.di.builder; -import com.mindorks.framework.mvvm.ui.about.AboutFragmentProvider; import com.mindorks.framework.mvvm.ui.feed.FeedActivity; import com.mindorks.framework.mvvm.ui.feed.FeedActivityModule; -import com.mindorks.framework.mvvm.ui.feed.blogs.BlogFragmentProvider; -import com.mindorks.framework.mvvm.ui.feed.opensource.OpenSourceFragmentProvider; import com.mindorks.framework.mvvm.ui.login.LoginActivity; import com.mindorks.framework.mvvm.ui.main.MainActivity; -import com.mindorks.framework.mvvm.ui.main.rating.RateUsDialogProvider; import com.mindorks.framework.mvvm.ui.splash.SplashActivity; + import dagger.Module; import dagger.android.ContributesAndroidInjector; @@ -36,16 +33,13 @@ public abstract class ActivityBuilder { @ContributesAndroidInjector(modules = { FeedActivityModule.class, - BlogFragmentProvider.class, - OpenSourceFragmentProvider.class}) + }) abstract FeedActivity bindFeedActivity(); @ContributesAndroidInjector abstract LoginActivity bindLoginActivity(); - @ContributesAndroidInjector(modules = { - AboutFragmentProvider.class, - RateUsDialogProvider.class}) + @ContributesAndroidInjector(modules = {}) abstract MainActivity bindMainActivity(); @ContributesAndroidInjector diff --git a/app/src/main/java/com/mindorks/framework/mvvm/di/builder/DialogBuilder.java b/app/src/main/java/com/mindorks/framework/mvvm/di/builder/DialogBuilder.java new file mode 100644 index 0000000..093959b --- /dev/null +++ b/app/src/main/java/com/mindorks/framework/mvvm/di/builder/DialogBuilder.java @@ -0,0 +1,21 @@ +package com.mindorks.framework.mvvm.di.builder; + + +import com.mindorks.framework.mvvm.ui.main.rating.RateUsDialog; +import com.mindorks.framework.mvvm.ui.main.rating.RateUsDialogModule; + +import dagger.Module; +import dagger.android.ContributesAndroidInjector; + +/** + * Project : android-mvvm-architecture-mindorks + * Created by: Harsh Dalwadi - Senior Software Engineer + * Created Date: 09-Mar-19 + */ +@Module +public abstract class DialogBuilder { + + + @ContributesAndroidInjector(modules = RateUsDialogModule.class) + abstract RateUsDialog provideRateUsDialogFactory(); +} diff --git a/app/src/main/java/com/mindorks/framework/mvvm/di/builder/FragmentBuilder.java b/app/src/main/java/com/mindorks/framework/mvvm/di/builder/FragmentBuilder.java new file mode 100644 index 0000000..4d22482 --- /dev/null +++ b/app/src/main/java/com/mindorks/framework/mvvm/di/builder/FragmentBuilder.java @@ -0,0 +1,30 @@ +package com.mindorks.framework.mvvm.di.builder; + + +import com.mindorks.framework.mvvm.ui.about.AboutFragment; +import com.mindorks.framework.mvvm.ui.about.AboutFragmentModule; +import com.mindorks.framework.mvvm.ui.feed.blogs.BlogFragment; +import com.mindorks.framework.mvvm.ui.feed.blogs.BlogFragmentModule; +import com.mindorks.framework.mvvm.ui.feed.opensource.OpenSourceFragment; +import com.mindorks.framework.mvvm.ui.feed.opensource.OpenSourceFragmentModule; + +import dagger.Module; +import dagger.android.ContributesAndroidInjector; + +/** + * Project : android-mvvm-architecture-mindorks + * Created by: Harsh Dalwadi - Senior Software Engineer + * Created Date: 09-Mar-19 + */ +@Module +abstract public class FragmentBuilder { + + @ContributesAndroidInjector(modules = BlogFragmentModule.class) + abstract BlogFragment bindBlogFragment(); + + @ContributesAndroidInjector(modules = OpenSourceFragmentModule.class) + abstract OpenSourceFragment provideOpenSourceFragmentFactory(); + + @ContributesAndroidInjector(modules = AboutFragmentModule.class) + abstract AboutFragment provideAboutFragmentFactory(); +} diff --git a/app/src/main/java/com/mindorks/framework/mvvm/di/component/AppComponent.java b/app/src/main/java/com/mindorks/framework/mvvm/di/component/AppComponent.java index 5001aa2..91d28d9 100644 --- a/app/src/main/java/com/mindorks/framework/mvvm/di/component/AppComponent.java +++ b/app/src/main/java/com/mindorks/framework/mvvm/di/component/AppComponent.java @@ -17,19 +17,24 @@ package com.mindorks.framework.mvvm.di.component; import android.app.Application; + import com.mindorks.framework.mvvm.MvvmApp; import com.mindorks.framework.mvvm.di.builder.ActivityBuilder; +import com.mindorks.framework.mvvm.di.builder.DialogBuilder; +import com.mindorks.framework.mvvm.di.builder.FragmentBuilder; import com.mindorks.framework.mvvm.di.module.AppModule; + +import javax.inject.Singleton; + import dagger.BindsInstance; import dagger.Component; import dagger.android.AndroidInjectionModule; -import javax.inject.Singleton; /** * Created by amitshekhar on 07/07/17. */ @Singleton -@Component(modules = {AndroidInjectionModule.class, AppModule.class, ActivityBuilder.class}) +@Component(modules = {AndroidInjectionModule.class, AppModule.class, ActivityBuilder.class, FragmentBuilder.class, DialogBuilder.class}) public interface AppComponent { void inject(MvvmApp app); diff --git a/app/src/main/java/com/mindorks/framework/mvvm/ui/about/AboutFragment.java b/app/src/main/java/com/mindorks/framework/mvvm/ui/about/AboutFragment.java index 7476083..7b052c8 100644 --- a/app/src/main/java/com/mindorks/framework/mvvm/ui/about/AboutFragment.java +++ b/app/src/main/java/com/mindorks/framework/mvvm/ui/about/AboutFragment.java @@ -16,16 +16,17 @@ package com.mindorks.framework.mvvm.ui.about; -import androidx.lifecycle.ViewModelProviders; import android.os.Bundle; -import androidx.annotation.Nullable; + import com.mindorks.framework.mvvm.BR; import com.mindorks.framework.mvvm.R; -import com.mindorks.framework.mvvm.ViewModelProviderFactory; import com.mindorks.framework.mvvm.databinding.FragmentAboutBinding; import com.mindorks.framework.mvvm.ui.base.BaseFragment; + import javax.inject.Inject; +import androidx.annotation.Nullable; + /** * Created by amitshekhar on 09/07/17. */ @@ -33,9 +34,9 @@ public class AboutFragment extends BaseFragment implements AboutNavigator { public static final String TAG = AboutFragment.class.getSimpleName(); + // ViewModelProviderFactory factory; @Inject - ViewModelProviderFactory factory; - private AboutViewModel mAboutViewModel; + AboutViewModel mAboutViewModel; public static AboutFragment newInstance() { Bundle args = new Bundle(); @@ -56,7 +57,7 @@ public int getLayoutId() { @Override public AboutViewModel getViewModel() { - mAboutViewModel = ViewModelProviders.of(this,factory).get(AboutViewModel.class); +// mAboutViewModel = ViewModelProviders.of(this,factory).get(AboutViewModel.class); return mAboutViewModel; } diff --git a/app/src/main/java/com/mindorks/framework/mvvm/ui/about/AboutFragmentProvider.java b/app/src/main/java/com/mindorks/framework/mvvm/ui/about/AboutFragmentModule.java similarity index 59% rename from app/src/main/java/com/mindorks/framework/mvvm/ui/about/AboutFragmentProvider.java rename to app/src/main/java/com/mindorks/framework/mvvm/ui/about/AboutFragmentModule.java index c0e1c23..05f9694 100644 --- a/app/src/main/java/com/mindorks/framework/mvvm/ui/about/AboutFragmentProvider.java +++ b/app/src/main/java/com/mindorks/framework/mvvm/ui/about/AboutFragmentModule.java @@ -16,15 +16,23 @@ package com.mindorks.framework.mvvm.ui.about; +import com.mindorks.framework.mvvm.data.DataManager; +import com.mindorks.framework.mvvm.utils.rx.SchedulerProvider; + import dagger.Module; -import dagger.android.ContributesAndroidInjector; +import dagger.Provides; /** - * Created by amitshekhar on 14/09/17. + * Project : android-mvvm-architecture-mindorks + * Created by: Harsh Dalwadi - Senior Software Engineer + * Created Date: 09-Mar-19 */ @Module -public abstract class AboutFragmentProvider { +public class AboutFragmentModule { + + @Provides + AboutViewModel aboutViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) { + return new AboutViewModel(dataManager, schedulerProvider); + } - @ContributesAndroidInjector - abstract AboutFragment provideAboutFragmentFactory(); } diff --git a/app/src/main/java/com/mindorks/framework/mvvm/ui/feed/blogs/BlogFragment.java b/app/src/main/java/com/mindorks/framework/mvvm/ui/feed/blogs/BlogFragment.java index 11c2ced..eec0ef5 100644 --- a/app/src/main/java/com/mindorks/framework/mvvm/ui/feed/blogs/BlogFragment.java +++ b/app/src/main/java/com/mindorks/framework/mvvm/ui/feed/blogs/BlogFragment.java @@ -16,22 +16,24 @@ package com.mindorks.framework.mvvm.ui.feed.blogs; -import androidx.lifecycle.ViewModelProviders; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; import android.view.View; + import com.mindorks.framework.mvvm.BR; import com.mindorks.framework.mvvm.R; -import com.mindorks.framework.mvvm.ViewModelProviderFactory; import com.mindorks.framework.mvvm.data.model.api.BlogResponse; import com.mindorks.framework.mvvm.databinding.FragmentBlogBinding; import com.mindorks.framework.mvvm.ui.base.BaseFragment; + import java.util.List; + import javax.inject.Inject; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; + /** * Created by amitshekhar on 10/07/17. */ @@ -44,9 +46,9 @@ public class BlogFragment extends BaseFragment