diff --git a/resources/js/Components/Dashboard/TeamActivityCard.vue b/resources/js/Components/Dashboard/TeamActivityCard.vue index f6da7773..e2827d25 100644 --- a/resources/js/Components/Dashboard/TeamActivityCard.vue +++ b/resources/js/Components/Dashboard/TeamActivityCard.vue @@ -2,6 +2,8 @@ import DashboardCard from '@/Components/Dashboard/DashboardCard.vue'; import TeamActivityCardEntry from '@/Components/Dashboard/TeamActivityCardEntry.vue'; import { UserGroupIcon } from '@heroicons/vue/20/solid'; +import { router } from '@inertiajs/vue3'; +import SecondaryButton from '@/Components/SecondaryButton.vue'; defineProps<{ latestTeamActivity: { @@ -24,5 +26,20 @@ defineProps<{ :name="activity.name" :description="activity.description" :working="activity.status"> +
+
+ +

+ Invite your co-workers +

+

You can invite your entire team.

+ Go to Members + +
+
diff --git a/resources/js/Components/OrganizationSwitcher.vue b/resources/js/Components/OrganizationSwitcher.vue index 55717e6a..db43be99 100644 --- a/resources/js/Components/OrganizationSwitcher.vue +++ b/resources/js/Components/OrganizationSwitcher.vue @@ -5,6 +5,7 @@ import DropdownLink from '@/Components/DropdownLink.vue'; import { router, usePage } from '@inertiajs/vue3'; import type { Organization, User } from '@/types/models'; import { isBillingActivated } from '@/utils/billing'; +import { initializeStores } from '@/utils/init'; const page = usePage<{ jetstream: { @@ -28,6 +29,9 @@ const switchToTeam = (team: Organization) => { }, { preserveState: false, + onSuccess: () => { + initializeStores(); + }, } ); }; diff --git a/resources/js/Layouts/AppLayout.vue b/resources/js/Layouts/AppLayout.vue index 8705db74..039ad327 100644 --- a/resources/js/Layouts/AppLayout.vue +++ b/resources/js/Layouts/AppLayout.vue @@ -19,14 +19,8 @@ import NavigationSidebarItem from '@/Components/NavigationSidebarItem.vue'; import UserSettingsIcon from '@/Components/UserSettingsIcon.vue'; import MainContainer from '@/Pages/MainContainer.vue'; import { onMounted, ref } from 'vue'; -import { useProjectsStore } from '@/utils/useProjects'; -import { useTagsStore } from '@/utils/useTags'; -import { useTasksStore } from '@/utils/useTasks'; -import { useCurrentTimeEntryStore } from '@/utils/useCurrentTimeEntry'; -import { useClientsStore } from '@/utils/useClients'; -import { useMembersStore } from '@/utils/useMembers'; import NotificationContainer from '@/Components/NotificationContainer.vue'; -import { useTimeEntriesStore } from '@/utils/useTimeEntries'; +import { initializeStores } from '@/utils/init'; defineProps({ title: String, @@ -38,13 +32,7 @@ onMounted(async () => { // make sure that the initial requests are only loaded once, this can be removed once we move away from inertia if (window.initialDataLoaded !== true) { window.initialDataLoaded = true; - useProjectsStore().fetchProjects(); - useTasksStore().fetchTasks(); - useTagsStore().fetchTags(); - useCurrentTimeEntryStore().fetchCurrentTimeEntry(); - useClientsStore().fetchClients(); - useMembersStore().fetchMembers(); - useTimeEntriesStore().fetchTimeEntries(); + initializeStores(); } }); diff --git a/resources/js/Pages/Time.vue b/resources/js/Pages/Time.vue index a3a0da9a..20556e82 100644 --- a/resources/js/Pages/Time.vue +++ b/resources/js/Pages/Time.vue @@ -92,7 +92,7 @@ const groupedTimeEntries = computed(() => {
+ class="flex justify-center items-center py-5 text-muted font-medium"> All time entries are loaded!
diff --git a/resources/js/utils/init.ts b/resources/js/utils/init.ts new file mode 100644 index 00000000..d97838e1 --- /dev/null +++ b/resources/js/utils/init.ts @@ -0,0 +1,17 @@ +import { useProjectsStore } from '@/utils/useProjects'; +import { useTasksStore } from '@/utils/useTasks'; +import { useTagsStore } from '@/utils/useTags'; +import { useCurrentTimeEntryStore } from '@/utils/useCurrentTimeEntry'; +import { useClientsStore } from '@/utils/useClients'; +import { useMembersStore } from '@/utils/useMembers'; +import { useTimeEntriesStore } from '@/utils/useTimeEntries'; + +export function initializeStores() { + useProjectsStore().fetchProjects(); + useTasksStore().fetchTasks(); + useTagsStore().fetchTags(); + useCurrentTimeEntryStore().fetchCurrentTimeEntry(); + useClientsStore().fetchClients(); + useMembersStore().fetchMembers(); + useTimeEntriesStore().fetchTimeEntries(); +}