Improved the data refresh

This commit is contained in:
Tiago Ribeiro
2024-09-25 16:23:14 +01:00
parent dd94228672
commit bae02e5192
3 changed files with 17 additions and 50 deletions

View File

@@ -1,6 +1,5 @@
/* eslint-disable @next/next/no-img-element */ /* eslint-disable @next/next/no-img-element */
import Layout from "@/components/High/Layout"; import Layout from "@/components/High/Layout";
import Checkbox from "@/components/Low/Checkbox";
import Tooltip from "@/components/Low/Tooltip"; import Tooltip from "@/components/Low/Tooltip";
import {useListSearch} from "@/hooks/useListSearch"; import {useListSearch} from "@/hooks/useListSearch";
import usePagination from "@/hooks/usePagination"; import usePagination from "@/hooks/usePagination";
@@ -11,7 +10,7 @@ import {convertToUsers, getGroup} from "@/utils/groups.be";
import {shouldRedirectHome} from "@/utils/navigation.disabled"; import {shouldRedirectHome} from "@/utils/navigation.disabled";
import {checkAccess, getTypesOfUser} from "@/utils/permissions"; import {checkAccess, getTypesOfUser} from "@/utils/permissions";
import {getUserName} from "@/utils/users"; import {getUserName} from "@/utils/users";
import {getLinkedUsers, getSpecificUsers, getUsers} from "@/utils/users.be"; import {getLinkedUsers, getSpecificUsers} from "@/utils/users.be";
import axios from "axios"; import axios from "axios";
import clsx from "clsx"; import clsx from "clsx";
import {withIronSessionSsr} from "iron-session/next"; import {withIronSessionSsr} from "iron-session/next";
@@ -21,23 +20,10 @@ import Link from "next/link";
import {useRouter} from "next/router"; import {useRouter} from "next/router";
import {Divider} from "primereact/divider"; import {Divider} from "primereact/divider";
import {useEffect, useMemo, useState} from "react"; import {useEffect, useMemo, useState} from "react";
import { import {BsChevronLeft, BsClockFill, BsEnvelopeFill, BsFillPersonVcardFill, BsPlus, BsStopwatchFill, BsTag, BsTrash, BsX} from "react-icons/bs";
BsArrowLeft,
BsChevronLeft,
BsClockFill,
BsEnvelopeFill,
BsFillPersonVcardFill,
BsPencil,
BsPerson,
BsPlus,
BsStopwatchFill,
BsTag,
BsTrash,
BsX,
} from "react-icons/bs";
import {toast, ToastContainer} from "react-toastify"; import {toast, ToastContainer} from "react-toastify";
export const getServerSideProps = withIronSessionSsr(async ({req, res, params}) => { export const getServerSideProps = withIronSessionSsr(async ({req, params}) => {
const user = req.session.user as User; const user = req.session.user as User;
if (!user) { if (!user) {
@@ -119,7 +105,7 @@ export default function Home({user, group, users}: Props) {
.patch(`/api/groups/${group.id}`, {participants: group.participants.map((x) => x.id).filter((x) => !selectedUsers.includes(x))}) .patch(`/api/groups/${group.id}`, {participants: group.participants.map((x) => x.id).filter((x) => !selectedUsers.includes(x))})
.then(() => { .then(() => {
toast.success("The group has been updated successfully!"); toast.success("The group has been updated successfully!");
setTimeout(() => router.reload(), 500); router.replace(router.asPath);
}) })
.catch((e) => { .catch((e) => {
console.error(e); console.error(e);
@@ -141,7 +127,7 @@ export default function Home({user, group, users}: Props) {
.patch(`/api/groups/${group.id}`, {participants: [...group.participants.map((x) => x.id), ...selectedUsers]}) .patch(`/api/groups/${group.id}`, {participants: [...group.participants.map((x) => x.id), ...selectedUsers]})
.then(() => { .then(() => {
toast.success("The group has been updated successfully!"); toast.success("The group has been updated successfully!");
setTimeout(() => router.reload(), 500); router.replace(router.asPath);
}) })
.catch((e) => { .catch((e) => {
console.error(e); console.error(e);
@@ -161,7 +147,7 @@ export default function Home({user, group, users}: Props) {
.patch(`/api/groups/${group.id}`, {name}) .patch(`/api/groups/${group.id}`, {name})
.then(() => { .then(() => {
toast.success("The group has been updated successfully!"); toast.success("The group has been updated successfully!");
setTimeout(() => router.reload(), 500); router.replace(router.asPath);
}) })
.catch((e) => { .catch((e) => {
console.error(e); console.error(e);
@@ -180,7 +166,7 @@ export default function Home({user, group, users}: Props) {
.delete(`/api/groups/${group.id}`) .delete(`/api/groups/${group.id}`)
.then(() => { .then(() => {
toast.success("This group has been successfully deleted!"); toast.success("This group has been successfully deleted!");
setTimeout(() => router.push("/groups"), 1000); router.replace("/groups");
}) })
.catch((e) => { .catch((e) => {
console.error(e); console.error(e);

View File

@@ -1,19 +1,15 @@
/* eslint-disable @next/next/no-img-element */ /* eslint-disable @next/next/no-img-element */
import Layout from "@/components/High/Layout"; import Layout from "@/components/High/Layout";
import Button from "@/components/Low/Button";
import Checkbox from "@/components/Low/Checkbox";
import Input from "@/components/Low/Input"; import Input from "@/components/Low/Input";
import Tooltip from "@/components/Low/Tooltip"; import Tooltip from "@/components/Low/Tooltip";
import {useListSearch} from "@/hooks/useListSearch"; import {useListSearch} from "@/hooks/useListSearch";
import usePagination from "@/hooks/usePagination"; import usePagination from "@/hooks/usePagination";
import {GroupWithUsers, User} from "@/interfaces/user"; import {User} from "@/interfaces/user";
import {sessionOptions} from "@/lib/session"; import {sessionOptions} from "@/lib/session";
import {USER_TYPE_LABELS} from "@/resources/user"; import {USER_TYPE_LABELS} from "@/resources/user";
import {convertToUsers, getGroup} from "@/utils/groups.be";
import {shouldRedirectHome} from "@/utils/navigation.disabled"; import {shouldRedirectHome} from "@/utils/navigation.disabled";
import {checkAccess, getTypesOfUser} from "@/utils/permissions";
import {getUserName} from "@/utils/users"; import {getUserName} from "@/utils/users";
import {getLinkedUsers, getSpecificUsers, getUsers} from "@/utils/users.be"; import {getLinkedUsers} from "@/utils/users.be";
import axios from "axios"; import axios from "axios";
import clsx from "clsx"; import clsx from "clsx";
import {withIronSessionSsr} from "iron-session/next"; import {withIronSessionSsr} from "iron-session/next";
@@ -22,25 +18,11 @@ import Head from "next/head";
import Link from "next/link"; import Link from "next/link";
import {useRouter} from "next/router"; import {useRouter} from "next/router";
import {Divider} from "primereact/divider"; import {Divider} from "primereact/divider";
import {useEffect, useMemo, useState} from "react"; import {useState} from "react";
import { import {BsCheck, BsChevronLeft, BsClockFill, BsEnvelopeFill, BsStopwatchFill} from "react-icons/bs";
BsArrowLeft,
BsCheck,
BsChevronLeft,
BsClockFill,
BsEnvelopeFill,
BsFillPersonVcardFill,
BsPencil,
BsPerson,
BsPlus,
BsStopwatchFill,
BsTag,
BsTrash,
BsX,
} from "react-icons/bs";
import {toast, ToastContainer} from "react-toastify"; import {toast, ToastContainer} from "react-toastify";
export const getServerSideProps = withIronSessionSsr(async ({req, res, params}) => { export const getServerSideProps = withIronSessionSsr(async ({req}) => {
const user = req.session.user as User; const user = req.session.user as User;
if (!user) { if (!user) {
@@ -93,7 +75,7 @@ export default function Home({user, users}: Props) {
.post<{id: string}>(`/api/groups`, {name, participants: selectedUsers, admin: user.id}) .post<{id: string}>(`/api/groups`, {name, participants: selectedUsers, admin: user.id})
.then((result) => { .then((result) => {
toast.success("Your group has been created successfully!"); toast.success("Your group has been created successfully!");
setTimeout(() => router.push(`/groups/${result.data.id}`), 250); router.replace(`/groups/${result.data.id}`);
}) })
.catch((e) => { .catch((e) => {
console.error(e); console.error(e);

View File

@@ -4,21 +4,20 @@ import {withIronSessionSsr} from "iron-session/next";
import {sessionOptions} from "@/lib/session"; import {sessionOptions} from "@/lib/session";
import {ToastContainer} from "react-toastify"; import {ToastContainer} from "react-toastify";
import Layout from "@/components/High/Layout"; import Layout from "@/components/High/Layout";
import {Group, GroupWithUsers, User, WithUser} from "@/interfaces/user"; import {GroupWithUsers, User} from "@/interfaces/user";
import {shouldRedirectHome} from "@/utils/navigation.disabled"; import {shouldRedirectHome} from "@/utils/navigation.disabled";
import {getUserName} from "@/utils/users"; import {getUserName} from "@/utils/users";
import {convertToUsers, getGroupsForUser, getParticipantGroups, getUserGroups} from "@/utils/groups.be"; import {convertToUsers, getGroupsForUser} from "@/utils/groups.be";
import {getSpecificUsers, getUsers} from "@/utils/users.be"; import {getSpecificUsers} from "@/utils/users.be";
import {checkAccess} from "@/utils/permissions"; import {checkAccess} from "@/utils/permissions";
import usePagination from "@/hooks/usePagination"; import usePagination from "@/hooks/usePagination";
import {useListSearch} from "@/hooks/useListSearch"; import {useListSearch} from "@/hooks/useListSearch";
import Link from "next/link"; import Link from "next/link";
import {uniq} from "lodash"; import {uniq} from "lodash";
import {BsPlus} from "react-icons/bs"; import {BsPlus} from "react-icons/bs";
import {Divider} from "primereact/divider";
import Separator from "@/components/Low/Separator"; import Separator from "@/components/Low/Separator";
export const getServerSideProps = withIronSessionSsr(async ({req, res}) => { export const getServerSideProps = withIronSessionSsr(async ({req}) => {
const user = req.session.user; const user = req.session.user;
if (!user) { if (!user) {