@@ -36,6 +36,7 @@ import com.dadao.task.ui.TicketsScreen
|
||||
import com.dadao.task.ui.UpdateDialog
|
||||
import com.dadao.task.ui.WorkspaceScaffold
|
||||
import com.dadao.task.ui.WorkspaceTab
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
class MainActivity : ComponentActivity() {
|
||||
|
||||
@@ -114,10 +115,14 @@ private fun AppRoot(joinUri: String?) {
|
||||
.onFailure { pendingJoin = null }
|
||||
}
|
||||
|
||||
// 未读数:进工作区、切页面、或通知页标了已读(unreadRefresh)时刷新
|
||||
// 未读数:进工作区、切页面、或通知页标了已读(unreadRefresh)时刷新;
|
||||
// 停留不动时每 30 秒再拉一次,这样"任务被指派/快到期/已逾期"不用切页面也能看到角标。
|
||||
LaunchedEffect(current?.id, tab, unreadRefresh) {
|
||||
val ws = current ?: return@LaunchedEffect
|
||||
unread = api.unreadCount(ws.id)
|
||||
while (true) {
|
||||
unread = api.unreadCount(ws.id)
|
||||
delay(30_000)
|
||||
}
|
||||
}
|
||||
|
||||
// 版本检查:登录成功后查一次就够,查不到(网络、没发布过包)就当没有新版
|
||||
@@ -234,11 +239,15 @@ private fun AppRoot(joinUri: String?) {
|
||||
WorkspaceTab.Notifications -> NotificationsScreen(
|
||||
api = api,
|
||||
workspaceId = ws.id,
|
||||
onOpenItem = { itemId, isTicket ->
|
||||
// 通知点开后跳到对应列表并展开那一条;通知本身不带数据,页面自己回源
|
||||
onOpenItem = { itemId, itemKind ->
|
||||
// 通知点开后跳到对应页签并展开那一条;通知本身不带数据,页面自己回源
|
||||
reopenItem = itemId
|
||||
reopenKnowledge = false
|
||||
tab = if (isTicket) WorkspaceTab.Tickets else WorkspaceTab.Tasks
|
||||
reopenKnowledge = itemKind == "knowledge"
|
||||
tab = when (itemKind) {
|
||||
"knowledge" -> WorkspaceTab.Knowledge
|
||||
"ticket" -> WorkspaceTab.Tickets
|
||||
else -> WorkspaceTab.Tasks
|
||||
}
|
||||
},
|
||||
onUnreadChanged = { unreadRefresh += 1 },
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user