Skip to content
This repository has been archived by the owner on May 2, 2022. It is now read-only.

Commit

Permalink
Integrate the form management contract
Browse files Browse the repository at this point in the history
  • Loading branch information
umangbholasamagra committed Apr 28, 2020
1 parent 4f41e36 commit 634c406
Show file tree
Hide file tree
Showing 904 changed files with 119,413 additions and 30 deletions.
1 change: 1 addition & 0 deletions ancillaryscreens/build.gradle
Expand Up @@ -85,6 +85,7 @@ dependencies {

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(":commons")
implementation project(":collect_app")

//Dependency Injection (Cant be shared across modules)
implementation 'androidx.appcompat:appcompat:1.0.2'
Expand Down
Expand Up @@ -2,6 +2,8 @@

import com.samagra.ancillaryscreens.data.network.BackendCallHelper;

import org.odk.collect.android.contracts.IFormManagementContract;

import javax.inject.Inject;

import io.reactivex.disposables.CompositeDisposable;
Expand All @@ -19,6 +21,7 @@ public class BasePresenter<V extends MvpView, I extends MvpInteractor> implement
private I mvpInteractor;
private BackendCallHelper apiHelper;
private CompositeDisposable compositeDisposable;
private IFormManagementContract iFormManagementContract;

/**
* These dependencies are provided by the {@link com.samagra.ancillaryscreens.di.modules.CommonsActivityModule} and
Expand All @@ -33,10 +36,11 @@ public class BasePresenter<V extends MvpView, I extends MvpInteractor> implement
* at the same time if need be (like in the event of back press during an API call)
*/
@Inject
public BasePresenter(I mvpInteractor, BackendCallHelper apiHelper, CompositeDisposable compositeDisposable) {
public BasePresenter(I mvpInteractor, BackendCallHelper apiHelper, CompositeDisposable compositeDisposable, IFormManagementContract iFormManagementContract) {
this.mvpInteractor = mvpInteractor;
this.apiHelper = apiHelper;
this.compositeDisposable = compositeDisposable;
this.iFormManagementContract = iFormManagementContract;
}

@Override
Expand Down Expand Up @@ -75,4 +79,10 @@ public void onDetach() {
public boolean isViewAttached() {
return this.mvpView != null;
}

@Override
public IFormManagementContract getIFormManagementContract() {
return iFormManagementContract;
}
}

Expand Up @@ -2,6 +2,8 @@

import com.samagra.ancillaryscreens.data.network.BackendCallHelper;

import org.odk.collect.android.contracts.IFormManagementContract;

import io.reactivex.disposables.CompositeDisposable;

/**
Expand All @@ -25,4 +27,6 @@ public interface MvpPresenter<V extends MvpView, I extends MvpInteractor> {
void onDetach();

boolean isViewAttached();

IFormManagementContract getIFormManagementContract();
}
@@ -0,0 +1,15 @@
package com.samagra.ancillaryscreens.di;

import org.odk.collect.android.contracts.IFormManagementContract;

public class FormManagementCommunicator {

private static IFormManagementContract iFormManagementContract;
public static void setContract(IFormManagementContract formContract){
iFormManagementContract = formContract;
}

public static IFormManagementContract getContract(){
return iFormManagementContract;
}
}
Expand Up @@ -5,13 +5,16 @@

import com.samagra.ancillaryscreens.di.ActivityContext;
import com.samagra.ancillaryscreens.di.ApplicationContext;
import com.samagra.ancillaryscreens.di.FormManagementCommunicator;
import com.samagra.ancillaryscreens.di.PreferenceInfo;
import com.samagra.commons.Constants;
import com.samagra.ancillaryscreens.data.network.BackendCallHelper;
import com.samagra.ancillaryscreens.data.network.BackendCallHelperImpl;
import com.samagra.ancillaryscreens.data.prefs.CommonsPreferenceHelper;
import com.samagra.ancillaryscreens.data.prefs.CommonsPrefsHelperImpl;

import org.odk.collect.android.contracts.IFormManagementContract;

import dagger.Module;
import dagger.Provides;
import io.reactivex.disposables.CompositeDisposable;
Expand Down Expand Up @@ -54,6 +57,13 @@ CommonsPreferenceHelper provideCommonsPreferenceHelper(CommonsPrefsHelperImpl co
return commonsPrefsHelper;
}


@Provides
IFormManagementContract provideIFormManagementContract() {
return FormManagementCommunicator.getContract();
}


@Provides
@PreferenceInfo
String providePreferenceFileName() {
Expand Down
Expand Up @@ -6,6 +6,8 @@
import com.samagra.ancillaryscreens.data.network.BackendCallHelper;
import com.samagra.commons.TaskScheduler.ScheduledOneTimeWork;

import org.odk.collect.android.contracts.IFormManagementContract;

import javax.inject.Inject;

import io.reactivex.disposables.CompositeDisposable;
Expand All @@ -19,11 +21,10 @@
public class AboutPresenter<V extends AboutContract.View, I extends AboutContract.Interactor> extends BasePresenter<V, I> implements AboutContract.Presenter<V, I> {

@Inject
public AboutPresenter(I mvpInteractor, BackendCallHelper apiHelper, CompositeDisposable compositeDisposable) {
super(mvpInteractor, apiHelper, compositeDisposable);
public AboutPresenter(I mvpInteractor, BackendCallHelper apiHelper, CompositeDisposable compositeDisposable, IFormManagementContract iFormManagementContract) {
super(mvpInteractor, apiHelper, compositeDisposable, iFormManagementContract);
}


@Override
public void test(int x, int y, float z) {
Data data = new Data.Builder()
Expand Down
Expand Up @@ -12,6 +12,8 @@
import com.samagra.commons.ExchangeObject;
import com.samagra.commons.Modules;

import org.odk.collect.android.contracts.IFormManagementContract;

import javax.inject.Inject;

import io.reactivex.android.schedulers.AndroidSchedulers;
Expand All @@ -28,8 +30,8 @@
public class LoginPresenter<V extends LoginContract.View, I extends LoginContract.Interactor> extends BasePresenter<V, I> implements LoginContract.Presenter<V, I> {

@Inject
public LoginPresenter(I mvpInteractor, BackendCallHelper apiHelper, CompositeDisposable compositeDisposable) {
super(mvpInteractor, apiHelper, compositeDisposable);
public LoginPresenter(I mvpInteractor, BackendCallHelper apiHelper, CompositeDisposable compositeDisposable, IFormManagementContract iFormManagementContract) {
super(mvpInteractor, apiHelper, compositeDisposable, iFormManagementContract);
}

/**
Expand Down
Expand Up @@ -42,7 +42,7 @@ public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivityComponent().inject(this);
splashPresenter.onAttach(this);
splashPresenter.init();
splashPresenter.requestStoragePermissions();
}


Expand Down
Expand Up @@ -70,5 +70,7 @@ interface Presenter<V extends View, I extends Interactor> extends MvpPresenter<V
void moveToNextScreen();

void init();

void requestStoragePermissions();
}
}
Expand Up @@ -11,8 +11,13 @@
import com.samagra.commons.Constants;
import com.samagra.commons.ExchangeObject;
import com.samagra.commons.Modules;
import com.samagra.commons.utils.AlertDialogUtils;


import org.odk.collect.android.contracts.AppPermissionUserActionListener;
import org.odk.collect.android.contracts.IFormManagementContract;
import org.odk.collect.android.contracts.PermissionsHelper;

import javax.inject.Inject;

import io.reactivex.disposables.CompositeDisposable;
Expand All @@ -29,10 +34,11 @@ public class SplashPresenter<V extends SplashContract.View, I extends SplashCont
private static final boolean EXIT = true;

@Inject
public SplashPresenter(I mvpInteractor, BackendCallHelper apiHelper, CompositeDisposable compositeDisposable) {
super(mvpInteractor, apiHelper, compositeDisposable);
public SplashPresenter(I mvpInteractor, BackendCallHelper apiHelper, CompositeDisposable compositeDisposable, IFormManagementContract iFormManagementContract) {
super(mvpInteractor, apiHelper, compositeDisposable, iFormManagementContract);
}


/**
* Decides the next screen and moves to the decided screen.
* This decision is based on the Login status which is managed by the {@link com.samagra.ancillaryscreens.screens.login.LoginActivity}
Expand All @@ -49,6 +55,7 @@ public void moveToNextScreen() {
ExchangeObject.SignalExchangeObject signalExchangeObject = new ExchangeObject.SignalExchangeObject(Modules.MAIN_APP, Modules.ANCILLARY_SCREENS, intent, true);
AncillaryScreensDriver.mainApplication.getEventBus().send(signalExchangeObject);
} else {
getIFormManagementContract().resetODKForms(getMvpView().getActivityContext());
Timber.d("Launching Login");
AncillaryScreensDriver.launchLoginScreen(getMvpView().getActivityContext());
}
Expand Down Expand Up @@ -81,6 +88,34 @@ public void init() {
getMvpInteractor().updateFirstRunFlag(false);
getMvpView().showSimpleSplash();
updateCurrentVersion();
getIFormManagementContract().resetEverythingODK();
}

@Override
public void requestStoragePermissions() {
PermissionsHelper permissionUtils = new PermissionsHelper();
if (!PermissionsHelper.areStoragePermissionsGranted(getMvpView().getActivityContext())) {
permissionUtils.requestStoragePermissions((SplashActivity) getMvpView().getActivityContext(), new AppPermissionUserActionListener() {
@Override
public void granted() {
try {
getIFormManagementContract().createODKDirectories();
} catch (RuntimeException e) {
AlertDialogUtils.showDialog(AlertDialogUtils.createErrorDialog((SplashActivity) getMvpView().getActivityContext(),
e.getMessage(), EXIT), (SplashActivity) getMvpView().getActivityContext());
return;
}
init();
}

@Override
public void denied() {
getMvpView().finishActivity();
}
});
} else {
init();
}
}


Expand Down
5 changes: 3 additions & 2 deletions app/build.gradle
Expand Up @@ -4,14 +4,14 @@ apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'

android {
compileSdkVersion 29
compileSdkVersion 28
defaultConfig {
vectorDrawables.useSupportLibrary = true
applicationId "com.samagra.demo.samiksha"


minSdkVersion 19
targetSdkVersion 29
targetSdkVersion 28
versionCode 10070
versionName "3.3.0"
multiDexEnabled true
Expand Down Expand Up @@ -39,6 +39,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(":commons")
implementation project(":ancillaryscreens")
implementation project(":collect_app")

implementation 'androidx.multidex:multidex:2.0.1'

Expand Down
2 changes: 2 additions & 0 deletions app/src/main/AndroidManifest.xml
Expand Up @@ -5,6 +5,8 @@

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

Expand Down
13 changes: 12 additions & 1 deletion app/src/main/java/com/samagra/parent/MyApplication.java
Expand Up @@ -18,6 +18,7 @@
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
import com.samagra.ancillaryscreens.AncillaryScreensDriver;
import com.samagra.ancillaryscreens.di.FormManagementCommunicator;
import com.samagra.commons.CommonUtilities;
import com.samagra.commons.ExchangeObject;
import com.samagra.commons.InternetMonitor;
Expand All @@ -34,6 +35,9 @@
import com.samagra.parent.helper.OkHttpClientProvider;


import org.odk.collect.android.application.Collect;
import org.odk.collect.android.contracts.FormManagementSectionInteractor;

import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
Expand All @@ -48,7 +52,7 @@
* @author Pranav Sharma
* @see MainApplication
*/
public class MyApplication extends Application implements MainApplication, LifecycleObserver {
public class MyApplication extends Collect implements MainApplication, LifecycleObserver {

protected ApplicationComponent applicationComponent;

Expand Down Expand Up @@ -76,6 +80,7 @@ public void onCreate() {
InternetMonitor.init(this);
InternetMonitor.startMonitoringInternet();
Manager.init(this);
initializeFormManagementPackage();
AncillaryScreensDriver.init(this, AppConstants.BASE_API_URL,
"http://142.93.208.135:8080/shiksha-saathi/",
"http://142.93.208.135:8080/shiksha-saathi/",
Expand All @@ -84,6 +89,12 @@ public void onCreate() {
}


private void initializeFormManagementPackage() {
org.odk.collect.android.contracts.ComponentManager.registerFormManagementPackage(new FormManagementSectionInteractor());
FormManagementCommunicator.setContract(org.odk.collect.android.contracts.ComponentManager.iFormManagementContract);
org.odk.collect.android.contracts.ComponentManager.iFormManagementContract.setODKModuleStyle(this, R.drawable.saksham_bg, R.style.BaseAppTheme,
R.style.FormEntryActivityTheme, R.style.BaseAppTheme_SettingsTheme_Dark, Long.MAX_VALUE);
}
public static String getApplicationId() {
return "4b49c1c8-f90e-41e9-99ab-16d4af9eb269";
}
Expand Down
4 changes: 3 additions & 1 deletion app/src/main/java/com/samagra/parent/base/BaseActivity.java
Expand Up @@ -15,6 +15,8 @@
import com.samagra.parent.di.component.DaggerActivityComponent;
import com.samagra.parent.di.modules.ActivityModule;

import org.odk.collect.android.activities.CollectAbstractActivity;

import static android.content.pm.PackageManager.GET_META_DATA;


Expand All @@ -28,7 +30,7 @@
*
* @author Pranav Sharma
*/
public abstract class BaseActivity extends AppCompatActivity implements MvpView {
public abstract class BaseActivity extends CollectAbstractActivity implements MvpView {

private ActivityComponent activityComponent;

Expand Down
12 changes: 11 additions & 1 deletion app/src/main/java/com/samagra/parent/base/BasePresenter.java
@@ -1,5 +1,7 @@
package com.samagra.parent.base;

import org.odk.collect.android.contracts.IFormManagementContract;

import javax.inject.Inject;

/**
Expand All @@ -13,10 +15,13 @@ public class BasePresenter<V extends MvpView, I extends MvpInteractor> implement

private V mvpView;
private I mvpInteractor;
private IFormManagementContract iFormManagementContract;


@Inject
public BasePresenter(I mvpInteractor) {
public BasePresenter(I mvpInteractor, IFormManagementContract iFormManagementContract) {
this.mvpInteractor = mvpInteractor;
this.iFormManagementContract = iFormManagementContract;
}

@Override
Expand All @@ -43,4 +48,9 @@ public void onDetach() {
public boolean isViewAttached() {
return this.mvpView != null;
}
@Override
public IFormManagementContract getIFormManagementContract() {
return iFormManagementContract;
}

}
4 changes: 4 additions & 0 deletions app/src/main/java/com/samagra/parent/base/MvpPresenter.java
@@ -1,5 +1,7 @@
package com.samagra.parent.base;

import org.odk.collect.android.contracts.IFormManagementContract;

/**
* This is the base interface that all the 'Presenter Contracts' must extend.
* Methods maybe added to it as and when required.
Expand All @@ -16,4 +18,6 @@ public interface MvpPresenter<V extends MvpView, I extends MvpInteractor> {
void onDetach();

boolean isViewAttached();
IFormManagementContract getIFormManagementContract();

}

0 comments on commit 634c406

Please sign in to comment.