improve: Add major issue indicator to VRC status

This commit is contained in:
pa
2026-03-16 08:41:54 +09:00
parent 7c3af2ba6f
commit e3ea9881cc
2 changed files with 13 additions and 2 deletions
+6 -2
View File
@@ -116,7 +116,9 @@
v-else v-else
class="flex items-center gap-1 px-2 h-[22px] whitespace-nowrap border-r border-border cursor-pointer hover:bg-accent" class="flex items-center gap-1 px-2 h-[22px] whitespace-nowrap border-r border-border cursor-pointer hover:bg-accent"
@click="vrcStatusStore.openStatusPage()"> @click="vrcStatusStore.openStatusPage()">
<span class="inline-block size-2 rounded-full shrink-0 bg-[#e6a23c]" /> <span
class="inline-block size-2 rounded-full shrink-0"
:class="vrcStatusStore.isMajor ? 'bg-destructive' : 'bg-status-askme'" />
<span class="text-foreground text-[11px]">{{ t('status_bar.servers') }}</span> <span class="text-foreground text-[11px]">{{ t('status_bar.servers') }}</span>
</div> </div>
</HoverCardTrigger> </HoverCardTrigger>
@@ -127,7 +129,9 @@
align="start" align="start"
:side-offset="4"> :side-offset="4">
<div class="flex items-center gap-1.5 mb-1.5"> <div class="flex items-center gap-1.5 mb-1.5">
<span class="inline-block size-2 rounded-full shrink-0 bg-[#e6a23c]" /> <span
class="inline-block size-2 rounded-full shrink-0"
:class="vrcStatusStore.isMajor ? 'bg-destructive' : 'bg-status-askme'" />
<span class="font-semibold text-xs text-foreground">{{ <span class="font-semibold text-xs text-foreground">{{
t('status_bar.servers_issue') t('status_bar.servers_issue')
}}</span> }}</span>
+7
View File
@@ -11,6 +11,7 @@ export const useVrcStatusStore = defineStore('VrcStatus', () => {
const vrcStatusApiUrl = 'https://status.vrchat.com/api/v2'; const vrcStatusApiUrl = 'https://status.vrchat.com/api/v2';
const lastStatus = ref(''); const lastStatus = ref('');
const lastStatusIndicator = ref('');
const lastStatusTime = ref(null); const lastStatusTime = ref(null);
const lastStatusSummary = ref(''); const lastStatusSummary = ref('');
const lastTimeFetched = ref(0); const lastTimeFetched = ref(0);
@@ -25,6 +26,8 @@ export const useVrcStatusStore = defineStore('VrcStatus', () => {
const hasIssue = computed(() => !!lastStatus.value); const hasIssue = computed(() => !!lastStatus.value);
const isMajor = computed(() => lastStatusIndicator.value === 'major');
/** /**
* @returns {void} * @returns {void}
*/ */
@@ -54,10 +57,12 @@ export const useVrcStatusStore = defineStore('VrcStatus', () => {
lastStatusTime.value = new Date(data.page.updated_at); lastStatusTime.value = new Date(data.page.updated_at);
if (data.status.description === 'All Systems Operational') { if (data.status.description === 'All Systems Operational') {
lastStatus.value = ''; lastStatus.value = '';
lastStatusIndicator.value = '';
pollingInterval.value = 15 * 60 * 1000; // 15 minutes pollingInterval.value = 15 * 60 * 1000; // 15 minutes
return; return;
} }
lastStatus.value = data.status.description; lastStatus.value = data.status.description;
lastStatusIndicator.value = data.status.indicator || '';
pollingInterval.value = 2 * 60 * 1000; // 2 minutes pollingInterval.value = 2 * 60 * 1000; // 2 minutes
getVrcStatusSummary(); getVrcStatusSummary();
} }
@@ -116,10 +121,12 @@ export const useVrcStatusStore = defineStore('VrcStatus', () => {
return { return {
lastStatus, lastStatus,
lastStatusIndicator,
lastStatusTime, lastStatusTime,
lastStatusSummary, lastStatusSummary,
statusText, statusText,
hasIssue, hasIssue,
isMajor,
openStatusPage, openStatusPage,
onBrowserFocus, onBrowserFocus,
getVrcStatus getVrcStatus