Skip to content

Commit

Permalink
Merge pull request #678 from LoxiaLiSA/master
Browse files Browse the repository at this point in the history
aa
  • Loading branch information
CeuiLiSA authored Jan 2, 2025
2 parents 313f77d + 670d773 commit 485c267
Showing 125 changed files with 823 additions and 1,546 deletions.
5 changes: 2 additions & 3 deletions app/src/main/java/ceui/lisa/activities/ImageDetailActivity.kt
Original file line number Diff line number Diff line change
@@ -2,7 +2,6 @@ package ceui.lisa.activities

import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.activity.ComponentActivity
import androidx.activity.enableEdgeToEdge
@@ -21,8 +20,8 @@ import ceui.lisa.models.IllustsBean
import ceui.lisa.utils.Common
import ceui.lisa.utils.PixivOperate
import ceui.pixiv.ui.works.ToggleToolnarViewModel
import ceui.refactor.animateFadeInQuickly
import ceui.refactor.animateFadeOutQuickly
import ceui.pixiv.utils.animateFadeInQuickly
import ceui.pixiv.utils.animateFadeOutQuickly
import java.io.UnsupportedEncodingException
import java.net.URLDecoder
import java.util.Locale
8 changes: 3 additions & 5 deletions app/src/main/java/ceui/lisa/activities/Shaft.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package ceui.lisa.activities;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.IntentFilter;
@@ -11,7 +10,6 @@
import android.net.ConnectivityManager;
import android.view.Gravity;

import com.billy.android.swipe.SmartSwipeBack;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.google.gson.Gson;
import com.hjq.toast.ToastUtils;
@@ -22,7 +20,6 @@
import com.tencent.mmkv.MMKV;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import ceui.lisa.R;
import ceui.lisa.feature.HostManager;
@@ -37,11 +34,11 @@
import ceui.lisa.viewmodel.AppLevelViewModel;
import ceui.loxia.ServicesProvider;
import ceui.pixiv.session.SessionManager;
import ceui.pixiv.ui.blocking.BlockingManager;
import ceui.pixiv.utils.NetworkStateManager;
import me.jessyan.progressmanager.ProgressManager;
import okhttp3.OkHttpClient;
import timber.log.Timber;
import timber.log.Timber.DebugTree;

import static ceui.lisa.utils.Local.LOCAL_DATA;

@@ -107,7 +104,8 @@ public void onCreate() {

sSettings = Local.getSettings();

SessionManager.INSTANCE.load();
SessionManager.INSTANCE.initialize();
BlockingManager.INSTANCE.initialize();

updateTheme();

2 changes: 1 addition & 1 deletion app/src/main/java/ceui/lisa/activities/UActivity.kt
Original file line number Diff line number Diff line change
@@ -32,7 +32,7 @@ import ceui.loxia.Client
import ceui.loxia.Event
import ceui.loxia.ObjectPool
import ceui.loxia.ProgressTextButton
import ceui.refactor.setOnClick
import ceui.pixiv.utils.setOnClick
import com.bumptech.glide.Glide
import com.github.ybq.android.spinkit.style.Wave
import com.qmuiteam.qmui.skin.QMUISkinManager
2 changes: 1 addition & 1 deletion app/src/main/java/ceui/lisa/fragments/FragmentIllust.kt
Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@ import ceui.lisa.notification.CallBackReceiver
import ceui.lisa.utils.*
import ceui.loxia.*
import ceui.loxia.flag.FlagDescFragment
import ceui.refactor.setOnClick
import ceui.pixiv.utils.setOnClick
import com.bumptech.glide.Glide
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.engine.GlideException
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ import ceui.pixiv.ui.common.setUpWithTaskStatus
import ceui.pixiv.ui.task.NamedUrl
import ceui.pixiv.ui.task.TaskPool
import ceui.pixiv.ui.works.ToggleToolnarViewModel
import ceui.refactor.setOnClick
import ceui.pixiv.utils.setOnClick
import com.github.panpf.sketch.loadImage

class FragmentImageDetail : BaseFragment<FragmentImageDetailBinding?>() {
2 changes: 1 addition & 1 deletion app/src/main/java/ceui/loxia/API.kt
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ interface API {
@FormUrlEncoded
@POST("/v1/illust/report")
suspend fun postFlagIllust(
@Field("illust_id") illust_id: Int,
@Field("illust_id") illust_id: Long,
@Field("type_of_problem") type_of_problem: String?,
@Field("message") message: String?
): NullResponse
Original file line number Diff line number Diff line change
@@ -6,19 +6,6 @@ import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import ceui.lisa.R

open class NavFragment(layoutId: Int) : Fragment(layoutId)

interface ActionReceiver {
}

abstract class SlinkyListFragment(layoutId: Int = R.layout.fragment_slinky_list) : NavFragment(layoutId) {

open fun isDefaultLayoutManager(): Boolean {
return true
}
}

fun Context.showKeyboard(editText: EditText?) {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
1 change: 0 additions & 1 deletion app/src/main/java/ceui/loxia/ProgressButton.kt
Original file line number Diff line number Diff line change
@@ -83,7 +83,6 @@ class ProgressImageButton(context: Context, attrs: AttributeSet?, defStyle: Int)
isAnimationRunning = false
(drawable as? CircularProgressDrawable)?.stop()

require(originalState != null)
originalState?.let {
isClickable = it.isClickable
setImageDrawable(pendingTarget ?: it.drawable)
8 changes: 8 additions & 0 deletions app/src/main/java/ceui/loxia/RefreshHint.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package ceui.loxia

sealed class RefreshHint {
data object PullToRefresh : RefreshHint()
data object InitialLoad : RefreshHint()
data object LoadMore : RefreshHint()
data object ErrorRetry : RefreshHint()
}
107 changes: 1 addition & 106 deletions app/src/main/java/ceui/loxia/RefreshState.kt
Original file line number Diff line number Diff line change
@@ -4,18 +4,12 @@ import android.content.Context
import androidx.core.view.isVisible
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.recyclerview.widget.RecyclerView
import ceui.lisa.R
import ceui.lisa.databinding.ItemLoadingBinding
import ceui.pixiv.ui.common.CommonAdapter
import ceui.refactor.setOnClick
import com.scwang.smart.refresh.header.FalsifyFooter
import com.scwang.smart.refresh.header.MaterialHeader
import com.scwang.smart.refresh.layout.SmartRefreshLayout
import ceui.pixiv.utils.setOnClick
import java.io.Serializable
import java.lang.Exception
import java.net.SocketTimeoutException
import java.net.UnknownHostException
import java.util.concurrent.TimeoutException
import javax.net.ssl.SSLHandshakeException

@@ -25,105 +19,6 @@ sealed class RefreshState: Serializable {
data class ERROR(val exception: Exception, val isInitialLoad: Boolean = false) : RefreshState()
}

sealed class RefreshHint {
data object PullToRefresh : RefreshHint()
data object InitialLoad : RefreshHint()
data object LoadMore : RefreshHint()
data object ErrorRetry : RefreshHint()
// You can add additional methods if needed
}

inline fun <reified FragmentT : SlinkyListFragment> FragmentT.setUpSlinkyList(
listView: RecyclerView,
refreshLayout: SmartRefreshLayout,
itemLoading: ItemLoadingBinding,
viewModel: SlinkyListViewModel<FragmentT>
) {
val adapter = CommonAdapter(viewLifecycleOwner)
listView.adapter = adapter
viewModel.holderList.observe(viewLifecycleOwner) { list ->
adapter.submitList(list)
}
itemLoading.setUpRefreshState(
this,
refreshLayout,
viewModel.refreshState,
refreshBlock = { viewModel.refresh(RefreshHint.PullToRefresh, this) },
retryBlock = { viewModel.refresh(RefreshHint.InitialLoad, this) },
loadMoreBlock = { viewModel.loadMore(this) }
)
if (!viewModel.isInitialLoaded) {
viewModel.isInitialLoaded = true
viewModel.refresh(RefreshHint.InitialLoad, this)
}
}

fun ItemLoadingBinding.setUpRefreshState(
fragment: NavFragment,
refreshLayout: SmartRefreshLayout,
refreshState: LiveData<RefreshState>,
refreshBlock: () -> Unit,
retryBlock: () -> Unit,
loadMoreBlock: () -> Unit,
) {
with(fragment) {
val context = requireContext()
refreshLayout.setRefreshHeader(MaterialHeader(context))
refreshLayout.setOnRefreshListener {
refreshBlock.invoke()
}
refreshLayout.setOnLoadMoreListener {
loadMoreBlock.invoke()
}
emptyActionButton.setOnClick {
retryBlock.invoke()
}
refreshState.observe(viewLifecycleOwner) { refreshState ->
if (refreshState is RefreshState.LOADED) {
progressCircular.hideProgress()
loadingFrame.isVisible = false
refreshLayout.finishRefresh()
refreshLayout.finishLoadMore()

if (refreshState.hasContent) {
emptyFrame.isVisible = false
} else {
emptyFrame.isVisible = true
emptyActionButton.text = getString(R.string.refresh)
emptyTitle.text = getString(R.string.empty_content_here)
}

if (refreshState.hasNext) {
refreshLayout.setRefreshFooter(SlinkyFooter(context))
} else {
refreshLayout.setRefreshFooter(FalsifyFooter(context))
}
} else if (refreshState is RefreshState.LOADING) {
emptyFrame.isVisible = false
if (refreshState.refreshHint == RefreshHint.PullToRefresh) {
loadingFrame.isVisible = false
progressCircular.hideProgress()
if (!refreshLayout.isRefreshing) {
refreshLayout.autoRefreshAnimationOnly()
}
} else if (refreshState.refreshHint == RefreshHint.InitialLoad) {
loadingFrame.isVisible = true
progressCircular.showProgress()
}
} else if (refreshState is RefreshState.ERROR) {
progressCircular.hideProgress()
loadingFrame.isVisible = false
refreshLayout.finishRefresh()
refreshLayout.finishLoadMore()

emptyFrame.isVisible = true
emptyActionButton.text = getString(R.string.retry)
emptyTitle.text = refreshState.exception.getHumanReadableMessage(context)
}
}
}
}

fun ItemLoadingBinding.setUpHolderRefreshState(
refreshState: LiveData<RefreshState>,
viewLifecycleOwner: LifecycleOwner,
43 changes: 0 additions & 43 deletions app/src/main/java/ceui/loxia/Repository.kt

This file was deleted.

27 changes: 0 additions & 27 deletions app/src/main/java/ceui/loxia/SlinkyFooter.kt

This file was deleted.

Loading

0 comments on commit 485c267

Please sign in to comment.