Refine request api

This commit is contained in:
tarsin committed 2023-01-04 16:52:47 +08:00
1 parent fab2295445
commit 1e848bd70f
12 files changed
+51 -34

No files matched your search

@@ -23,7 +23,7 @@ import kotlinx.coroutines.CoroutineScope
import java.io.File
object EhClient {
fun execute(request: EhRequest, scope: CoroutineScope) {
internal fun enqueue(request: EhRequest, scope: CoroutineScope) {
check(!request.isActive) // Abort if attempt to execute an active request
request.job = scope.launchIO {
val method = request.method
@@ -15,7 +15,14 @@
*/
package com.hippo.ehviewer.client
import android.app.Activity
import androidx.annotation.MainThread
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
class EhRequest {
@@ -45,6 +52,24 @@ class EhRequest {
return this
}
fun enqueue(scope: CoroutineScope) {
EhClient.enqueue(this, scope)
}
@DelicateCoroutinesApi
fun enqueue() {
EhClient.enqueue(this, GlobalScope)
}
fun enqueue(fragment: Fragment) {
enqueue(fragment.lifecycleScope)
}
fun enqueue(activity: Activity) {
check(activity is FragmentActivity)
enqueue(activity.lifecycleScope)
}
@MainThread
fun cancel() {
if (isActive) {
@@ -60,7 +60,7 @@ public final class CommonOperations {
request.setMethod(EhClient.METHOD_ADD_FAVORITES);
request.setArgs(galleryInfo.gid, galleryInfo.token, slot, "");
request.setCallback(listener);
client.execute(request, LifecycleKt.getCoroutineScope(((FragmentActivity)activity).getLifecycle()));
request.enqueue(activity);
} else {
listener.onFailure(new Exception()); // TODO Add text
}
@@ -107,7 +107,7 @@ public final class CommonOperations {
request.setMethod(EhClient.METHOD_ADD_FAVORITES);
request.setArgs(galleryInfo.gid, galleryInfo.token, -1, "");
request.setCallback(new DelegateFavoriteCallback(listener, galleryInfo, null, -2));
client.execute(request, LifecycleKt.getCoroutineScope(((FragmentActivity)activity).getLifecycle()));
request.enqueue(activity);
}
public static void startDownload(final MainActivity activity, final GalleryInfo galleryInfo, boolean forceDefault) {
@@ -347,10 +347,7 @@ class AdvancedFragment : BasePreferenceFragment() {
request.setArgs(favListUrlBuilder.build())
viewLifecycleOwner.lifecycleScope.launch {
delay(100)
mClient.execute(
request,
viewLifecycleOwner.lifecycle.coroutineScope
)
request.enqueue(this@AdvancedFragment)
}
} else {
showTip(
@@ -376,7 +373,7 @@ class AdvancedFragment : BasePreferenceFragment() {
}
})
request.setArgs(favListUrlBuilder.build())
mClient.execute(request, viewLifecycleOwner.lifecycle.coroutineScope)
mClient.enqueue(request, viewLifecycleOwner.lifecycle.coroutineScope)
}
override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean {
@@ -199,7 +199,7 @@ public class CookieSignInScene extends SolidScene implements EditText.OnEditorAc
EhRequest request = new EhRequest()
.setMethod(EhClient.METHOD_GET_PROFILE)
.setCallback(new CookieSignInListener());
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(this);
}
private void storeCookie(String id, String hash, String igneous) {
@@ -50,7 +50,6 @@ import com.hippo.app.BaseDialogBuilder;
import com.hippo.drawable.AddDeleteDrawable;
import com.hippo.easyrecyclerview.EasyRecyclerView;
import com.hippo.easyrecyclerview.FastScroller;
import com.hippo.ehviewer.EhApplication;
import com.hippo.ehviewer.EhDB;
import com.hippo.ehviewer.R;
import com.hippo.ehviewer.Settings;
@@ -1045,7 +1044,7 @@ public class FavoritesScene extends SearchBarScene implements
activity.getStageId(), getTag(),
taskId, mUrlBuilder.getKeyword(), modifyGiListBackup));
request.setArgs(gidArray, tokenArray, mModifyFavCat);
mClient.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(FavoritesScene.this);
} else {
for (int i = 0, n = mModifyGiList.size(); i < n; i++) {
gidArray[i] = mModifyGiList.get(i).gid;
@@ -1067,7 +1066,7 @@ public class FavoritesScene extends SearchBarScene implements
activity.getStageId(), getTag(),
taskId, local, mUrlBuilder.getKeyword()));
request.setArgs(url, gidArray, mModifyFavCat);
mClient.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(FavoritesScene.this);
}
} else if (mUrlBuilder.getFavCat() == FavListUrlBuilder.FAV_CAT_LOCAL) {
final String keyword = mUrlBuilder.getKeyword();
@@ -1082,7 +1081,7 @@ public class FavoritesScene extends SearchBarScene implements
activity.getStageId(), getTag(),
taskId, false, mUrlBuilder.getKeyword()));
request.setArgs(url);
mClient.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(FavoritesScene.this);
}
}
@@ -59,7 +59,6 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.hippo.app.BaseDialogBuilder;
import com.hippo.easyrecyclerview.EasyRecyclerView;
import com.hippo.ehviewer.EhApplication;
import com.hippo.ehviewer.R;
import com.hippo.ehviewer.UrlOpener;
import com.hippo.ehviewer.WindowInsetsAnimationHelper;
@@ -318,7 +317,7 @@ public final class GalleryCommentsScene extends BaseToolbarScene
.setArgs(mGalleryDetail.apiUid, mGalleryDetail.apiKey, mGalleryDetail.gid, mGalleryDetail.token, id, vote)
.setCallback(new VoteCommentListener(context,
activity.getStageId(), getTag()));
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(this);
}
@SuppressLint("InflateParams")
@@ -454,7 +453,7 @@ public final class GalleryCommentsScene extends BaseToolbarScene
.setMethod(EhClient.METHOD_GET_GALLERY_DETAIL)
.setArgs(url)
.setCallback(new RefreshCommentListener(activity, activity.getStageId(), getTag()));
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(this);
}
}
@@ -639,7 +638,7 @@ public final class GalleryCommentsScene extends BaseToolbarScene
.setArgs(url, comment, mCommentId != 0 ? Long.toString(mCommentId) : null)
.setCallback(new CommentGalleryListener(context,
activity.getStageId(), getTag(), mCommentId));
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(this);
hideSoftInput();
hideEditPanel(true);
}
@@ -745,7 +744,7 @@ public final class GalleryCommentsScene extends BaseToolbarScene
.setMethod(EhClient.METHOD_GET_GALLERY_DETAIL)
.setArgs(url)
.setCallback(new RefreshCommentListener(activity, activity.getStageId(), getTag()));
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(this);
}
}
}
@@ -37,7 +37,6 @@ import android.os.Bundle;
import android.os.Environment;
import android.text.Html;
import android.text.TextUtils;
import android.util.Pair;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@@ -729,7 +728,7 @@ public class GalleryDetailScene extends CollapsingToolbarScene implements View.O
.setMethod(EhClient.METHOD_GET_GALLERY_DETAIL)
.setArgs(url)
.setCallback(callback);
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(this);
return true;
}
@@ -1358,7 +1357,7 @@ public class GalleryDetailScene extends CollapsingToolbarScene implements View.O
.setArgs(mGalleryDetail.apiUid, mGalleryDetail.apiKey, mGalleryDetail.gid, mGalleryDetail.token, tag, vote)
.setCallback(new VoteTagListener(context,
activity.getStageId(), getTag()));
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(this);
}
@Override
@@ -1794,7 +1793,7 @@ public class GalleryDetailScene extends CollapsingToolbarScene implements View.O
mRequest = new EhRequest().setMethod(EhClient.METHOD_ARCHIVE_LIST)
.setArgs(url, mGid, mToken)
.setCallback(this);
EhClient.INSTANCE.execute(mRequest, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
mRequest.enqueue(GalleryDetailScene.this);
} else {
bind(mArchiveList);
}
@@ -1831,7 +1830,7 @@ public class GalleryDetailScene extends CollapsingToolbarScene implements View.O
request.setMethod(EhClient.METHOD_DOWNLOAD_ARCHIVE);
request.setArgs(mGalleryDetail.gid, mGalleryDetail.token, mArchiveFormParamOr, res, isHAtH);
request.setCallback(new DownloadArchiveListener(context, activity.getStageId(), getTag(), mGalleryDetail));
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(GalleryDetailScene.this);
}
if (mDialog != null) {
@@ -1909,7 +1908,7 @@ public class GalleryDetailScene extends CollapsingToolbarScene implements View.O
mRequest = new EhRequest().setMethod(EhClient.METHOD_GET_TORRENT_LIST)
.setArgs(url, mGid, mToken)
.setCallback(this);
EhClient.INSTANCE.execute(mRequest, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
mRequest.enqueue(GalleryDetailScene.this);
} else {
bind(mTorrentList);
}
@@ -2042,7 +2041,7 @@ public class GalleryDetailScene extends CollapsingToolbarScene implements View.O
mGalleryDetail.gid, mGalleryDetail.token, mRatingBar.getRating())
.setCallback(new RateGalleryListener(context,
activity.getStageId(), getTag(), mGalleryDetail.gid));
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(GalleryDetailScene.this);
}
}
@@ -1594,7 +1594,7 @@ public final class GalleryListScene extends SearchBarScene
request.setArgs(new File(StringUtils.avoidNull(mUrlBuilder.getImagePath())),
mUrlBuilder.isUseSimilarityScan(),
mUrlBuilder.isOnlySearchCovers(), mUrlBuilder.isShowExpunged());
mClient.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(GalleryListScene.this);
} else {
String url = mUrlBuilder.build();
EhRequest request = new EhRequest();
@@ -1602,7 +1602,7 @@ public final class GalleryListScene extends SearchBarScene
request.setCallback(new GetGalleryListListener(getContext(),
activity.getStageId(), getTag(), taskId));
request.setArgs(url);
mClient.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(GalleryListScene.this);
}
}
@@ -39,7 +39,6 @@ import com.google.android.material.slider.Slider;
import com.hippo.app.BaseDialogBuilder;
import com.hippo.easyrecyclerview.EasyRecyclerView;
import com.hippo.easyrecyclerview.MarginItemDecoration;
import com.hippo.ehviewer.EhApplication;
import com.hippo.ehviewer.R;
import com.hippo.ehviewer.Settings;
import com.hippo.ehviewer.client.EhClient;
@@ -352,7 +351,7 @@ public class GalleryPreviewsScene extends BaseToolbarScene {
request.setCallback(new GetPreviewSetListener(getContext(),
activity.getStageId(), getTag(), taskId));
request.setArgs(url);
mClient.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(GalleryPreviewsScene.this);
}
@Override
@@ -29,7 +29,6 @@ import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.lifecycle.LifecycleKt;
import com.hippo.ehviewer.EhApplication;
import com.hippo.ehviewer.R;
import com.hippo.ehviewer.client.EhClient;
import com.hippo.ehviewer.client.EhRequest;
@@ -100,7 +99,7 @@ public final class ProgressScene extends BaseScene implements View.OnClickListen
.setArgs(mGid, mPToken, mPage)
.setCallback(new GetGalleryTokenListener(context,
activity.getStageId(), getTag()));
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(this);
return true;
}
return false;
@@ -292,7 +292,7 @@ public final class SignInScene extends SolidScene implements EditText.OnEditorAc
.setMethod(EhClient.METHOD_SIGN_IN)
.setArgs(username, password)
.setCallback(callback);
EhClient.INSTANCE.execute(request, LifecycleKt.getCoroutineScope(getViewLifecycleOwner().getLifecycle()));
request.enqueue(this);
mSigningIn = true;
}
@@ -313,9 +313,9 @@ public final class SignInScene extends SolidScene implements EditText.OnEditorAc
EhRequest request = new EhRequest()
.setMethod(EhClient.METHOD_GET_PROFILE)
.setCallback(callback);
EhClient.INSTANCE.execute(request, GlobalScope.INSTANCE);
request.enqueue();
EhClient.INSTANCE.execute(new EhRequest().setMethod(EhClient.METHOD_GET_UCONFIG), GlobalScope.INSTANCE);
new EhRequest().setMethod(EhClient.METHOD_GET_UCONFIG).enqueue();
}
private void redirectTo() {