fix token refresh on window focus, deactivate webkit playwright tests

This commit is contained in:
Gregor Vostrak
2024-06-24 17:18:08 +02:00
parent 237b3832bb
commit a10d0569af
4 changed files with 26 additions and 17 deletions
+4 -4
View File
@@ -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. */
// {
+7 -3
View File
@@ -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();
};
});
+14
View File
@@ -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');
}
+1 -10
View File
@@ -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,