mirror of https://github.com/halo-dev/halo
feat: request health api for session keep-alive (#4949)
#### What type of PR is this? /area console /kind improvement /milestone 2.11.0 #### What this PR does / why we need it: 在 Console 和 UC 轮询 /actuator/health 接口保持登录会话,目前是 5min 请求一次。 #### Which issue(s) this PR fixes: Fixes #4947 #### Does this PR introduce a user-facing change? ```release-note 优化 Console 的登录会话保活机制。 ```pull/4955/head
parent
6e70d2e047
commit
8f83df415c
|
@ -39,6 +39,7 @@ import { usePageUpdateMutate } from "./composables/use-page-update-mutate";
|
|||
import { useAutoSaveContent } from "@console/composables/use-auto-save-content";
|
||||
import { useContentSnapshot } from "@console/composables/use-content-snapshot";
|
||||
import { useSaveKeybinding } from "@console/composables/use-save-keybinding";
|
||||
import { useSessionKeepAlive } from "@/composables/use-session-keep-alive";
|
||||
|
||||
const router = useRouter();
|
||||
const { t } = useI18n();
|
||||
|
@ -373,6 +374,9 @@ const handlePreview = async () => {
|
|||
|
||||
useSaveKeybinding(handleSave);
|
||||
|
||||
// Keep session alive
|
||||
useSessionKeepAlive();
|
||||
|
||||
// Upload image
|
||||
async function handleUploadImage(file: File) {
|
||||
if (!isUpdateMode.value) {
|
||||
|
|
|
@ -39,6 +39,7 @@ import { contentAnnotations } from "@/constants/annotations";
|
|||
import { useAutoSaveContent } from "@console/composables/use-auto-save-content";
|
||||
import { useContentSnapshot } from "@console/composables/use-content-snapshot";
|
||||
import { useSaveKeybinding } from "@console/composables/use-save-keybinding";
|
||||
import { useSessionKeepAlive } from "@/composables/use-session-keep-alive";
|
||||
|
||||
const router = useRouter();
|
||||
const { t } = useI18n();
|
||||
|
@ -398,6 +399,9 @@ const handlePreview = async () => {
|
|||
|
||||
useSaveKeybinding(handleSave);
|
||||
|
||||
// Keep session alive
|
||||
useSessionKeepAlive();
|
||||
|
||||
// Upload image
|
||||
async function handleUploadImage(file: File) {
|
||||
if (!isUpdateMode.value) {
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
import { useUserStore } from "@/stores/user";
|
||||
import { useQuery } from "@tanstack/vue-query";
|
||||
import { computed } from "vue";
|
||||
|
||||
export function useSessionKeepAlive() {
|
||||
const { isAnonymous } = useUserStore();
|
||||
|
||||
useQuery({
|
||||
queryKey: ["health", "keep-session-alive"],
|
||||
queryFn: () => fetch("/actuator/health"),
|
||||
refetchInterval: 1000 * 60 * 5, // 5 minutes
|
||||
refetchOnWindowFocus: true,
|
||||
enabled: computed(() => !isAnonymous),
|
||||
});
|
||||
}
|
|
@ -32,6 +32,7 @@ import PostSettingEditModal from "./components/PostSettingEditModal.vue";
|
|||
import HasPermission from "@/components/permission/HasPermission.vue";
|
||||
import { provide } from "vue";
|
||||
import type { ComputedRef } from "vue";
|
||||
import { useSessionKeepAlive } from "@/composables/use-session-keep-alive";
|
||||
|
||||
const router = useRouter();
|
||||
const { t } = useI18n();
|
||||
|
@ -350,6 +351,9 @@ async function handleUploadImage(file: File) {
|
|||
});
|
||||
return data;
|
||||
}
|
||||
|
||||
// Keep session alive
|
||||
useSessionKeepAlive();
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
Loading…
Reference in New Issue