Migrate koin to v3.0

This commit is contained in:
Shinokuni 2021-09-20 19:27:12 +02:00
parent 4c490c3d49
commit 5d03ea0580
27 changed files with 56 additions and 52 deletions

View File

@ -51,8 +51,9 @@ dependencies {
androidTestImplementation 'androidx.test:rules:1.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
testImplementation 'com.squareup.okhttp3:mockwebserver:4.9.0'
androidTestImplementation "io.insert-koin:koin-test:2.2.3"
testImplementation "io.insert-koin:koin-test:2.2.3"
testImplementation "io.insert-koin:koin-test-junit4:$rootProject.ext.koin_version"
testImplementation "io.insert-koin:koin-test:$rootProject.ext.koin_version"
implementation 'com.gitlab.mvysny.konsume-xml:konsume-xml:1.0'

View File

@ -25,7 +25,7 @@ import java.util.concurrent.TimeUnit
val apiModule = module {
single(createdAtStart = true) {
single {
OkHttpClient.Builder()
.callTimeout(1, TimeUnit.MINUTES)
.readTimeout(1, TimeUnit.HOURS)

View File

@ -35,8 +35,8 @@ class LocalRSSDataSourceTest : KoinTest {
@get:Rule
val koinTestRule = KoinTestRule.create {
modules(apiModule, module {
single(override = true) {
modules(apiModule, module() {
single() {
OkHttpClient.Builder()
.callTimeout(1, TimeUnit.MINUTES)
.readTimeout(1, TimeUnit.HOURS)

View File

@ -77,7 +77,9 @@ dependencies {
implementation "androidx.work:work-runtime-ktx:2.5.0"
implementation "androidx.fragment:fragment-ktx:1.3.5"
implementation "androidx.browser:browser:1.3.0"
testImplementation "io.insert-koin:koin-test:2.2.3"
testImplementation "io.insert-koin:koin-test:$rootProject.ext.koin_version"
testImplementation "io.insert-koin:koin-test-junit4:$rootProject.ext.koin_version"
implementation 'com.github.bumptech.glide:glide:4.12.0'
kapt 'com.github.bumptech.glide:compiler:4.12.0'

View File

@ -10,7 +10,7 @@ import com.readrops.app.account.AccountTypeListActivity;
import com.readrops.app.account.AccountViewModel;
import com.readrops.app.itemslist.MainActivity;
import org.koin.androidx.viewmodel.compat.ViewModelCompat;
import org.koin.android.compat.ViewModelCompat;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.observers.DisposableSingleObserver;

View File

@ -23,8 +23,6 @@ import com.readrops.app.utils.Utils;
import com.readrops.db.entities.account.Account;
import com.readrops.db.entities.account.AccountType;
import org.koin.androidx.viewmodel.compat.ViewModelCompat;
import java.util.ArrayList;
import java.util.List;
@ -38,6 +36,8 @@ import static com.readrops.app.utils.ReadropsKeys.ACCOUNT;
import static com.readrops.app.utils.ReadropsKeys.ACCOUNT_TYPE;
import static com.readrops.app.utils.ReadropsKeys.FROM_MAIN_ACTIVITY;
import org.koin.android.compat.ViewModelCompat;
public class AccountTypeListActivity extends AppCompatActivity {
private static final String TAG = AccountTypeListActivity.class.getSimpleName();

View File

@ -13,7 +13,7 @@ import com.readrops.db.entities.Feed;
import com.readrops.db.entities.Folder;
import com.readrops.db.entities.account.Account;
import org.koin.core.parameter.DefinitionParametersKt;
import org.koin.core.parameter.ParametersHolderKt;
import org.koin.java.KoinJavaComponent;
import java.io.FileNotFoundException;
@ -34,7 +34,7 @@ public class AccountViewModel extends ViewModel {
public void setAccount(Account account) {
repository = KoinJavaComponent.get(ARepository.class, null,
() -> DefinitionParametersKt.parametersOf(account));
() -> ParametersHolderKt.parametersOf(account));
}
public Completable login(Account account, boolean insert) {

View File

@ -18,8 +18,6 @@ import com.readrops.app.utils.Utils;
import com.readrops.db.entities.account.Account;
import com.readrops.db.entities.account.AccountType;
import org.koin.androidx.viewmodel.compat.ViewModelCompat;
import io.reactivex.CompletableObserver;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
@ -29,6 +27,8 @@ import static com.readrops.app.utils.ReadropsKeys.ACCOUNT;
import static com.readrops.app.utils.ReadropsKeys.ACCOUNT_TYPE;
import static com.readrops.app.utils.ReadropsKeys.EDIT_ACCOUNT;
import org.koin.android.compat.ViewModelCompat;
public class AddAccountActivity extends AppCompatActivity {
private static final String TAG = AddAccountActivity.class.getSimpleName();

View File

@ -28,8 +28,6 @@ import com.readrops.app.utils.Utils;
import com.readrops.db.entities.Feed;
import com.readrops.db.entities.account.Account;
import org.koin.androidx.viewmodel.compat.ViewModelCompat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -41,6 +39,8 @@ import io.reactivex.schedulers.Schedulers;
import static com.readrops.app.utils.ReadropsKeys.ACCOUNT_ID;
import static com.readrops.app.utils.ReadropsKeys.FEEDS;
import org.koin.android.compat.ViewModelCompat;
public class AddFeedActivity extends AppCompatActivity implements View.OnClickListener {
private AccountArrayAdapter arrayAdapter;
@ -73,7 +73,7 @@ public class AddFeedActivity extends AppCompatActivity implements View.OnClickLi
fastAdapter.withSelectable(true);
fastAdapter.withOnClickListener((v, adapter, item, position) -> {
item.setChecked(!item.isChecked());
fastAdapter.notifyAdapterItemChanged(position);
binding.addFeedOk.setEnabled(recyclerViewHasCheckedItems());

View File

@ -10,7 +10,7 @@ import com.readrops.app.utils.HtmlParser;
import com.readrops.db.Database;
import com.readrops.db.entities.account.Account;
import org.koin.core.parameter.DefinitionParametersKt;
import org.koin.core.parameter.ParametersHolderKt;
import org.koin.java.KoinJavaComponent;
import java.util.ArrayList;
@ -30,7 +30,7 @@ public class AddFeedsViewModel extends ViewModel {
public Single<List<FeedInsertionResult>> addFeeds(List<ParsingResult> results, Account account) {
ARepository repository = KoinJavaComponent.get(ARepository.class, null,
() -> DefinitionParametersKt.parametersOf(account));
() -> ParametersHolderKt.parametersOf(account));
return repository.addFeeds(results);
}

View File

@ -21,13 +21,13 @@ import com.readrops.app.utils.Utils;
import com.readrops.db.entities.Folder;
import com.readrops.db.entities.account.Account;
import org.koin.androidx.viewmodel.compat.ViewModelCompat;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import static com.readrops.app.utils.ReadropsKeys.ACCOUNT;
import org.koin.android.compat.ViewModelCompat;
public class ManageFeedsFoldersActivity extends AppCompatActivity {
private ActivityManageFeedsFoldersBinding binding;

View File

@ -12,7 +12,7 @@ import com.readrops.db.entities.account.Account;
import com.readrops.db.pojo.FeedWithFolder;
import com.readrops.db.pojo.FolderWithFeedCount;
import org.koin.core.parameter.DefinitionParametersKt;
import org.koin.core.parameter.ParametersHolderKt;
import org.koin.java.KoinJavaComponent;
import java.util.List;
@ -35,7 +35,7 @@ public class ManageFeedsFoldersViewModel extends ViewModel {
private void setup() {
repository = KoinJavaComponent.get(ARepository.class, null,
() -> DefinitionParametersKt.parametersOf(account));
() -> ParametersHolderKt.parametersOf(account));
feedsWithFolder = database.feedDao().getAllFeedsWithFolder(account.getId());
folders = database.folderDao().getAllFolders(account.getId());

View File

@ -20,8 +20,6 @@ import com.readrops.db.entities.Folder;
import com.readrops.db.entities.account.Account;
import com.readrops.db.pojo.FeedWithFolder;
import org.koin.androidx.viewmodel.compat.SharedViewModelCompat;
import java.util.ArrayList;
import java.util.Map;
import java.util.TreeMap;
@ -31,6 +29,8 @@ import io.reactivex.schedulers.Schedulers;
import static com.readrops.app.utils.ReadropsKeys.ACCOUNT;
import org.koin.android.compat.SharedViewModelCompat;
public class EditFeedDialogFragment extends DialogFragment implements AdapterView.OnItemSelectedListener {
private TextInputEditText feedName;

View File

@ -66,7 +66,7 @@ public class FeedsAdapter extends ListAdapter<FeedWithFolder, FeedsAdapter.FeedV
FeedWithFolder feedWithFolder = getItem(i);
if (feedWithFolder.getFeed().getIconUrl() != null) {
KoinJavaComponent.get(GlideRequests.class)
KoinJavaComponent.<GlideRequests>get(GlideRequests.class)
.load(feedWithFolder.getFeed().getIconUrl())
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(R.drawable.ic_rss_feed_grey)

View File

@ -22,14 +22,14 @@ import com.readrops.db.entities.Feed;
import com.readrops.db.entities.account.Account;
import com.readrops.db.pojo.FeedWithFolder;
import org.koin.androidx.viewmodel.compat.SharedViewModelCompat;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.observers.DisposableCompletableObserver;
import io.reactivex.schedulers.Schedulers;
import static com.readrops.app.utils.ReadropsKeys.ACCOUNT;
import org.koin.android.compat.SharedViewModelCompat;
public class FeedsFragment extends Fragment {

View File

@ -23,14 +23,14 @@ import com.readrops.app.utils.Utils;
import com.readrops.db.entities.Folder;
import com.readrops.db.entities.account.Account;
import org.koin.androidx.viewmodel.compat.SharedViewModelCompat;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.observers.DisposableSingleObserver;
import io.reactivex.schedulers.Schedulers;
import static com.readrops.app.utils.ReadropsKeys.ACCOUNT;
import org.koin.android.compat.SharedViewModelCompat;
public class FoldersFragment extends Fragment {
private FoldersAdapter adapter;

View File

@ -41,7 +41,7 @@ import com.readrops.db.entities.Item;
import com.readrops.db.entities.account.Account;
import com.readrops.db.pojo.ItemWithFeed;
import org.koin.androidx.viewmodel.compat.ViewModelCompat;
import org.koin.android.compat.ViewModelCompat;
import org.koin.java.KoinJavaComponent;
import java.util.regex.Matcher;
@ -101,7 +101,7 @@ public class ItemActivity extends AppCompatActivity {
binding.appBarLayout.setExpanded(true);
binding.collapsingLayout.setTitleEnabled(true);
KoinJavaComponent.get(GlideRequests.class)
KoinJavaComponent.<GlideRequests>get(GlideRequests.class)
.load(imageUrl)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(binding.collapsingLayoutImage);
@ -397,7 +397,7 @@ public class ItemActivity extends AppCompatActivity {
}
private void shareImage(String url) {
KoinJavaComponent.get(GlideRequests.class)
KoinJavaComponent.<GlideRequests>get(GlideRequests.class)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.load(url)

View File

@ -16,7 +16,7 @@ import com.readrops.db.entities.account.Account;
import com.readrops.db.pojo.ItemWithFeed;
import com.readrops.db.queries.ItemSelectionQueryBuilder;
import org.koin.core.parameter.DefinitionParametersKt;
import org.koin.core.parameter.ParametersHolderKt;
import org.koin.java.KoinJavaComponent;
import java.io.File;
@ -45,7 +45,8 @@ public class ItemViewModel extends ViewModel {
}
public Completable setStarState(Item item) {
ARepository repository = KoinJavaComponent.get(ARepository.class, null, () -> DefinitionParametersKt.parametersOf(account));
ARepository repository = KoinJavaComponent.get(ARepository.class, null,
() -> ParametersHolderKt.parametersOf(account));
return repository.setItemStarState(item);
}

View File

@ -53,7 +53,7 @@ import com.readrops.db.filters.ListSortType;
import com.readrops.db.pojo.ItemWithFeed;
import org.jetbrains.annotations.NotNull;
import org.koin.androidx.viewmodel.compat.ViewModelCompat;
import org.koin.android.compat.ViewModelCompat;
import org.koin.java.KoinJavaComponent;
import java.lang.ref.WeakReference;
@ -373,7 +373,7 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
binding.itemsRecyclerView.addRecyclerListener(viewHolder -> {
MainItemListAdapter.ItemViewHolder vh = (MainItemListAdapter.ItemViewHolder) viewHolder;
KoinJavaComponent.get(GlideRequests.class).clear(vh.getItemImage());
KoinJavaComponent.<GlideRequests>get(GlideRequests.class).clear(vh.getItemImage());
});
LinearLayoutManager layoutManager = new LinearLayoutManager(this);

View File

@ -22,7 +22,7 @@ import com.readrops.db.filters.FilterType;
import com.readrops.db.filters.ListSortType;
import com.readrops.db.pojo.ItemWithFeed;
import org.koin.core.parameter.DefinitionParametersKt;
import org.koin.core.parameter.ParametersHolderKt;
import org.koin.java.KoinJavaComponent;
import java.util.ArrayList;
@ -61,7 +61,7 @@ public class MainViewModel extends ViewModel {
private void setRepository() {
repository = KoinJavaComponent.get(ARepository.class, null,
() -> DefinitionParametersKt.parametersOf(currentAccount));
() -> ParametersHolderKt.parametersOf(currentAccount));
}
private void buildPagedList() {

View File

@ -51,7 +51,7 @@ public abstract class ARepository {
}
protected void setCredentials(@Nullable Account account) {
KoinJavaComponent.get(AuthInterceptor.class)
KoinJavaComponent.<AuthInterceptor>get(AuthInterceptor.class)
.setCredentials(account != null && !account.isLocal() ? Credentials.toCredentials(account) : null);
}

View File

@ -38,8 +38,6 @@ import com.readrops.db.entities.Folder;
import com.readrops.db.entities.account.Account;
import com.readrops.db.entities.account.AccountType;
import org.koin.androidx.viewmodel.compat.ViewModelCompat;
import java.io.FileNotFoundException;
import java.util.List;
import java.util.Map;
@ -55,6 +53,8 @@ import static com.readrops.app.utils.ReadropsKeys.ACCOUNT;
import static com.readrops.app.utils.ReadropsKeys.ACCOUNT_ID;
import static com.readrops.app.utils.ReadropsKeys.EDIT_ACCOUNT;
import org.koin.android.compat.ViewModelCompat;
/**
* A simple {@link Fragment} subclass.
*/

View File

@ -86,9 +86,9 @@ public final class HtmlParser {
long start = System.currentTimeMillis();
try {
Response response = KoinJavaComponent.get(OkHttpClient.class)
Response response = KoinJavaComponent.<OkHttpClient>get(OkHttpClient.class)
.newCall(new Request.Builder().url(url).build()).execute();
KoinJavaComponent.get(AuthInterceptor.class).setCredentials(null);
KoinJavaComponent.<AuthInterceptor>get(AuthInterceptor.class).setCredentials(null);
if (response.header("Content-Type").contains(ApiUtils.HTML_CONTENT_TYPE)) {
String body = response.body().string();

View File

@ -37,9 +37,9 @@ public final class Utils {
public static Bitmap getImageFromUrl(String url) {
try {
Request request = new Request.Builder().url(url).build();
KoinJavaComponent.get(AuthInterceptor.class).setCredentials(null);
KoinJavaComponent.<AuthInterceptor>get(AuthInterceptor.class).setCredentials(null);
Response response = KoinJavaComponent.get(OkHttpClient.class).newCall(request).execute();
Response response = KoinJavaComponent.<OkHttpClient>get(OkHttpClient.class).newCall(request).execute();
if (response.isSuccessful()) {
InputStream inputStream = response.body().byteStream();

View File

@ -2,16 +2,15 @@ package com.readrops.app
import com.readrops.api.utils.AuthInterceptor
import com.readrops.app.utils.HtmlParser
import com.readrops.app.addfeed.ParsingResult
import junit.framework.TestCase
import okhttp3.OkHttpClient
import org.junit.Assert
import org.junit.Rule
import org.junit.Test
import org.koin.dsl.module
import org.koin.test.KoinTest
import org.koin.test.KoinTestRule
class HtmlParserTest {
class HtmlParserTest : KoinTest {
@get:Rule
val koinTestRule = KoinTestRule.create {

View File

@ -34,6 +34,8 @@ ext {
minSdkVersion = 21
targetSdkVersion = 30
buildToolsVersion = "30.0.3"
koin_version = "3.1.2"
}
task clean(type: Delete) {

View File

@ -89,8 +89,7 @@ dependencies {
api 'joda-time:joda-time:2.10.10'
def koin_version = "2.2.3"
api "io.insert-koin:koin-android:$koin_version"
api "io.insert-koin:koin-androidx-scope:$koin_version"
api "io.insert-koin:koin-androidx-viewmodel:$koin_version"
api "io.insert-koin:koin-core:$rootProject.ext.koin_version"
api "io.insert-koin:koin-android:$rootProject.ext.koin_version"
api "io.insert-koin:koin-android-compat:$rootProject.ext.koin_version"
}