Skip to content

Commit

Permalink
关注列表增加选择排序
Browse files Browse the repository at this point in the history
  • Loading branch information
10miaomiao committed Jun 4, 2023
1 parent 1467493 commit c801d66
Show file tree
Hide file tree
Showing 10 changed files with 290 additions and 62 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ fun ScaffoldView.openSearchDrawer() {

fun ScaffoldView.closeSearchDrawer() {
(drawerFragment as? SearchStartFragment)?.hideSoftInput()
openDrawer()
closeDrawer()
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,12 @@ class MenuItemView @JvmOverloads constructor(
if (visibility != prop.visibility) {
visibility = prop.visibility
}
if (prop.iconResource == null && prop.iconDrawable == null) {
if (prop.iconResource == null && prop.iconDrawable == null && prop.iconFileName == null) {
ui.icon.visibility = View.GONE
} else if (prop.iconFileName != null) {
val iconResource = context.resources.getIdentifier(prop.iconFileName, "drawable", context.packageName)
ui.icon.visibility = View.VISIBLE
ui.icon.setImageResource(iconResource)
} else if (prop.iconDrawable != null) {
ui.icon.visibility = View.VISIBLE
ui.icon.setImageDrawable(prop.iconDrawable)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class UserApi {
pageSize: Int,
keyword: String = "",
order: String = "pubdate",
) = MiaoHttp.request {
) = MiaoHttp.request {
url = BiliApiService.biliApp(
"x/v2/space/archive/cursor",
"vmid" to vmid,
Expand Down Expand Up @@ -197,8 +197,7 @@ class UserApi {
mid: String,
pageNum: Int = 1,
pageSize: Int = 30,
keyword: String = "",
order: String = "attention"
order: String = "attention" // 最常访问排列:attention,关注顺序排列:留空
) = MiaoHttp.request {
url = BiliApiService.biliApi(
"x/relation/followings",
Expand All @@ -210,4 +209,25 @@ class UserApi {
)
}

/**
* 关注分组
*/
fun relationTags() = MiaoHttp.request {
url = BiliApiService.biliApi("x/relation/tags")
}

fun relationTagDetail(
tagid: String, // 特别关注恒为-10,默认分组恒为0
order: String = "attention", // 最常访问排列:attention,关注顺序排列:留空
pageNum: Int = 1,
pageSize: Int = 30,
) = MiaoHttp.request {
url = BiliApiService.biliApi("x/relation/tag",
"tagid" to tagid,
"pn" to pageNum.toString(),
"ps" to pageSize.toString(),
"order_type" to order,
"order" to "desc",
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,8 @@ data class MenuItemPropInfo (
var iconDrawable: Drawable? = null,
@DrawableRes
var iconResource: Int? = null,
var iconFileName: String? = null,
var visibility: Int = View.VISIBLE
)
) {

}
2 changes: 2 additions & 0 deletions bilimiao-compose/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ dependencies {
implementation(Libraries.glideCompose)
implementation(Libraries.qrGenerator)

implementation(Libraries.dialogX)

implementation(project(":bilimiao-comm"))

testImplementation(Libraries.junit)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import cn.a10miaomiao.bilimiao.compose.comm.LocalFragmentNavController
import cn.a10miaomiao.bilimiao.compose.comm.LocalNavController
import cn.a10miaomiao.bilimiao.compose.comm.mypage.LocalPageConfigInfo
import cn.a10miaomiao.bilimiao.compose.comm.mypage.PageConfigInfo
import com.a10miaomiao.bilimiao.comm.mypage.MenuItemPropInfo
import com.a10miaomiao.bilimiao.comm.mypage.MyPage
import com.a10miaomiao.bilimiao.comm.mypage.myPageConfig
import org.kodein.di.DI
Expand All @@ -47,6 +48,11 @@ class ComposeFragment : Fragment(), MyPage, DIAware {
menus = pageConfigInfo.menus
}

override fun onMenuItemClick(view: View, menuItem: MenuItemPropInfo) {
super.onMenuItemClick(view, menuItem)
pageConfigInfo.onMenuItemClick?.invoke(menuItem)
}

private val url by lazy {
requireArguments().getString("url", "")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package cn.a10miaomiao.bilimiao.compose.comm.mypage

import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.platform.LocalLifecycleOwner
import cn.a10miaomiao.bilimiao.compose.ComposeFragment
import com.a10miaomiao.bilimiao.comm.mypage.MenuItemPropInfo
import com.a10miaomiao.bilimiao.comm.mypage.MyPage
Expand All @@ -21,7 +22,6 @@ internal val LocalPageConfigInfo: ProvidableCompositionLocal<PageConfigInfo?> =
fun PageConfig(
title: String = "",
menus: List<MenuItemPropInfo>? = null,

) {
val pageConfigInfo = LocalPageConfigInfo.current
LaunchedEffect(title, menus) {
Expand All @@ -31,7 +31,15 @@ fun PageConfig(
it.page.pageConfig.notifyConfigChanged()
}
}

DisposableEffect(LocalLifecycleOwner.current) {
onDispose {
pageConfigInfo?.let {
it.title = ""
it.menus = null
it.page.pageConfig.notifyConfigChanged()
}
}
}
}

@Composable
Expand All @@ -42,6 +50,11 @@ fun PageMenuItemClick(
LaunchedEffect(onMenuItemClick) {
pageConfigInfo?.onMenuItemClick = onMenuItemClick
}
DisposableEffect(LocalLifecycleOwner.current) {
onDispose {
pageConfigInfo?.onMenuItemClick = null
}
}
}
@Composable
fun PageMenuItemClick(
Expand All @@ -52,6 +65,11 @@ fun PageMenuItemClick(
LaunchedEffect(key1, onMenuItemClick) {
pageConfigInfo?.onMenuItemClick = onMenuItemClick
}
DisposableEffect(LocalLifecycleOwner.current) {
onDispose {
pageConfigInfo?.onMenuItemClick = null
}
}
}
@Composable
fun PageMenuItemClick(
Expand All @@ -75,6 +93,11 @@ fun PageMenuItemClick(
LaunchedEffect(key1, key2, onMenuItemClick) {
pageConfigInfo?.onMenuItemClick = onMenuItemClick
}
DisposableEffect(LocalLifecycleOwner.current) {
onDispose {
pageConfigInfo?.onMenuItemClick = null
}
}
}
@Composable
fun PageMenuItemClick(
Expand All @@ -88,4 +111,9 @@ fun PageMenuItemClick(
LaunchedEffect(key1, key2, key3, key4, onMenuItemClick) {
pageConfigInfo?.onMenuItemClick = onMenuItemClick
}
DisposableEffect(LocalLifecycleOwner.current) {
onDispose {
pageConfigInfo?.onMenuItemClick = null
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package cn.a10miaomiao.bilimiao.compose.commponents.dialogs

import androidx.compose.runtime.*

@Composable
fun rememberDialogState(): DialogState {
return remember {
DialogState()
}
}

@Stable
class DialogState() {
var openDialog: Boolean by mutableStateOf(false)

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package cn.a10miaomiao.bilimiao.compose.commponents.dialogs

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.RadioButton
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.text.font.FontWeight
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

data class SingleChoiceItem(
val name: String,
val value: String,
)

@Composable
fun SingleChoiceDialog(
state: DialogState,
title: String,
list: List<SingleChoiceItem>,
selected: String,
onChange: (value: String) -> Unit,
) {
val scope = rememberCoroutineScope()
if (state.openDialog) {
AlertDialog(
onDismissRequest = {
state.openDialog = false
},
title = {
Text(
text = title,
fontWeight = FontWeight.W700,
style = MaterialTheme.typography.titleSmall
)
},
text = {
Column() {
for (item in list) {
Row(
verticalAlignment = Alignment.CenterVertically,
) {
RadioButton(
item.value == selected,
onClick = {
if (selected != item.value) {
onChange(item.value)
scope.launch {
delay(200)
state.openDialog = false
}
}
}
)
Text(item.name)
}

}
}
},
confirmButton = {
}
)
}
}
Loading

0 comments on commit c801d66

Please sign in to comment.