Skip to content

Commit 7db630a

Browse files
committed
🤖: clean up
1 parent e34db88 commit 7db630a

File tree

19 files changed

+39
-81
lines changed

19 files changed

+39
-81
lines changed

hooks/src/main/kotlin/xyz/junerver/compose/hooks/ext/color.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.

hooks/src/main/kotlin/xyz/junerver/compose/hooks/ext/ex.kt

Lines changed: 0 additions & 18 deletions
This file was deleted.

hooks/src/main/kotlin/xyz/junerver/compose/hooks/useEvent.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import kotlin.reflect.KClass
4545
object EventManager {
4646
val subscriberMap = mutableMapOf<KClass<*>, MutableList<(Any) -> Unit>>()
4747

48+
@Suppress("UNCHECKED_CAST")
4849
inline fun <reified T : Any> register(noinline subscriber: (T) -> Unit): () -> Unit {
4950
subscriberMap[T::class] ?: run { subscriberMap[T::class] = mutableListOf() }
5051
subscriberMap[T::class]?.add(subscriber as (Any) -> Unit)

hooks/src/main/kotlin/xyz/junerver/compose/hooks/useGetState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import xyz.junerver.kotlin.Tuple3
1212
* there will be a problem of state loss.
1313
*
1414
* Now you can use [useGetState] to solve these problems and get the latest value
15-
* through [getter] to avoid closure problems. The [setter] function also supports fast update.
15+
* through `getter` to avoid closure problems. The `setter` function also supports fast update.
1616
*
1717
* @author Junerver
1818
* date: 2024/5/10-9:31

hooks/src/main/kotlin/xyz/junerver/compose/hooks/useKeyboard.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package xyz.junerver.compose.hooks
22

33
import androidx.compose.runtime.Composable
4-
import androidx.compose.ui.ExperimentalComposeUiApi
54
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
65
import xyz.junerver.kotlin.Tuple2
76
import xyz.junerver.kotlin.tuple
@@ -13,7 +12,6 @@ import xyz.junerver.kotlin.tuple
1312
* Email: junerver@gmail.com
1413
* Version: v1.0
1514
*/
16-
@OptIn(ExperimentalComposeUiApi::class)
1715
@Composable
1816
fun useKeyboard(): Tuple2<() -> Unit, () -> Unit> {
1917
val keyboardController = LocalSoftwareKeyboardController.current

hooks/src/main/kotlin/xyz/junerver/compose/hooks/usePersistent.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ private typealias PersistentHookReturn<T> = Tuple3<T, SaveToPersistent<T>, Persi
3939
/**
4040
* By default, [memorySaveMap] is used for memory persistence.
4141
* [usePersistent] is a lightweight encapsulation, you need to provide your own persistence solution
42-
* globally through [PersistentContext.Provider];
42+
* globally through `PersistentContext.Provider`;
4343
*/
4444
val PersistentContext =
4545
createContext<Tuple3<PersistentGet, PersistentSave, PersistentClear>>((::memoryGetPersistent to ::memorySavePersistent) + ::memoryClearPersistent)
4646

47+
@Suppress("UNCHECKED_CAST")
4748
@Composable
4849
fun <T> usePersistent(key: String, defaultValue: T): PersistentHookReturn<T> {
4950
val (get, set, clear) = useContext(context = PersistentContext)

hooks/src/main/kotlin/xyz/junerver/compose/hooks/useState.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import org.jetbrains.annotations.Nullable
4545
* Email: junerver@gmail.com
4646
* Version: v1.0
4747
*/
48+
@Suppress("UNCHECKED_CAST")
4849
@Composable
4950
fun <T> useState(default: T & Any): MutableState<T> {
5051
return when (default) {

hooks/src/main/kotlin/xyz/junerver/compose/hooks/useUndo.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import xyz.junerver.kotlin.tuple
1313
*/
1414

1515
data class UndoState<T>(
16-
// 过去的状态
1716
var past: List<T> = emptyList(),
1817
var present: T,
1918
var future: List<T> = emptyList(),
@@ -29,27 +28,19 @@ private data class Reset<S>(val payload: S) : UndoAction
2928
private fun <T> undoReducer(preState: UndoState<T>, action: UndoAction): UndoState<T> {
3029
val (past, present, future) = preState
3130
return when (action) {
32-
// 撤销
3331
Undo -> {
3432
if (past.isEmpty()) return preState
35-
// 取出过去操作中的最后一个操作作为新的present
3633
val newPresent = past[past.size - 1]
37-
// 将最后一个操作从past中移除
3834
val newPast = past.dropLast(1)
3935
preState.copy(
40-
// 将新的present和新的past设置到state中
4136
past = newPast,
4237
present = newPresent,
43-
// 将旧的present放入到future数组的头部
4438
future = listOf(present) + future
4539
)
4640
}
47-
// 重做
4841
Redo -> {
4942
if (future.isEmpty()) return preState
50-
// 取出第一个future
5143
val newPresent = future[0]
52-
// 将第一个future从future中删除 slice 函数可以用于剪裁\复制数组
5344
val newFuture = future.drop(1)
5445
preState.copy(
5546
past = past + listOf(present),
@@ -82,11 +73,8 @@ private fun <T> undoReducer(preState: UndoState<T>, action: UndoAction): UndoSta
8273
@Composable
8374
fun <T> useUndo(initialPresent: T): Tuple7<UndoState<T>, (T) -> Unit, (T) -> Unit, () -> Unit, () -> Unit, Boolean, Boolean> {
8475
val (state, dispatch) = useReducer(::undoReducer, UndoState(present = initialPresent))
85-
// 是否可以撤销
8676
val canUndo = state.past.isNotEmpty()
87-
// 是否可以重做
8877
val canRedo = state.future.isNotEmpty()
89-
// undo相关的四个函数
9078
val undo = { dispatch(Undo) }
9179
val redo = { dispatch(Redo) }
9280
val set = { newPresent: T -> dispatch(Set(newPresent)) }

hooks/src/main/kotlin/xyz/junerver/compose/hooks/useUpdate.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import kotlin.random.Random
1010
* Email: junerver@gmail.com
1111
* Version: v1.0
1212
*/
13+
@Suppress("UNUSED_VARIABLE")
1314
@Composable
1415
fun useUpdate(): () -> Unit {
1516
val (state, setState) = useGetState(0.0)

hooks/src/main/kotlin/xyz/junerver/compose/hooks/useform/Form.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class FormScope private constructor(
3333
val fieldState = _useState<T?>(default = null)
3434
val (validate, _, set) = useBoolean()
3535
val errMsg = useMap<KClass<*>, String>()
36+
@Suppress("UNCHECKED_CAST")
3637
ref.current.form[name] = fieldState as MutableState<Any>
3738

3839
useEffect(fieldState.value) {
@@ -46,6 +47,7 @@ class FormScope private constructor(
4647
return false
4748
}
4849

50+
@Suppress("RedundantNullableReturnType")
4951
val fieldValue: Any? = fieldState.value
5052
val isValidate =
5153
validators.validateField(fieldValue, pass = Validator::pass, fail = Validator::fail)

hooks/src/main/kotlin/xyz/junerver/compose/hooks/useform/validator.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,6 @@ fun List<Validator>.validateField(
8383
is CustomValidator -> fieldValue.validate(it) {
8484
it.validator(this)
8585
}
86-
87-
else -> true
8886
}
8987
}.all { it }
9088
}

hooks/src/main/kotlin/xyz/junerver/compose/hooks/useredux/createStore.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ data class Store(
3838
}
3939

4040
class StoreScope private constructor(val list: MutableList<StoreRecord>) {
41+
42+
@Suppress("UNCHECKED_CAST")
4143
inline fun <reified T : Any, reified A : Any> add(
4244
pair: Tuple2<Reducer<T, A>, T>,
4345
alias: String? = null,

hooks/src/main/kotlin/xyz/junerver/compose/hooks/useredux/useDispatch.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import xyz.junerver.compose.hooks.useContext
1313
* @param A
1414
* @return
1515
*/
16+
@Suppress("UNCHECKED_CAST")
1617
@Composable
1718
inline fun <reified A> useDispatch(alias: String? = null): Dispatch<A> =
1819
alias?.let {

hooks/src/main/kotlin/xyz/junerver/compose/hooks/userequest/FetchCacheManager.kt

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,22 +64,12 @@ internal object FetchCacheManager : CoroutineScope {
6464
cache[key] = tuple(cachedData, currentTime + cacheTime)
6565
}
6666

67+
@Suppress("UNCHECKED_CAST")
6768
fun <T> getCache(key: String): CachedData<T>? {
6869
return if (isCacheValid(key)) {
6970
cache[key]!!.first as CachedData<T>
7071
} else {
7172
null
7273
}
7374
}
74-
75-
fun clearCache(vararg cacheKeys: String) {
76-
if (cacheKeys.isEmpty()) {
77-
// 无参数全部清空
78-
cache.clear()
79-
} else {
80-
cache.entries.removeIf {
81-
cacheKeys.contains(it.key)
82-
}
83-
}
84-
}
8575
}

hooks/src/main/kotlin/xyz/junerver/compose/hooks/userequest/RequestOptions.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,12 @@ data class RequestOptions<TData> internal constructor(
8585
*/
8686
var ready: Boolean = true,
8787
/**
88-
* 通过设置 options.[refreshDeps],在依赖变化时, [useRequest] 会自动调用 [refresh] 方法,实现刷新(重复上一次请求)的效果。
88+
* 通过设置 options.[refreshDeps],在依赖变化时, [useRequest] 会自动调用 [Fetch.refresh] 方法,实现刷新(重复上一次请求)的效果。
8989
* 如果设置 options.[manual] = true,则 [refreshDeps] 不再生效
9090
*/
9191
var refreshDeps: Array<Any?> = emptyArray(),
9292
/**
93-
* 如果存在依赖刷新Action函数,则不执行默认的[refresh]函数,改为执行[refreshDepsAction]
93+
* 如果存在依赖刷新Action函数,则不执行默认的[Fetch.refresh]函数,改为执行[refreshDepsAction]
9494
*/
9595
var refreshDepsAction: (() -> Unit)? = null,
9696
/**
@@ -114,7 +114,7 @@ data class RequestOptions<TData> internal constructor(
114114
var getCache: ((params: TParams) -> CachedData<TData>)? = null,
115115

116116
/**
117-
* 通过设置 options.[loadingDelay] ,可以延迟 [loading] 变成 true 的时间,有效防止闪烁。
117+
* 通过设置 options.[loadingDelay] ,可以延迟 [FetchState.loading] 变成 true 的时间,有效防止闪烁。
118118
* 例如当一个接口正常会较快返回,我们如果常规使用会出现闪烁。从请求发起后,极快的从 false -> true ->false;
119119
* 我们可以设置一个大于这个返回时长的[loadingDelay],例如[50.milliseconds],这样在50ms内返回的接口,
120120
* 不会引起闪烁。这种闪烁其实还有一种变形场景,例如一个接口会极快返回,我们不希望用户继续快速点击,我们期望

hooks/src/main/kotlin/xyz/junerver/compose/hooks/userequest/types.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ import xyz.junerver.compose.hooks.SuspendNormalFunction
1414
import xyz.junerver.compose.hooks.TParams
1515
import xyz.junerver.compose.hooks.useCreation
1616
import xyz.junerver.compose.hooks.userequest.plugins.useAutoRunPlugin
17+
import xyz.junerver.compose.hooks.userequest.plugins.useDebouncePlugin
1718
import xyz.junerver.kotlin.isNotNull
1819

20+
@Suppress("ConstPropertyName")
1921
internal object Keys {
2022
const val loading = "loading"
2123
const val params = "params"
@@ -35,10 +37,6 @@ internal object Keys {
3537
* Version: v1.0
3638
*/
3739
internal sealed interface Copyable<Self> {
38-
/**
39-
* [copy]函数是为了通过[reduce]实现类似js中解构赋值覆盖的效果,注意实现时必须是[that]覆盖[this]:
40-
* `params = that.params ?: this.params,`
41-
*/
4240
fun copy(that: Self?): Self
4341
operator fun plus(that: Self?) = this.copy(that)
4442
}
@@ -54,6 +52,7 @@ internal fun <T : Copyable<T>> List<T>.cover(): T? {
5452
* map中如果有这个key就取值,无论结果是否为null;
5553
* 没有这个key则取旧值
5654
*/
55+
@Suppress("UNCHECKED_CAST")
5756
internal fun <T> Map<String, Any?>.getOrElse(key: String, default: T?) = if (this.containsKey(key)) {
5857
this[key] as? T
5958
} else {
@@ -247,7 +246,7 @@ data class OnBeforeReturn<TData>(
247246
/**
248247
* 插件生命周期[PluginLifecycle.onRequest]的返回值类型,
249248
* [Fetch._runAsync]会在调用[Fetch.requestFn]请求发生前回调所有插件的[PluginLifecycle.onRequest]函数。
250-
* 插件可以通过[Fetch.requestFn]拿到原始的请求函数,通过返回值[requestDeferred]来[async]闭包的[await]
249+
* 插件可以通过[Fetch.requestFn]拿到原始的请求函数,通过返回值[requestDeferred]来`async`闭包的`await`
251250
* 来改变实际请求。
252251
*/
253252
data class OnRequestReturn<TData>(val requestDeferred: Deferred<TData>? = null) :
@@ -325,10 +324,10 @@ abstract class PluginLifecycle<TData> {
325324
typealias GenPluginLifecycleFn<TData> = (Fetch<TData>, RequestOptions<TData>) -> PluginLifecycle<TData>
326325

327326
/**
328-
* 插件函数[useXXXPlugin]的返回值是真实的插件[Plugin]对象,
327+
* 插件函数 `useXXXPlugin` 的返回值是真实的插件[Plugin]对象,
329328
* 可以通过在[useRequestPluginsImpl]中调用[onInit]函数,用来初始化 [Fetch.fetchState]状态。
330329
* 插件对象自身实现了协程作用域[CoroutineScope],持有[Fetch]的实例、请求[RequestOptions]配置等内容。
331-
* 按需实现[IFetch]对应[Fetch]中的各个函数调用,就可以在插件函数[useXXXPlugin]中需要使用副作用函数时,间接回调[Fetch]实例。
330+
* 按需实现[IFetch]对应[Fetch]中的各个函数调用,就可以在插件函数`useXXXPlugin`中需要使用副作用函数时,间接回调[Fetch]实例。
332331
* 具体用例可以参考:[useAutoRunPlugin]
333332
*/
334333
abstract class Plugin<TData : Any> : IFetch<TData>, Serializable, CoroutineScope {

hooks/src/main/kotlin/xyz/junerver/compose/hooks/userequest/useRequest.kt

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,15 @@ typealias CancelFn = KFunction0<Unit>
3131
* Description: 一个用来管理网络状态的Hook,它可以非常方便的接入到传统的 retrofit 网络请求模式中。
3232
* 你几乎不需要做任何额外工作,就可以简单高效的在 Compose 中使用网络请求,并将请求数据作为状态,直接驱动UI。
3333
*
34-
* 重要:如果你使用例如 [GsonConverterFactory] 来反序列化你的响应,必须将反序列化后的对象设置成[Parcelable]!
34+
* 重要:如果你使用例如 `GsonConverterFactory` 来反序列化你的响应,必须将反序列化后的对象设置成[Parcelable]!
3535
*
36-
* [noop] 是所有函数的抽象,我们最终通过函数拿到的手动执行函数也是[noop]类型的,调用时要传递的是[arrayOf]的参数。
36+
* [SuspendNormalFunction] 是所有函数的抽象,我们最终通过函数拿到的手动执行函数也是[SuspendNormalFunction]类型的,
37+
* 调用时要传递的是[arrayOf]的参数。
3738
*
3839
* 我还额外提供了两个方便的转换函数
3940
* [asNoopFn]、[asSuspendNoopFn],这两个函数可以把任意的Kotlin函数转换成[useRequest]需要的函数。
4041
* 需要注意区分,如果是挂起函数就需要调用[asSuspendNoopFn],否则就使用
41-
* [asNoopFn],通过这个函数我们可以简化普通函数到[noop]的包装过程。
42+
* [asNoopFn],通过这个函数我们可以简化普通函数到[SuspendNormalFunction]的包装过程。
4243
*
4344
* 示例代码:
4445
*
@@ -85,8 +86,10 @@ typealias CancelFn = KFunction0<Unit>
8586
* @param options
8687
* 请求的配置项,参考[RequestOptions],以及[ahooks-useRequest](https://ahooks.gitee.io/zh-CN/hooks/use-request/index).
8788
* @param plugins 自定义的插件,这是一个数组,请通过arrayOf传入
88-
* @author Junerver date: 2024/1/25-8:11 Email: junerver@gmail.com Version:
89-
* v1.0
89+
* @author Junerver
90+
* date: 2024/1/25-8:11
91+
* Email: junerver@gmail.com
92+
* Version: v1.0
9093
*/
9194
@Composable
9295
fun <TData : Any> useRequest(
@@ -120,19 +123,19 @@ fun <TData : Any> useRequest(
120123
/** 这样做的好处是方便添加与变更次序,而不用每次覆写componentN函数 */
121124
return with(fetch) {
122125
Tuple7(
123-
/** 直接将[dataState.value]返回,避免拆包 */
126+
/** 直接将`dataState.value`返回,避免拆包 */
124127
first = dataState.value,
125-
/** 返回[loadingState] */
128+
/** 返回`loadingState` */
126129
second = loadingState.value,
127-
/** 返回原函数执行出错的异常[errorState] */
130+
/** 返回原函数执行出错的异常`errorState` */
128131
third = errorState.value,
129-
/** 如果函数手动执行,则通过返回的[run]函数,进行执行。 如果配置了防抖、节流会按照优先防抖、其次节流的策略返回对应的函数。 */
132+
/** 如果函数手动执行,则通过返回的`run`函数,进行执行。 如果配置了防抖、节流会按照优先防抖、其次节流的策略返回对应的函数。 */
130133
fourth = run,
131-
/** [mutate] 函数,用于直接修改当前状态值,目前缺少回溯 */
134+
/** `mutate` 函数,用于直接修改当前状态值,目前缺少回溯 */
132135
fifth = ::mutate,
133-
/** [refresh] 函数 */
136+
/** `refresh` 函数 */
134137
sixth = ::refresh,
135-
/** [cancel] 函数 */
138+
/** `cancel` 函数 */
136139
seventh = ::cancel
137140
)
138141
}

hooks/src/main/kotlin/xyz/junerver/compose/hooks/userequest/utils/cachePromise.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import kotlinx.coroutines.Deferred
1212

1313
private val cachePromise: MutableMap<String, Deferred<*>> = mutableMapOf()
1414

15+
@Suppress("UNCHECKED_CAST")
1516
internal fun <T> getCachePromise(cacheKey: String) = cachePromise[cacheKey] as? Deferred<T>
1617

1718
internal fun setCachePromise(cacheKey: String, promise: Deferred<*>) {

hooks/src/main/kotlin/xyz/junerver/compose/hooks/utils/depsAreSame.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("unused")
2+
13
package xyz.junerver.compose.hooks.utils
24

35
import xyz.junerver.compose.hooks.DependencyList

0 commit comments

Comments
 (0)