Refine request api
This commit is contained in:
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() {
|
||||
|
||||
Reference in new issue
Block a user