Last active
June 15, 2021 12:06
-
-
Save Sanjay-Prajapati/d6e7f723d554f5dad80844f5bed2f573 to your computer and use it in GitHub Desktop.
Gist for Network Module creation using Hilt in java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Retrofit | |
implementation 'com.squareup.retrofit2:retrofit:2.9.0' | |
implementation 'com.squareup.retrofit2:converter-gson:2.9.0' | |
implementation "com.squareup.okhttp3:logging-interceptor:4.9.1" | |
//Rx | |
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' | |
implementation 'io.reactivex.rxjava2:rxjava:2.2.12' | |
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.6.1' | |
//hilt | |
implementation 'com.google.dagger:hilt-android:2.37' | |
annotationProcessor 'com.google.dagger:hilt-android-compiler:2.36' | |
// navigation component | |
implementation "androidx.navigation:navigation-fragment:2.3.5" | |
implementation "androidx.navigation:navigation-ui:2.3.5" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.app.myapplication.di; | |
import android.content.Context; | |
import com.app.myapplication.BuildConfig; | |
import com.app.myapplication.data.docs.repository.DocApi; | |
import java.util.concurrent.TimeUnit; | |
import javax.inject.Singleton; | |
import dagger.Module; | |
import dagger.Provides; | |
import dagger.hilt.InstallIn; | |
import dagger.hilt.android.qualifiers.ApplicationContext; | |
import dagger.hilt.components.SingletonComponent; | |
import io.reactivex.schedulers.Schedulers; | |
import okhttp3.OkHttpClient; | |
import okhttp3.logging.HttpLoggingInterceptor; | |
import retrofit2.Retrofit; | |
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; | |
import retrofit2.converter.gson.GsonConverterFactory; | |
@Module | |
@InstallIn(SingletonComponent.class) | |
public class NetworkModule { | |
@Singleton | |
@Provides | |
Retrofit provideRetrofit(OkHttpClient client) { | |
return new Retrofit.Builder() | |
.baseUrl(BuildConfig.API_URL) | |
.addConverterFactory(GsonConverterFactory.create()) | |
.addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io())) | |
.client(client) | |
.build(); | |
} | |
@Singleton | |
@Provides | |
OkHttpClient provideClient(@ApplicationContext Context context) { | |
HttpLoggingInterceptor logger = new HttpLoggingInterceptor(); | |
logger.setLevel(HttpLoggingInterceptor.Level.BODY); | |
return new OkHttpClient.Builder() | |
.connectTimeout(60, TimeUnit.SECONDS) | |
.readTimeout(60, TimeUnit.SECONDS) | |
.writeTimeout(60, TimeUnit.SECONDS) | |
.addNetworkInterceptor(logger) | |
.build(); | |
} | |
@Singleton | |
@Provides | |
DocApi provideDocumentAPI(Retrofit retrofit) { | |
return retrofit.create(DocApi.class); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static class RecyclerItemTouchHelper extends ItemTouchHelper.SimpleCallback { | |
private RecyclerItemTouchHelperListener listener; | |
public RecyclerItemTouchHelper(int dragDirs, int swipeDirs, RecyclerItemTouchHelperListener listener) { | |
super(dragDirs, swipeDirs); | |
this.listener = listener; | |
} | |
@Override | |
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { | |
return true; | |
} | |
@Override | |
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) { | |
if (viewHolder != null) { | |
final View foregroundView = ((DocViewHolder) viewHolder).mBinding.rlForeground; | |
getDefaultUIUtil().onSelected(foregroundView); | |
} | |
} | |
@Override | |
public void onChildDrawOver(Canvas c, RecyclerView recyclerView, | |
RecyclerView.ViewHolder viewHolder, float dX, float dY, | |
int actionState, boolean isCurrentlyActive) { | |
final View foregroundView = ((DocViewHolder) viewHolder).mBinding.rlForeground; | |
getDefaultUIUtil().onDrawOver(c, recyclerView, foregroundView, dX, dY, | |
actionState, isCurrentlyActive); | |
} | |
@Override | |
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { | |
final View foregroundView = ((DocViewHolder) viewHolder).mBinding.rlForeground; | |
getDefaultUIUtil().clearView(foregroundView); | |
} | |
@Override | |
public void onChildDraw(Canvas c, RecyclerView recyclerView, | |
RecyclerView.ViewHolder viewHolder, float dX, float dY, | |
int actionState, boolean isCurrentlyActive) { | |
final View foregroundView = ((DocViewHolder) viewHolder).mBinding.rlForeground; | |
getDefaultUIUtil().onDraw(c, recyclerView, foregroundView, dX, dY, | |
actionState, isCurrentlyActive); | |
} | |
@Override | |
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { | |
listener.onSwiped(viewHolder, direction, viewHolder.getAdapterPosition()); | |
} | |
@Override | |
public int convertToAbsoluteDirection(int flags, int layoutDirection) { | |
return super.convertToAbsoluteDirection(flags, layoutDirection); | |
} | |
public interface RecyclerItemTouchHelperListener { | |
void onSwiped(RecyclerView.ViewHolder viewHolder, int direction, int position); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import androidx.lifecycle.MutableLiveData; | |
import com.app.myapplication.data.docs.entity.ResponseModel; | |
import com.app.myapplication.domain.base.UiState; | |
import com.app.myapplication.domain.docs.repository.DocRepository; | |
import org.jetbrains.annotations.NotNull; | |
import javax.inject.Inject; | |
import io.reactivex.android.schedulers.AndroidSchedulers; | |
import io.reactivex.disposables.CompositeDisposable; | |
import io.reactivex.disposables.Disposable; | |
import io.reactivex.observers.DisposableObserver; | |
public class DocRepositoryImpl implements DocRepository { | |
DocApi mApiEndPoint; | |
@Inject | |
public DocRepositoryImpl(DocApi api){ | |
mApiEndPoint = api; | |
} | |
@Override | |
public void getReleaseDocuments(CompositeDisposable compositeDisposable, MutableLiveData<UiState<ResponseModel>> callback) { | |
Disposable disposable = mApiEndPoint.getReleaseDocument() | |
.observeOn(AndroidSchedulers.mainThread()) | |
.subscribeWith(new DisposableObserver<ResponseModel>() { | |
@Override | |
public void onNext(@NotNull ResponseModel responseModel) { | |
callback.postValue(new UiState<>(false, null, responseModel)); | |
} | |
@Override | |
public void onError(@NotNull Throwable e) { | |
callback.postValue(new UiState<>(false, e.getMessage(), null)); | |
} | |
@Override | |
public void onComplete() { | |
} | |
}); | |
compositeDisposable.add(disposable); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Module | |
@InstallIn(SingletonComponent.class) | |
abstract public class RepositoryModule { | |
@Binds | |
@Singleton | |
abstract DocRepository provideDocRepository(DocRepositoryImpl repository); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ItemTouchHelper.SimpleCallback itemTouchHelperCallback = new DocAdapter | |
.RecyclerItemTouchHelper(0, ItemTouchHelper.LEFT, (viewHolder, direction, position) -> { | |
mAdapter.removeItem(position); | |
}); | |
new ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(mBinding.rvDocument); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment