Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ViewModel Can be inject directly, without using ViewModelFactory #53

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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();
}
Original file line number Diff line number Diff line change
@@ -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();
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,27 @@

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.
*/

public class AboutFragment extends BaseFragment<FragmentAboutBinding, AboutViewModel> 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();
Expand All @@ -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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand All @@ -44,9 +46,9 @@ public class BlogFragment extends BaseFragment<FragmentBlogBinding, BlogViewMode
FragmentBlogBinding mFragmentBlogBinding;
@Inject
LinearLayoutManager mLayoutManager;

@Inject
ViewModelProviderFactory factory;
private BlogViewModel mBlogViewModel;
BlogViewModel mBlogViewModel;

public static BlogFragment newInstance() {
Bundle args = new Bundle();
Expand All @@ -67,7 +69,6 @@ public int getLayoutId() {

@Override
public BlogViewModel getViewModel() {
mBlogViewModel = ViewModelProviders.of(this, factory).get(BlogViewModel.class);
return mBlogViewModel;
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ public class OpenSourceFragment extends BaseFragment<FragmentOpenSourceBinding,
LinearLayoutManager mLayoutManager;
@Inject
OpenSourceAdapter mOpenSourceAdapter;

@Inject
ViewModelProviderFactory factory;
private OpenSourceViewModel mOpenSourceViewModel;
OpenSourceViewModel mOpenSourceViewModel;

public static OpenSourceFragment newInstance() {
Bundle args = new Bundle();
Expand All @@ -66,7 +66,6 @@ public int getLayoutId() {

@Override
public OpenSourceViewModel getViewModel() {
mOpenSourceViewModel = ViewModelProviders.of(this, factory).get(OpenSourceViewModel.class);
return mOpenSourceViewModel;
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@
public class RateUsDialog extends BaseDialog implements RateUsCallback {

private static final String TAG = RateUsDialog.class.getSimpleName();

@Inject
ViewModelProviderFactory factory;
private RateUsViewModel mRateUsViewModel;
RateUsViewModel mRateUsViewModel;

public static RateUsDialog newInstance() {
RateUsDialog fragment = new RateUsDialog();
Expand All @@ -60,7 +60,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
View view = binding.getRoot();

AndroidSupportInjection.inject(this);
mRateUsViewModel = ViewModelProviders.of(this,factory).get(RateUsViewModel.class);
// mRateUsViewModel = ViewModelProviders.of(this,factory).get(RateUsViewModel.class);
binding.setViewModel(mRateUsViewModel);

mRateUsViewModel.setNavigator(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,23 @@

package com.mindorks.framework.mvvm.ui.main.rating;

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 RateUsDialogProvider {
public class RateUsDialogModule {

@Provides
RateUsViewModel rateUsViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) {
return new RateUsViewModel(dataManager, schedulerProvider);
}

@ContributesAndroidInjector
abstract RateUsDialog provideRateUsDialogFactory();
}