mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-05-07 20:32:26 +00:00
fix token refresh on window focus, deactivate webkit playwright tests
This commit is contained in:
@@ -44,10 +44,10 @@ export default defineConfig({
|
||||
use: { ...devices['Desktop Firefox'] },
|
||||
},
|
||||
|
||||
{
|
||||
name: 'webkit',
|
||||
use: { ...devices['Desktop Safari'] },
|
||||
},
|
||||
// {
|
||||
// name: 'webkit',
|
||||
// use: { ...devices['Desktop Safari'] },
|
||||
// },
|
||||
|
||||
/* Test against mobile viewports. */
|
||||
// {
|
||||
|
||||
@@ -4,17 +4,17 @@ import Banner from '@/Components/Banner.vue';
|
||||
import OrganizationSwitcher from '@/Components/OrganizationSwitcher.vue';
|
||||
import CurrentSidebarTimer from '@/Components/CurrentSidebarTimer.vue';
|
||||
import {
|
||||
Bars3Icon,
|
||||
ChartBarIcon,
|
||||
ClockIcon,
|
||||
Cog6ToothIcon,
|
||||
CreditCardIcon,
|
||||
FolderIcon,
|
||||
HomeIcon,
|
||||
TagIcon,
|
||||
UserCircleIcon,
|
||||
UserGroupIcon,
|
||||
Bars3Icon,
|
||||
XMarkIcon,
|
||||
CreditCardIcon,
|
||||
} from '@heroicons/vue/20/solid';
|
||||
import NavigationSidebarItem from '@/Components/NavigationSidebarItem.vue';
|
||||
import UserSettingsIcon from '@/Components/UserSettingsIcon.vue';
|
||||
@@ -32,6 +32,7 @@ import {
|
||||
import { isBillingActivated } from '@/utils/billing';
|
||||
import type { User } from '@/types/models';
|
||||
import { ArrowsRightLeftIcon } from '@heroicons/vue/16/solid';
|
||||
import { fetchToken, isTokenValid } from '@/utils/api';
|
||||
|
||||
defineProps({
|
||||
title: String,
|
||||
@@ -45,7 +46,10 @@ onMounted(async () => {
|
||||
window.initialDataLoaded = true;
|
||||
initializeStores();
|
||||
}
|
||||
window.onfocus = () => {
|
||||
window.onfocus = async () => {
|
||||
if (!isTokenValid()) {
|
||||
await fetchToken();
|
||||
}
|
||||
refreshStores();
|
||||
};
|
||||
});
|
||||
|
||||
@@ -5,6 +5,7 @@ import type {
|
||||
ZodiosQueryParamsByAlias,
|
||||
} from '@zodios/core';
|
||||
import { api } from '../../../openapi.json.client';
|
||||
import { router } from '@inertiajs/vue3';
|
||||
|
||||
export type SolidTimeApi = ApiOf<typeof api>;
|
||||
|
||||
@@ -123,3 +124,16 @@ export type UpdateOrganizationBody = ZodiosBodyByAlias<
|
||||
SolidTimeApi,
|
||||
'updateOrganization'
|
||||
>;
|
||||
|
||||
export async function fetchToken() {
|
||||
return new Promise((resolve) => {
|
||||
router.reload({
|
||||
onFinish: () => {
|
||||
resolve(null);
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
export function isTokenValid() {
|
||||
return window.document.cookie.includes('solidtime_session');
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import { defineStore } from 'pinia';
|
||||
import { ref } from 'vue';
|
||||
import axios from 'axios';
|
||||
import { router } from '@inertiajs/vue3';
|
||||
import { fetchToken } from '@/utils/api';
|
||||
|
||||
export type NotificationType = 'success' | 'error';
|
||||
|
||||
@@ -37,16 +38,6 @@ export const useNotificationsStore = defineStore('notifications', () => {
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchToken() {
|
||||
return new Promise((resolve) => {
|
||||
router.reload({
|
||||
onFinish: () => {
|
||||
resolve(null);
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async function handleApiRequestNotifications<T>(
|
||||
apiRequest: () => Promise<T>,
|
||||
successMessage?: string,
|
||||
|
||||
Reference in New Issue
Block a user