fix: reload main screen when become active

This commit is contained in:
Nikolai Giman
2026-06-28 15:02:07 +02:00
parent f1ff303e58
commit e1a8bb71a0
5 changed files with 41 additions and 3 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "taskview-ce-api-server",
"version": "1.48.3",
"version": "1.48.4",
"scripts": {
"dev": "bun run --watch ./server.ts",
"start": "NODE_ENV=production node ./dist/taskview-server.js",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "taskview-ce-monorepo",
"version": "1.48.3",
"version": "1.48.4",
"private": true,
"description": "TaskView CE monorepo containing web, API, and packages",
"workspaces": [
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "web-nuxt-ui",
"private": true,
"type": "module",
"version": "1.48.3",
"version": "1.48.4",
"scripts": {
"dev": "vite",
"build:packages": "pnpm --filter taskview-db-schemas build && pnpm --filter taskview-api build",
@@ -39,10 +39,22 @@
import { useI18n } from 'vue-i18n'
import TvCollapseSidebarDesktop from '@/components/features/base/TvCollapseSidebarDesktop.vue'
import { useLsRef } from '@/composables/useLsRef'
import { useRefreshOnResume } from '@/composables/useRefreshOnResume'
import { useBaseScreenStore } from '@/stores/base-screen.store'
import { useCollaborationStore } from '@/stores/collaboration.store'
import DesktopScreen from './screen-main/DesktopScreen.vue'
import DashboardList from './screen-main/DashboardList.vue'
const { t } = useI18n()
const view = useLsRef<'list' | 'widgets'>('main-screen-view', 'list')
const baseScreenStore = useBaseScreenStore()
const collaborationStore = useCollaborationStore()
useRefreshOnResume(() => {
baseScreenStore.fetchAllState()
baseScreenStore.fetchAllAvailableLists()
collaborationStore.fetchAllCollaborationUsers()
})
</script>
+26
View File
@@ -0,0 +1,26 @@
import { onScopeDispose } from 'vue'
import { useEventListener } from '@vueuse/core'
import { App } from '@capacitor/app'
export function useRefreshOnResume(onResume: () => void) {
let last = 0
const trigger = () => {
const now = Date.now()
if (now - last < 1000) return
last = now
onResume()
}
useEventListener(document, 'visibilitychange', () => {
if (!document.hidden) trigger()
})
let remove: (() => void) | undefined
App.addListener('appStateChange', ({ isActive }) => {
if (isActive) trigger()
}).then((handle) => {
remove = () => handle.remove()
})
onScopeDispose(() => remove?.())
}