Skip to content

Commit

Permalink
core and app components refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
matzuk committed Aug 23, 2018
1 parent 3d4fb4f commit aab65a9
Show file tree
Hide file tree
Showing 7 changed files with 63 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
import android.content.Context;

import com.arellomobile.mvp.RegisterMoxyReflectorPackages;
import com.example.core.di.app.CoreUtilsComponent;
import com.example.core_db_impl.di.CoreDbComponent;
import com.example.core_network_impl.di.CoreNetworkComponent;
import com.example.eugene_matsyuk.dagger_arch.di.app.AppComponent;
import com.example.eugene_matsyuk.dagger_arch.di.app.DaggerAppComponent;
import com.example.eugene_matsyuk.dagger_arch.routing.GlobalNavigator;
Expand Down Expand Up @@ -40,9 +37,6 @@ public void onCreate() {
sContext = getApplicationContext();
AppComponent.init(
DaggerAppComponent.builder()
.coreDbApi(CoreDbComponent.createOnce())
.coreNetworkApi(CoreNetworkComponent.createOnce())
.coreUtilsApi(CoreUtilsComponent.createOnce())
.build()
);
AppComponent.get().inject(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@

import android.support.annotation.NonNull;

import com.example.core.di.app.CoreUtilsApi;
import com.example.core_db_api.di.CoreDbApi;
import com.example.core_network_api.di.CoreNetworkApi;
import com.example.eugene_matsyuk.dagger_arch.DaggerArchApplication;
import com.example.eugene_matsyuk.dagger_arch.presentation.main.view.MainActivity;

import javax.inject.Singleton;

Expand All @@ -17,13 +13,9 @@
modules = {
GlobalNavigationModule.class,
AppModule.class
}, dependencies = {
CoreUtilsApi.class,
CoreNetworkApi.class,
CoreDbApi.class
})
@Singleton
public abstract class AppComponent implements CoreUtilsApi, CoreNetworkApi, CoreDbApi {
public abstract class AppComponent {

private static volatile AppComponent sInstance;

Expand All @@ -40,7 +32,6 @@ public static void init(@NonNull AppComponent component) {
sInstance = component;
}

public abstract void inject(MainActivity mainActivity);
public abstract void inject(DaggerArchApplication daggerArchApplication);

public abstract MainScreenComponent mainScreenComponent();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import com.example.antitheft.di.AntitheftFeatureComponent;
import com.example.antitheft.di.AntitheftFeatureDependenciesComponent;
import com.example.antitheft.presentation.view.AntitheftActivity;
import com.example.eugene_matsyuk.dagger_arch.di.app.AppComponent;
import com.example.core.di.app.CoreUtilsComponent;
import com.example.core_db_impl.di.CoreDbComponent;
import com.example.core_network_impl.di.CoreNetworkComponent;
import com.example.purchase_impl.di.DaggerPurchaseFeatureDependenciesComponent;
import com.example.purchase_impl.di.PurchaseComponent;
import com.example.scanner.di.ScannerFeatureComponent;
Expand Down Expand Up @@ -49,31 +51,45 @@ private void applyCommand(Command command) {
}

private void forward(Forward command) {
Class<?> cls;
String name = command.getScreenKey();
initFeatureComponent(name);
startFeatureStartPoint(name);
}

private void startFeatureStartPoint(String name) {
Class<?> cls;
switch (name) {
case SCANNER_SCREEN:
cls = ScannerActivity.class;
initDependenciesForScanner();
break;
case AV_SCREEN:
cls = AntitheftActivity.class;
initDependenciesForAt();
break;
default: throw new RuntimeException("Unexpected screen: " + name);
}

Intent intent = new Intent(mContext, cls);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
}

private void initFeatureComponent(String name) {
switch (name) {
case SCANNER_SCREEN:
initDependenciesForScanner();
break;
case AV_SCREEN:
initDependenciesForAt();
break;
default: throw new RuntimeException("Unexpected screen: " + name);
}
}

private void initDependenciesForAt() {
AntitheftFeatureComponent.init(
AntitheftFeatureDependenciesComponent.create(
AppComponent.get(),
AppComponent.get(),
AppComponent.get(),
CoreUtilsComponent.get(),
CoreNetworkComponent.get(),
CoreDbComponent.get(),
createPurchaseComponent()
)
);
Expand All @@ -82,17 +98,17 @@ private void initDependenciesForAt() {
private PurchaseComponent createPurchaseComponent() {
return PurchaseComponent.create(
DaggerPurchaseFeatureDependenciesComponent.builder()
.coreNetworkApi(AppComponent.get())
.coreNetworkApi(CoreNetworkComponent.get())
.build()
);
}

private void initDependenciesForScanner() {
ScannerFeatureComponent.init(
ScannerFeatureDependenciesComponent.create(
AppComponent.get(),
AppComponent.get(),
AppComponent.get(),
CoreUtilsComponent.get(),
CoreNetworkComponent.get(),
CoreDbComponent.get(),
createPurchaseComponent()
)
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,17 @@
@Singleton
public abstract class CoreDbComponent implements CoreDbApi {

/**
* Call only one time!
* @return CoreDbComponent
*/
public static CoreDbComponent createOnce() {
return DaggerCoreDbComponent.builder().build();
private static volatile CoreDbComponent sCoreDbComponent;

public static CoreDbComponent get() {
if (sCoreDbComponent == null) {
synchronized (CoreDbComponent.class) {
if (sCoreDbComponent == null) {
sCoreDbComponent = DaggerCoreDbComponent.builder().build();
}
}
}
return sCoreDbComponent;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,17 @@
@Singleton
public abstract class CoreNetworkComponent implements CoreNetworkApi {

/**
* Call only one time!
* @return CoreNetworkComponent
*/
public static CoreNetworkComponent createOnce() {
return DaggerCoreNetworkComponent.builder().build();
private static volatile CoreNetworkComponent sCoreNetworkComponent;

public static CoreNetworkComponent get() {
if (sCoreNetworkComponent == null) {
synchronized (CoreNetworkComponent.class) {
if (sCoreNetworkComponent == null) {
sCoreNetworkComponent = DaggerCoreNetworkComponent.builder().build();
}
}
}
return sCoreNetworkComponent;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,17 @@
@Singleton
public abstract class CoreUtilsComponent implements CoreUtilsApi {

/**
* Call only one time!
* @return CoreUtilsComponent
*/
public static CoreUtilsComponent createOnce() {
return DaggerCoreUtilsComponent.builder().build();
private static volatile CoreUtilsComponent sCoreUtilsComponent;

public static CoreUtilsComponent get() {
if (sCoreUtilsComponent == null) {
synchronized (CoreUtilsComponent.class) {
if (sCoreUtilsComponent == null) {
sCoreUtilsComponent = DaggerCoreUtilsComponent.builder().build();
}
}
}
return sCoreUtilsComponent;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public void onCreate() {
// component
ScannerFeatureComponent.init(
ScannerFeatureDependenciesFakeComponent.create(
CoreUtilsComponent.createOnce()
CoreUtilsComponent.get()
)
);
}
Expand Down

0 comments on commit aab65a9

Please sign in to comment.