Commit 9c312e33 by Arjun Jhukal

fixed the linting issue

parent 23741dbb
...@@ -3,7 +3,7 @@ name: getFirekirin Deployment Pipeline ...@@ -3,7 +3,7 @@ name: getFirekirin Deployment Pipeline
on: on:
push: push:
branches: branches:
- main - fixes/linting
jobs: jobs:
build-and-deploy: build-and-deploy:
......
// import prettier from 'eslint-plugin-prettier'; import { FlatCompat } from '@eslint/eslintrc';
import typescriptEslint from '@typescript-eslint/eslint-plugin';
import tsParser from '@typescript-eslint/parser';
import js from '@eslint/js'; import js from '@eslint/js';
import tseslint from '@typescript-eslint/eslint-plugin';
import tsParser from '@typescript-eslint/parser';
import reactHooks from 'eslint-plugin-react-hooks';
import globals from 'globals';
import { dirname } from 'path'; import { dirname } from 'path';
import { fileURLToPath } from 'url'; import { fileURLToPath } from 'url';
import { FlatCompat } from '@eslint/eslintrc';
const __filename = fileURLToPath(import.meta.url); const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename); const __dirname = dirname(__filename);
const compat = new FlatCompat({ const compat = new FlatCompat({
baseDirectory: __dirname, baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
}); });
const eslintConfig = [ /** @type {import("eslint").Linter.FlatConfig[]} */
...compat.extends('next/core-web-vitals', 'next/typescript', 'prettier'), export default [
// =========================
// Global ignores
// =========================
{ {
ignores: ['**/node_modules/*', '**/.next/*'] ignores: [
'**/node_modules/**',
'**/.next/**',
'dist/**',
'*.config.js',
'*.config.mjs',
'eslint.config.mjs',
'postcss.config.mjs',
'ecosystem.config.js',
],
}, },
// =========================
// Base JS rules (JS / MJS)
// =========================
{ {
plugins: { files: ['**/*.{js,mjs}'],
// prettier, languageOptions: {
'@typescript-eslint': typescriptEslint ecmaVersion: 2020,
sourceType: 'module',
globals: globals.node,
},
rules: {
...js.configs.recommended.rules,
}, },
},
// =========================
// Next.js + TS + Prettier
// (spread FIRST, no extends)
// =========================
...compat.extends(
'next/core-web-vitals',
'next/typescript',
'prettier'
).map(config => ({
...config,
files: ['**/*.{ts,tsx}'],
})),
// =========================
// TypeScript rules
// =========================
{
files: ['**/*.{ts,tsx}'],
languageOptions: { languageOptions: {
parser: tsParser, parser: tsParser,
ecmaVersion: 5, ecmaVersion: 2020,
sourceType: 'module', sourceType: 'module',
globals: globals.browser,
parserOptions: { parserOptions: {
project: './tsconfig.json', project: './tsconfig.json',
createDefaultProgram: true },
}
}, },
settings: { plugins: {
'import/resolver': { '@typescript-eslint': tseslint,
node: { 'react-hooks': reactHooks,
moduleDirectory: ['node_modules', 'src/']
},
typescript: {
alwaysTryTypes: true
}
}
}, },
rules: { rules: {
'react/jsx-filename-extension': 'off', // Disable base rule
'no-param-reassign': 'off', 'no-unused-vars': 'off',
'react/prop-types': 'off',
'react/require-default-props': 'off',
'react/no-array-index-key': 'off',
'react/react-in-jsx-scope': 'off',
'react/jsx-props-no-spreading': 'off',
'import/order': 'off',
'no-console': 'off',
'no-shadow': 'off',
'@typescript-eslint/naming-convention': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'import/no-cycle': 'off',
'prefer-destructuring': 'off',
'import/no-extraneous-dependencies': 'off',
'react/display-name': 'off',
'import/no-unresolved': ['off', { caseSensitive: false }],
'import/no-unresolved': [
'off',
{
caseSensitive: false
}
],
'no-restricted-imports': [
'error',
{
patterns: ['@mui/*/*/*', '!@mui/material/test-utils/*']
}
],
// TS unused vars (WORKING)
'@typescript-eslint/no-unused-vars': [ '@typescript-eslint/no-unused-vars': [
'error', 'error',
{ {
vars: 'all', vars: 'all',
args: 'none' args: 'after-used',
} ignoreRestSiblings: true,
argsIgnorePattern: '^_',
varsIgnorePattern: '^React$|^_',
},
], ],
// 'prettier/prettier': [ '@typescript-eslint/no-explicit-any': 'off',
// 'warn',
// {
// bracketSpacing: true,
// printWidth: 140,
// singleQuote: true,
// trailingComma: 'none',
// tabWidth: 2,
// useTabs: false,
// endOfLine: "lf"
// }
// ]
}
}
];
export default eslintConfig; // React
'react/react-in-jsx-scope': 'off',
'react/prop-types': 'off',
'react/no-unescaped-entities': 'off',
// Hooks
...reactHooks.configs.recommended.rules,
},
},
];
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
"eslint": "^9", "eslint": "^9",
"eslint-config-next": "15.5.3", "eslint-config-next": "15.5.3",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-react-refresh": "^0.4.26",
"tailwindcss": "^4", "tailwindcss": "^4",
"typescript": "^5" "typescript": "^5"
} }
...@@ -18541,6 +18542,16 @@ ...@@ -18541,6 +18542,16 @@
"eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
} }
}, },
"node_modules/eslint-plugin-react-refresh": {
"version": "0.4.26",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz",
"integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"eslint": ">=8.40"
}
},
"node_modules/eslint-plugin-react/node_modules/resolve": { "node_modules/eslint-plugin-react/node_modules/resolve": {
"version": "2.0.0-next.5", "version": "2.0.0-next.5",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
"eslint": "^9", "eslint": "^9",
"eslint-config-next": "15.5.3", "eslint-config-next": "15.5.3",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-react-refresh": "^0.4.26",
"tailwindcss": "^4", "tailwindcss": "^4",
"typescript": "^5" "typescript": "^5"
} }
......
import { SeonProvider } from '@/app/SeonProvider'
import LoginPage from '@/components/pages/auth/login' import LoginPage from '@/components/pages/auth/login'
import React from 'react'
export default function Login() { export default function Login() {
return ( return (
// <SeonProvider> // <SeonProvider>
<LoginPage /> <LoginPage />
// </SeonProvider> // </SeonProvider>
) )
} }
...@@ -18,10 +18,10 @@ function VerifyEmailContent() { ...@@ -18,10 +18,10 @@ function VerifyEmailContent() {
const id = searchParams.get("id"); const id = searchParams.get("id");
const hash = searchParams.get("hash"); const hash = searchParams.get("hash");
const [sendEmailVerificationAgain, { isLoading: sendingLink }] = useSendVerificationLinkAgainMutation(); const [sendEmailVerificationAgain, { isLoading: sendingLink }] = useSendVerificationLinkAgainMutation();
const [verifyEmail, { isLoading }] = useVerifyEmailMutation(); const [verifyEmail] = useVerifyEmailMutation();
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const { deviceId, loading } = useSeon(); const { deviceId } = useSeon();
const handleLinkResend = async () => { const handleLinkResend = async () => {
try { try {
......
...@@ -5,9 +5,9 @@ import { useGetAnalyticsQuery } from '@/services/dashboardApi'; ...@@ -5,9 +5,9 @@ import { useGetAnalyticsQuery } from '@/services/dashboardApi';
import { AnalyticsProps } from '@/types/dashboard'; import { AnalyticsProps } from '@/types/dashboard';
import { formatDateTime } from '@/utils/formatDateTime'; import { formatDateTime } from '@/utils/formatDateTime';
import { Box, ClickAwayListener, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material'; import { Box, ClickAwayListener, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material';
import { ArrowLeft, More } from '@wandersonalwes/iconsax-react'; import { ArrowLeft } from '@wandersonalwes/iconsax-react';
import { ApexOptions } from 'apexcharts'; import { ApexOptions } from 'apexcharts';
import React, { useRef, useState } from 'react'; import { useRef, useState } from 'react';
import Chart from "react-apexcharts"; import Chart from "react-apexcharts";
type AnalyticsType = "today" | "this_week" | "this_month" | "this_year" | "all_time"; type AnalyticsType = "today" | "this_week" | "this_month" | "this_year" | "all_time";
......
...@@ -21,29 +21,29 @@ const AdminDashboardTableWrapper = ({ title, cta, children }: { title?: string; ...@@ -21,29 +21,29 @@ const AdminDashboardTableWrapper = ({ title, cta, children }: { title?: string;
) )
} }
export default function AdminDashboardRoot() { export default function AdminDashboardRoot() {
const [search, setSearch] = React.useState(""); const [search, _setSearch] = React.useState("");
const games = [ // const games = [
{ // {
name: "Firekirin", // name: "Firekirin",
amount: 50, // amount: 50,
percentage: 10 // percentage: 10
}, // },
{ // {
name: "Ultrapanda", // name: "Ultrapanda",
amount: "168k", // amount: "168k",
percentage: 10 // percentage: 10
}, // },
{ // {
name: "Panda Master", // name: "Panda Master",
amount: "268k", // amount: "268k",
percentage: 10 // percentage: 10
}, // },
{ // {
name: "Fish Master", // name: "Fish Master",
amount: "136k", // amount: "136k",
percentage: 10 // percentage: 10
}, // },
] // ]
return ( return (
<> <>
<h1 className="text-[24px] leading-[120%] mb-6">Dashboard</h1> <h1 className="text-[24px] leading-[120%] mb-6">Dashboard</h1>
......
"use client"; "use client";
import React from 'react';
import { useFormik } from 'formik';
import * as Yup from 'yup';
import { InputLabel, OutlinedInput, Button } from '@mui/material';
import PageHeader from '@/components/molecules/PageHeader'; import PageHeader from '@/components/molecules/PageHeader';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { useAppDispatch } from '@/hooks/hook'; import { useAppDispatch } from '@/hooks/hook';
import { useCreatePaymentSetupMutation, useGetPaymentSetupQuery } from '@/services/paymentSetupApi'; import { showToast, ToastVariant } from '@/slice/toastSlice';
import { Button, InputLabel, OutlinedInput } from '@mui/material';
import { useFormik } from 'formik';
import * as Yup from 'yup';
export default function PaymentSetup() { export default function PaymentSetup() {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const { data } = useGetPaymentSetupQuery(); // const { data } = useGetPaymentSetupQuery();
const [updatePaymentSetup, { isLoading }] = useCreatePaymentSetupMutation(); // const [updatePaymentSetup, { isLoading }] = useCreatePaymentSetupMutation();
const formik = useFormik({ const formik = useFormik({
initialValues: { initialValues: {
idem_payment_uri: 'https://gateway.idem-club.info/idem/', idem_payment_uri: 'https://gateway.idem-club.info/idem/',
...@@ -30,7 +28,7 @@ export default function PaymentSetup() { ...@@ -30,7 +28,7 @@ export default function PaymentSetup() {
.matches(/^\d+$/, 'Merchant ID must be numeric'), .matches(/^\d+$/, 'Merchant ID must be numeric'),
}), }),
onSubmit: (values) => { onSubmit: (values) => {
// console.log('Submitting IDEM Payment Setup:', values); console.log('Submitting IDEM Payment Setup:', values);
try { try {
......
"use client" "use client"
import TransactionTable from '@/components/pages/dashboard/adminDashboard/transaction/TransactionTable'; import { useAppSelector } from '@/hooks/hook';
import { useAppSelector } from '@/hooks/hook' import React from 'react';
import React from 'react'
import AdminDashboardRoot from '../../(admin)/AdminDashboard'; import AdminDashboardRoot from '../../(admin)/AdminDashboard';
export default function DashboardProvider({ children }: { children: React.ReactNode }) { export default function DashboardProvider({ children }: { children: React.ReactNode }) {
......
// components/Loading.tsx // components/Loading.tsx
"use client"; "use client";
import React from "react";
import GlobalLoading from "@/components/organism/GlobalLoading"; import GlobalLoading from "@/components/organism/GlobalLoading";
export default function Loading() { export default function Loading() {
......
import BuyCoinSinlgeGame from '@/components/pages/dashboard/userDashboard/buyCoins/buyCoinSinlgeGame' import BuyCoinSinlgeGame from '@/components/pages/dashboard/userDashboard/buyCoins/buyCoinSinlgeGame';
import React from 'react'
export default async function SingleGameCoinPacks(props: { params: Promise<{ slug: string }> }) { export default async function SingleGameCoinPacks(props: { params: Promise<{ slug: string }> }) {
const { slug } = await props.params; const { slug } = await props.params;
......
// components/Loading.tsx // components/Loading.tsx
"use client"; "use client";
import React from "react";
import LotifyLoading from "@/components/atom/LotifyLoading";
import GlobalLoading from "@/components/organism/GlobalLoading"; import GlobalLoading from "@/components/organism/GlobalLoading";
export default function Loading() { export default function Loading() {
......
...@@ -21,7 +21,7 @@ export default async function GeneralPage(props: { params: Promise<{ slug: strin ...@@ -21,7 +21,7 @@ export default async function GeneralPage(props: { params: Promise<{ slug: strin
try { try {
pageData = await getPageDetail(slug); pageData = await getPageDetail(slug);
} catch (err) { } catch (err) {
// console.log("❌ Failed to fetch games:", err); console.log("❌ Failed to fetch games:", err);
return notFound(); return notFound();
} }
......
// components/Loading.tsx // components/Loading.tsx
import GlobalLoading from '@/components/organism/GlobalLoading'; import GlobalLoading from '@/components/organism/GlobalLoading';
import React from 'react';
export default function Loading() { export default function Loading() {
return ( return (
......
// components/Loading.tsx // components/Loading.tsx
"use client"; "use client";
import React from "react";
import LotifyLoading from "@/components/atom/LotifyLoading";
import GlobalLoading from "@/components/organism/GlobalLoading"; import GlobalLoading from "@/components/organism/GlobalLoading";
export default function Loading() { export default function Loading() {
......
import GlassWrapper from "@/components/molecules/GlassWrapper"; import GlassWrapper from "@/components/molecules/GlassWrapper";
import { getSupportEmail } from "@/serverApi/game"; import { getSupportEmail } from "@/serverApi/game";
import React from "react";
export default async function Support() { export default async function Support() {
let supportEmails = { let supportEmails = {
......
import PageHeader from '@/components/molecules/PageHeader' import PageHeader from '@/components/molecules/PageHeader'
import VerifyKYCPage from '@/components/pages/dashboard/userDashboard/verifyKyc' import VerifyKYCPage from '@/components/pages/dashboard/userDashboard/verifyKyc'
import React from 'react'
export default function VerfiyKYC() { export default function VerfiyKYC() {
return ( return (
......
// components/Loading.tsx // components/Loading.tsx
"use client"; "use client";
import React from "react";
import LotifyLoading from "@/components/atom/LotifyLoading";
import GlobalLoading from "@/components/organism/GlobalLoading"; import GlobalLoading from "@/components/organism/GlobalLoading";
export default function Loading() { export default function Loading() {
......
import WithdrawlPage from '@/components/pages/dashboard/userDashboard/withdrawl' import WithdrawlPage from '@/components/pages/dashboard/userDashboard/withdrawl';
import { getAllGames, getUserGameBalance } from '@/serverApi/game'; import { getAllGames, getUserGameBalance } from '@/serverApi/game';
import React from 'react'
export default async function Withdrawl() { export default async function Withdrawl() {
const games = await getAllGames(); const games = await getAllGames();
......
import TabController from '@/components/molecules/TabController';
import EditIcon from '@/icons/EditIcon';
import { Coin, User } from '@wandersonalwes/iconsax-react';
import React from 'react'
export default function AccountLayout({ children }: { children: React.ReactNode; }) { export default function AccountLayout({ children }: { children: React.ReactNode; }) {
return ( return (
<section className="account__root"> <section className="account__root">
......
"use client"; "use client";
import React from "react";
import AccountTab from "./AccountTab";
import TabController from "@/components/molecules/TabController"; import TabController from "@/components/molecules/TabController";
import { Tab } from "@mui/material"; import Filter from "@/components/organism/Filter";
import WithdrawnHistoryPage from "@/components/pages/dashboard/userDashboard/withdrawlHistory";
import DepositHistoryPage from "@/components/pages/dashboard/userDashboard/depositHistory"; import DepositHistoryPage from "@/components/pages/dashboard/userDashboard/depositHistory";
import { useSearchParams } from "next/navigation"; import WithdrawnHistoryPage from "@/components/pages/dashboard/userDashboard/withdrawlHistory";
import { Coin, Coin1, User } from "@wandersonalwes/iconsax-react"; import { Coin, Coin1, User } from "@wandersonalwes/iconsax-react";
import SelectField from "@/components/atom/SelectField"; import { useSearchParams } from "next/navigation";
import Filter from "@/components/organism/Filter"; import React from "react";
import AccountTab from "./AccountTab";
type AccountTabProps = "account" | "deposit" | "withdraw" type AccountTabProps = "account" | "deposit" | "withdraw"
......
import DashboardLayout from '@/components/layouts/DashboardLayout' import DashboardLayout from '@/components/layouts/DashboardLayout'
import Private from '@/routes/Private'
import ServerPrivate from '@/routes/ServerPrivate' import ServerPrivate from '@/routes/ServerPrivate'
import React from 'react' import React from 'react'
......
import React from 'react' import Link from "next/link";
export default function NotFound() { export default function NotFound() {
return ( return (
...@@ -10,7 +10,7 @@ export default function NotFound() { ...@@ -10,7 +10,7 @@ export default function NotFound() {
<p>Oops! The page you're looking for doesn’t exist or has been moved.</p> <p>Oops! The page you're looking for doesn’t exist or has been moved.</p>
<p>🔍 Try checking the URL or head back to the <p>🔍 Try checking the URL or head back to the
<a href="/" className="text-secondary hover:underline ml-1">homepage</a>. <Link href="/" className="text-secondary hover:underline ml-1">homepage</Link>.
</p> </p>
<p> <p>
......
import { styled, Theme } from '@mui/material/styles';
import MuiAvatar, { AvatarProps as MuiAvatarProps } from '@mui/material/Avatar'; import MuiAvatar, { AvatarProps as MuiAvatarProps } from '@mui/material/Avatar';
import React from 'react'; import { styled, Theme } from '@mui/material/styles';
interface Props extends MuiAvatarProps { interface Props extends MuiAvatarProps {
color?: 'primary' | 'secondary' | string; color?: 'primary' | 'secondary' | string;
...@@ -10,7 +9,7 @@ interface Props extends MuiAvatarProps { ...@@ -10,7 +9,7 @@ interface Props extends MuiAvatarProps {
const AvatarStyle = styled(MuiAvatar, { const AvatarStyle = styled(MuiAvatar, {
shouldForwardProp: (prop) => !['color', 'type', 'size'].includes(prop as string), shouldForwardProp: (prop) => !['color', 'type', 'size'].includes(prop as string),
})<Props>(({ theme, type }: { theme: Theme } & Props) => ({ })<Props>(({ theme, type }: { theme: Theme } & Props) => ({
width: 40, width: 40,
height: 40, height: 40,
borderRadius: 8, borderRadius: 8,
......
...@@ -49,8 +49,8 @@ export default function InputFile({ ...@@ -49,8 +49,8 @@ export default function InputFile({
onChange(updatedFiles.length > 0 ? updatedFiles : null); onChange(updatedFiles.length > 0 ? updatedFiles : null);
}; };
const fileChosen = // const fileChosen =
(Array.isArray(value) && value.length > 0) || value || serverFile; // (Array.isArray(value) && value.length > 0) || value || serverFile;
return ( return (
<div className="input__field"> <div className="input__field">
......
"use client"; "use client";
import React from 'react'
import { DotLottieReact } from '@lottiefiles/dotlottie-react'; import { DotLottieReact } from '@lottiefiles/dotlottie-react';
export default function LotifyLoading() { export default function LotifyLoading() {
......
"use client"; "use client";
import { useThemeContext } from "@/context/ThemeContext";
import { InputLabel } from "@mui/material"; import { InputLabel } from "@mui/material";
import React from "react"; import React from "react";
...@@ -35,7 +34,7 @@ export default function SelectField({ ...@@ -35,7 +34,7 @@ export default function SelectField({
touched, touched,
placeholder placeholder
}: SelectFieldProps) { }: SelectFieldProps) {
const theme = useThemeContext(); // const theme = useThemeContext();
return ( return (
<div className="input__field"> <div className="input__field">
<InputLabel className="block text-sm font-semibold mb-2"> <InputLabel className="block text-sm font-semibold mb-2">
......
import { ArrowUp, ArrowDown } from '@wandersonalwes/iconsax-react'; import { ArrowDown, ArrowUp } from '@wandersonalwes/iconsax-react';
export default function SortableHeader({ column, label }: { column: any; label: string }) { export default function SortableHeader({ column, label }: { column: any; label: string }) {
const sortState = column.getIsSorted(); // asc | desc | false const sortState = column.getIsSorted(); // asc | desc | false
......
import { Switch } from '@mui/material' import { Switch } from '@mui/material';
import React from 'react'
export default function CustomSwitch({ isSuspended, onClick }: { isSuspended?: boolean; onClick?: () => void }) { export default function CustomSwitch({ isSuspended, onClick }: { isSuspended?: boolean; onClick?: () => void }) {
return ( return (
......
"use client"; "use client";
import { Box } from '@mui/material' import { Box } from '@mui/material';
import React from 'react'
import Sidebar from '../organism/Sidebar'
import Header from '../organism/Header'
import { styled } from '@mui/material/styles'; import { styled } from '@mui/material/styles';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
import Breadcrumb from '../molecules/Breadcrumb'; import React from 'react';
import Header from '../organism/Header';
import Sidebar from '../organism/Sidebar';
export default function DashboardLayout({ children }: { children: React.ReactNode }) { export default function DashboardLayout({ children }: { children: React.ReactNode }) {
const [open, setOpen] = React.useState(true); const [open, setOpen] = React.useState(true);
...@@ -26,9 +25,9 @@ export default function DashboardLayout({ children }: { children: React.ReactNod ...@@ -26,9 +25,9 @@ export default function DashboardLayout({ children }: { children: React.ReactNod
const handleMobileMenuToggle = () => { const handleMobileMenuToggle = () => {
setOpenMobile((prev) => !prev); setOpenMobile((prev) => !prev);
} }
const handleDrawerClose = () => { // const handleDrawerClose = () => {
setOpen(false); // setOpen(false);
}; // };
const DrawerHeader = styled('div')(({ theme }) => ({ const DrawerHeader = styled('div')(({ theme }) => ({
display: 'flex', display: 'flex',
alignItems: 'center', alignItems: 'center',
......
import MoreIcon from '@/app/customIcons/MoreIcon'; import MoreIcon from '@/app/customIcons/MoreIcon';
import { Box, Button, ClickAwayListener, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material' import { Box, Button, ClickAwayListener, Dialog, DialogActions, DialogContent, DialogTitle, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material';
import { More } from '@wandersonalwes/iconsax-react'
import Link from 'next/link'; import Link from 'next/link';
import React, { useRef, useState } from 'react' import { useRef, useState } from 'react';
export default function ActionGroup({ export default function ActionGroup({
onView, onEdit, onDelete onView, onEdit, onDelete
......
import { Box, Button, ClickAwayListener, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material' import { Box, Button, ClickAwayListener, Dialog, DialogActions, DialogContent, DialogTitle, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material';
import { More } from '@wandersonalwes/iconsax-react' import { More } from '@wandersonalwes/iconsax-react';
import Link from 'next/link'; import Link from 'next/link';
import React, { useRef, useState } from 'react' import { useRef, useState } from 'react';
export default function AnalyticsAction({ export default function AnalyticsAction({
onView, onEdit, onDelete onView, onEdit, onDelete
......
'use client'; 'use client';
import React from 'react'; import { Stack } from '@mui/material';
import { ArrowRight2 } from '@wandersonalwes/iconsax-react';
import Link from 'next/link'; import Link from 'next/link';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
import { Box, Typography, Stack } from '@mui/material'; import React from 'react';
import { ArrowRight2 } from '@wandersonalwes/iconsax-react';
export default function Breadcrumb() { export default function Breadcrumb() {
const pathname = usePathname(); const pathname = usePathname();
......
"use client"; "use client";
import React, { useState, useEffect, useRef } from "react";
import { motion } from "framer-motion"; import { motion } from "framer-motion";
import { useEffect, useRef, useState } from "react";
interface ScreenShotSliderProps { interface ScreenShotSliderProps {
screenshots: string[]; screenshots: string[];
......
"use client"; "use client";
import React, { useRef, useState } from "react";
import { import {
Box, Box,
Button, Button,
Popper,
Paper,
ClickAwayListener, ClickAwayListener,
Fade,
List, List,
ListItem, ListItem,
Fade,
Typography,
ListItemButton, ListItemButton,
Paper,
Popper,
Typography,
} from "@mui/material"; } from "@mui/material";
import { ArrowDown2, Menu } from "@wandersonalwes/iconsax-react"; import { ArrowDown2 } from "@wandersonalwes/iconsax-react";
import React, { useRef, useState } from "react";
type TabLink = { label: string; value: string, icon?: React.ReactNode }; type TabLink = { label: string; value: string, icon?: React.ReactNode };
......
import { Button, Dialog, DialogContent, IconButton, InputAdornment, OutlinedInput, useMediaQuery } from "@mui/material"; import { Button, Dialog, DialogContent, IconButton, InputAdornment, OutlinedInput, useMediaQuery } from "@mui/material";
import SelectField from "../atom/SelectField";
import { ArrowDown, DocumentDownload, SearchNormal } from "@wandersonalwes/iconsax-react"; import { ArrowDown, DocumentDownload, SearchNormal } from "@wandersonalwes/iconsax-react";
import React from "react";
import Filter from "../organism/Filter";
import dayjs, { Dayjs } from "dayjs"; import dayjs, { Dayjs } from "dayjs";
import React from "react";
import SelectField from "../atom/SelectField";
import DateRangePicker from "./DateRangePicker"; import DateRangePicker from "./DateRangePicker";
......
...@@ -17,7 +17,6 @@ export interface TransitionsProps extends React.HTMLAttributes<HTMLDivElement> { ...@@ -17,7 +17,6 @@ export interface TransitionsProps extends React.HTMLAttributes<HTMLDivElement> {
export const Transitions = React.forwardRef<HTMLDivElement, TransitionsProps>(({ export const Transitions = React.forwardRef<HTMLDivElement, TransitionsProps>(({
children, children,
type = 'grow',
position = 'top', position = 'top',
in: inProp = false, in: inProp = false,
...other ...other
......
// "use client"; // "use client";
import { Box, FormControl, IconButton, InputAdornment, OutlinedInput } from "@mui/material"; import { Box, FormControl, InputAdornment, OutlinedInput } from "@mui/material";
import { SearchNormal, SearchNormal1 } from "@wandersonalwes/iconsax-react"; import { SearchNormal1 } from "@wandersonalwes/iconsax-react";
import React from 'react'
export default function AdminSearchBar() { export default function AdminSearchBar() {
......
...@@ -14,8 +14,8 @@ export default function AdminHeader() { ...@@ -14,8 +14,8 @@ export default function AdminHeader() {
// React.useEffect(() => { // React.useEffect(() => {
// setMounted(true); // setMounted(true);
// }, []); // }, []);
const [pageIndex, setPageIndex] = React.useState(1); const [pageIndex, _setPageIndex] = React.useState(1);
const [pageSize, setPageSize] = React.useState(10); const [pageSize, _setPageSize] = React.useState(10);
const { data } = useGetAllNotificationQuery({ pageIndex, pageSize }); const { data } = useGetAllNotificationQuery({ pageIndex, pageSize });
return ( return (
<Box className='flex items-center gap-4 justify-end w-full'> <Box className='flex items-center gap-4 justify-end w-full'>
......
import { PATH } from '@/routes/PATH'; import { PATH } from '@/routes/PATH';
import { Box, ClickAwayListener, Fade, IconButton, List, ListItem, ListItemText, Paper, Popper, Typography } from '@mui/material' import { Box, ClickAwayListener, Fade, IconButton, List, ListItem, ListItemText, Paper, Popper } from '@mui/material';
import { Add } from '@wandersonalwes/iconsax-react' import { Add } from '@wandersonalwes/iconsax-react';
import Link from 'next/link'; import Link from 'next/link';
import React from 'react' import React from 'react';
export default function CreatNewRecord() { export default function CreatNewRecord() {
const [open, setOpen] = React.useState(false); const [open, setOpen] = React.useState(false);
......
"use client"; "use client";
import React, { useRef, useState } from 'react'; import { useAppDispatch } from '@/hooks/hook';
import { useReadAllNotificationMutation, useReadNotificationMutation } from '@/services/notificationApi';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { Pagination } from '@/types/game';
import { NotificationProps } from '@/types/notification';
import { formatDateTime } from '@/utils/formatDateTime';
import { import {
Badge, Badge,
Box, Box,
IconButton,
Popper,
Paper,
ClickAwayListener, ClickAwayListener,
Typography, IconButton,
List, List,
ListItem, ListItem,
Paper,
Popper,
Typography,
} from '@mui/material'; } from '@mui/material';
import Fade from '@mui/material/Fade'; // ✅ Import Fade import Fade from '@mui/material/Fade'; // ✅ Import Fade
import { Notification } from '@wandersonalwes/iconsax-react'; import { Notification } from '@wandersonalwes/iconsax-react';
import Link from 'next/link'; import Link from 'next/link';
import { NotificationProps } from '@/types/notification'; import { useRef, useState } from 'react';
import { Pagination } from '@/types/game';
import { useReadAllNotificationMutation, useReadNotificationMutation } from '@/services/notificationApi';
import { useAppDispatch } from '@/hooks/hook';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { formatDateTime } from '@/utils/formatDateTime';
export default function NotificationPage({ export default function NotificationPage({
...@@ -43,12 +43,12 @@ export default function NotificationPage({ ...@@ -43,12 +43,12 @@ export default function NotificationPage({
const id = open ? 'popper' : undefined; const id = open ? 'popper' : undefined;
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const [readNotification, { isLoading }] = useReadNotificationMutation(); const [readNotification,] = useReadNotificationMutation();
const [readAllNotification, { isLoading: readingAll }] = useReadAllNotificationMutation(); const [readAllNotification,] = useReadAllNotificationMutation();
const handleNotificationClick = async (id?: string) => { const handleNotificationClick = async (id?: string) => {
if (id) { if (id) {
try { try {
const response = await readNotification({ id }).unwrap(); await readNotification({ id }).unwrap();
// dispatch( // dispatch(
// showToast({ // showToast({
// message: "Notification read successfully", // message: "Notification read successfully",
...@@ -67,7 +67,7 @@ export default function NotificationPage({ ...@@ -67,7 +67,7 @@ export default function NotificationPage({
} }
else { else {
try { try {
const response = await readAllNotification().unwrap(); await readAllNotification().unwrap();
setOpen(false); setOpen(false);
} }
catch (e: any) { catch (e: any) {
...@@ -130,7 +130,7 @@ export default function NotificationPage({ ...@@ -130,7 +130,7 @@ export default function NotificationPage({
<List className='max-h-[320px] overflow-auto px-1'> <List className='max-h-[320px] overflow-auto px-1'>
{ {
notifications.map((notification, index) => { notifications.map((notification, index) => {
const { date, time } = formatDateTime(notification.created_at); const { date } = formatDateTime(notification.created_at);
return ( return (
<ListItem className={`border-b-solid border-b-gray-100 border-b-[1px] rounded-sm !p-2 cursor-pointer mb-2 ${notification.has_read ? "" : "bg-gray-100"} ${index > 0 ? " " : ""}`} key={notification.id} onClick={() => handleNotificationClick(notification.id)}> <ListItem className={`border-b-solid border-b-gray-100 border-b-[1px] rounded-sm !p-2 cursor-pointer mb-2 ${notification.has_read ? "" : "bg-gray-100"} ${index > 0 ? " " : ""}`} key={notification.id} onClick={() => handleNotificationClick(notification.id)}>
<p className='text-[12px] lg:text-[12px] leading-[120%] text-title line-clamp-2'>{notification.message}</p> <p className='text-[12px] lg:text-[12px] leading-[120%] text-title line-clamp-2'>{notification.message}</p>
......
import Avatar from '@/components/atom/Avatar'; import Avatar from '@/components/atom/Avatar';
import { Transitions } from '@/components/molecules/Transition';
import { useAppDispatch, useAppSelector } from '@/hooks/hook'; import { useAppDispatch, useAppSelector } from '@/hooks/hook';
import { PATH } from '@/routes/PATH'; import { PATH } from '@/routes/PATH';
import { clearTokens } from '@/slice/authSlice'; import { clearTokens } from '@/slice/authSlice';
import { Box, Button, ButtonBase, ClickAwayListener, Fade, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Paper, Popper, Stack, Typography } from '@mui/material' import { Box, ClickAwayListener, Fade, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Paper, Popper } from '@mui/material';
import { ArrowDown2, Coin, Logout, MoneySend, Profile, Wallet2 } from "@wandersonalwes/iconsax-react";
import Link from 'next/link'; import Link from 'next/link';
import { usePathname, useRouter, useSearchParams } from 'next/navigation'; import { usePathname, useRouter, useSearchParams } from 'next/navigation';
import React, { useRef, useState } from 'react' import React, { useRef, useState } from 'react';
const avataur1 = '/assets/images/avatar-6.png'; const avataur1 = '/assets/images/avatar-6.png';
import { ArrowDown2, ArrowUp2, Coin, Logout, MoneySend, Profile, Wallet2 } from "@wandersonalwes/iconsax-react";
export default function ProfileBlock() { export default function ProfileBlock() {
......
import { PATH } from '@/routes/PATH'
import { CheckAuth } from '@/utils/checkAuth'
import { Box } from '@mui/material' import { Box } from '@mui/material'
import React from 'react' import Link from 'next/link'
import Profile from '../Profile' import Profile from '../Profile'
import AdminSearchBar from '../AdminHeader/AdminSearchBar'
import CoinCard from '@/components/molecules/CoinCard'
import GoldCoinIcon from '@/icons/GoldCoinIcon'
import SilverCoinIcon from '@/icons/SilverCoinIcon'
import UserCoinCard from './UserCoinCard' import UserCoinCard from './UserCoinCard'
import Private from '@/routes/Private'
import { CheckAuth } from '@/utils/checkAuth'
import Link from 'next/link'
import { PATH } from '@/routes/PATH'
export default function UserHeader() { export default function UserHeader() {
const isAuth = CheckAuth(); const isAuth = CheckAuth();
......
"use client"; "use client";
import { DRAWER_WIDTH } from '@/config'; import { DRAWER_WIDTH } from '@/config';
import Toolbar from '@mui/material/Toolbar'; import { useAppSelector } from '@/hooks/hook';
import IconButton from '@mui/material/IconButton'; import { useMediaQuery } from '@mui/material';
import MuiAppBar, { AppBarProps as MuiAppBarProps } from '@mui/material/AppBar'; import MuiAppBar, { AppBarProps as MuiAppBarProps } from '@mui/material/AppBar';
import IconButton from '@mui/material/IconButton';
import { styled } from '@mui/material/styles'; import { styled } from '@mui/material/styles';
import React from 'react' import Toolbar from '@mui/material/Toolbar';
import { HambergerMenu } from '@wandersonalwes/iconsax-react'; import { HambergerMenu } from '@wandersonalwes/iconsax-react';
import AdminHeader from './AdminHeader'; import AdminHeader from './AdminHeader';
import UserHeader from './UserHeader'; import UserHeader from './UserHeader';
import { OutlinedInput, useMediaQuery } from '@mui/material';
import { useAppSelector } from '@/hooks/hook';
interface AppBarProps extends MuiAppBarProps { interface AppBarProps extends MuiAppBarProps {
......
"use client"; "use client";
import Image from "next/image";
import LightGallery from "lightgallery/react";
import lgZoom from "lightgallery/plugins/zoom";
import lgThumbnail from "lightgallery/plugins/thumbnail"; import lgThumbnail from "lightgallery/plugins/thumbnail";
import lgZoom from "lightgallery/plugins/zoom";
import LightGallery from "lightgallery/react";
import Image from "next/image";
import "lightgallery/css/lightgallery.css";
import "lightgallery/css/lg-zoom.css";
import "lightgallery/css/lg-thumbnail.css"; import "lightgallery/css/lg-thumbnail.css";
import { FileResponse } from "@/types/game"; import "lightgallery/css/lg-zoom.css";
import "lightgallery/css/lightgallery.css";
interface CustomLightGalleryProps { interface CustomLightGalleryProps {
images: string[]; images: string[];
......
"use client"; "use client";
import { PATH } from "@/routes/PATH"; import { PATH } from "@/routes/PATH";
import Link from "next/link";
import { import {
List, List,
ListItem, ListItem,
...@@ -20,6 +19,7 @@ import { ...@@ -20,6 +19,7 @@ import {
StatusUp, StatusUp,
UserSearch, UserSearch,
} from "@wandersonalwes/iconsax-react"; } from "@wandersonalwes/iconsax-react";
import Link from "next/link";
import { usePathname } from "next/navigation"; import { usePathname } from "next/navigation";
import React from "react"; import React from "react";
......
import React from "react"; import SupportIcon from "@/app/customIcons/SupportIcon";
import { List, ListItem, ListItemButton, ListItemIcon, ListItemText } from "@mui/material";
import { ReceiptEdit } from "@wandersonalwes/iconsax-react";
import { PATH } from "@/routes/PATH";
import { getAllMenus } from "@/serverApi/menu";
import { useGetAllUserMenuQuery } from "@/services/menuApi"; import { useGetAllUserMenuQuery } from "@/services/menuApi";
import { List, ListItem, ListItemIcon, ListItemText } from "@mui/material";
import { ReceiptEdit } from "@wandersonalwes/iconsax-react";
import Link from "next/link"; import Link from "next/link";
import { usePathname } from "next/navigation"; import { usePathname } from "next/navigation";
import SupportIcon from "@/app/customIcons/SupportIcon"; import React from "react";
export default function PrimaryMenu({ open }: { open: boolean }) { export default function PrimaryMenu({ open }: { open: boolean }) {
const { data, isLoading } = useGetAllUserMenuQuery(); const { data, isLoading } = useGetAllUserMenuQuery();
......
"use client"; "use client";
import React from "react"; import BonusIcon from "@/app/customIcons/BonusIcon";
import FireIcon from "@/app/customIcons/FireIcon";
import HomeIcon from "@/app/customIcons/HomeIcon";
import { PATH } from "@/routes/PATH";
import Private from "@/routes/Private";
import { import {
Box, Box,
List, List,
...@@ -9,23 +13,13 @@ import { ...@@ -9,23 +13,13 @@ import {
ListItemText, ListItemText,
} from "@mui/material"; } from "@mui/material";
import { import {
Home,
StatusUp,
MessageQuestion,
PasswordCheck,
Wallet2,
Coin,
CardPos, CardPos,
Coin
} from "@wandersonalwes/iconsax-react"; } from "@wandersonalwes/iconsax-react";
import Link from "next/link"; import Link from "next/link";
import { usePathname } from "next/navigation"; import { usePathname } from "next/navigation";
import Private from "@/routes/Private"; import React from "react";
import { PATH } from "@/routes/PATH";
import PrimaryMenu from "./PrimaryMenu"; import PrimaryMenu from "./PrimaryMenu";
import SupportIcon from "@/app/customIcons/SupportIcon";
import HomeIcon from "@/app/customIcons/HomeIcon";
import FireIcon from "@/app/customIcons/FireIcon";
import BonusIcon from "@/app/customIcons/BonusIcon";
// ✅ Define menu array for static items // ✅ Define menu array for static items
const staticMenus = [ const staticMenus = [
......
"use client"; "use client";
import * as React from 'react'; import { DRAWER_WIDTH } from '@/config';
import { styled, Theme, CSSObject } from '@mui/material/styles'; import { useAppSelector } from '@/hooks/hook';
import { useGetSeoDataQuery } from '@/services/menuApi';
import { IconButton } from '@mui/material';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import MuiDrawer from '@mui/material/Drawer'; import MuiDrawer from '@mui/material/Drawer';
import { DRAWER_WIDTH } from '@/config'; import { CSSObject, styled, Theme } from '@mui/material/styles';
import useMediaQuery from '@mui/material/useMediaQuery';
import { Add } from '@wandersonalwes/iconsax-react';
import Image from 'next/image'; import Image from 'next/image';
import Link from 'next/link';
import * as React from 'react';
import AdminMenu from './AdminSidebar'; import AdminMenu from './AdminSidebar';
import UserMenu from './UserSidebar'; import UserMenu from './UserSidebar';
import { useAppSelector } from '@/hooks/hook';
import useMediaQuery from '@mui/material/useMediaQuery';
import { useThemeContext } from '@/context/ThemeContext';
import { IconButton } from '@mui/material';
import { Add, CloseCircle } from '@wandersonalwes/iconsax-react';
import Link from 'next/link';
import { usePathname } from 'next/navigation';
import { useGetSeoDataQuery } from '@/services/menuApi';
const drawerWidth = DRAWER_WIDTH; const drawerWidth = DRAWER_WIDTH;
const openedMixin = (theme: Theme): CSSObject => ({ const openedMixin = (theme: Theme): CSSObject => ({
...@@ -82,7 +80,7 @@ const Drawer = styled(MuiDrawer, { shouldForwardProp: (prop) => prop !== 'open' ...@@ -82,7 +80,7 @@ const Drawer = styled(MuiDrawer, { shouldForwardProp: (prop) => prop !== 'open'
}), }),
); );
export default function Sidebar({ open, handleDrawerOpen, handleMobileMenuToggle, mobileMenuOpen }: { export default function Sidebar({ open, handleMobileMenuToggle, mobileMenuOpen }: {
open: boolean, open: boolean,
handleDrawerOpen: () => void; handleDrawerOpen: () => void;
handleMobileMenuToggle: () => void; handleMobileMenuToggle: () => void;
......
...@@ -12,7 +12,7 @@ import * as Yup from "yup"; ...@@ -12,7 +12,7 @@ import * as Yup from "yup";
export default function UpdatePassword() { export default function UpdatePassword() {
const dispatch = useDispatch(); const dispatch = useDispatch();
const { open, provider, hasChangedPassword } = useSelector((state: RootState) => state?.updatePasswordSlice); const { open, provider } = useSelector((state: RootState) => state?.updatePasswordSlice);
const [updateNewPassword, { isLoading }] = useUpdateUserGamePasswordMutation(); const [updateNewPassword, { isLoading }] = useUpdateUserGamePasswordMutation();
console.log({ console.log({
......
import { ImageProps } from '@/types/config' import { ImageProps } from '@/types/config';
import { List, ListItem } from '@mui/material' import Box from '@mui/material/Box';
import Box from '@mui/material/Box' import Image from 'next/image';
import Image from 'next/image'
interface Props { interface Props {
image?: ImageProps image?: ImageProps
...@@ -11,7 +10,7 @@ interface Props { ...@@ -11,7 +10,7 @@ interface Props {
export default function AuthMessageBlock(props: Props) { export default function AuthMessageBlock(props: Props) {
const { image, title, features } = props; const { title, features } = props;
return ( return (
<Box className="auth-image-wrapper relative hidden lg:block w-[50%] min-h-screen pl-9 pr-15 pb-15 rounded-[8px] overflow-hidden" > <Box className="auth-image-wrapper relative hidden lg:block w-[50%] min-h-screen pl-9 pr-15 pb-15 rounded-[8px] overflow-hidden" >
<Image src={"/assets/images/auth-image.png"} alt="Auth Image" fill className="object-cover max-w-[100%] h-auto" /> <Image src={"/assets/images/auth-image.png"} alt="Auth Image" fill className="object-cover max-w-[100%] h-auto" />
......
'use client'; 'use client';
import Cookies from 'js-cookie'; import { useSeon } from '@/app/SeonProvider';
import React from 'react' import PasswordField from '@/components/molecules/PasswordField';
import AuthMessageBlock from '../authMessageBlock'
import { Box, InputLabel, OutlinedInput } from '@mui/material'
import { useFormik } from 'formik';
import Link from 'next/link';
import * as Yup from 'yup';
import { PATH } from '@/routes/PATH';
import { useRouter } from 'next/navigation';
import { useAppDispatch } from '@/hooks/hook'; import { useAppDispatch } from '@/hooks/hook';
import { PATH } from '@/routes/PATH';
import { useLoginMutation } from '@/services/authApi'; import { useLoginMutation } from '@/services/authApi';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { clearTokens, setTokens } from '@/slice/authSlice'; import { clearTokens, setTokens } from '@/slice/authSlice';
import PasswordField from '@/components/molecules/PasswordField'; import { showToast, ToastVariant } from '@/slice/toastSlice';
import { Box, InputLabel, OutlinedInput } from '@mui/material';
import { ArrowLeft } from '@wandersonalwes/iconsax-react'; import { ArrowLeft } from '@wandersonalwes/iconsax-react';
import { useSeon } from '@/app/SeonProvider'; import { useFormik } from 'formik';
import Cookies from 'js-cookie';
import Link from 'next/link';
import { useRouter } from 'next/navigation';
import * as Yup from 'yup';
import AuthMessageBlock from '../authMessageBlock';
const validationSchema = Yup.object().shape({ const validationSchema = Yup.object().shape({
emailAddress: Yup.string() emailAddress: Yup.string()
...@@ -39,7 +38,7 @@ export default function LoginPage() { ...@@ -39,7 +38,7 @@ export default function LoginPage() {
const router = useRouter(); const router = useRouter();
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const [loginUser, { isLoading }] = useLoginMutation(); const [loginUser, { isLoading }] = useLoginMutation();
const { deviceId, loading } = useSeon(); const { deviceId } = useSeon();
const { handleSubmit, handleBlur, handleChange, errors, dirty, values, touched } = useFormik( const { handleSubmit, handleBlur, handleChange, errors, dirty, values, touched } = useFormik(
{ {
initialValues, initialValues,
......
...@@ -118,7 +118,7 @@ export default function RegisterPage() { ...@@ -118,7 +118,7 @@ export default function RegisterPage() {
pob: '', pob: '',
agree: true agree: true
} }
const { deviceId, loading } = useSeon(); const { deviceId } = useSeon();
const { handleSubmit, handleBlur, handleChange, errors, dirty, values, touched, setFieldValue, setFieldTouched } = useFormik( const { handleSubmit, handleBlur, handleChange, errors, dirty, values, touched, setFieldValue, setFieldTouched } = useFormik(
{ {
initialValues, initialValues,
......
...@@ -4,13 +4,11 @@ import { PATH } from '@/routes/PATH' ...@@ -4,13 +4,11 @@ import { PATH } from '@/routes/PATH'
import { useResetPasswordMutation } from '@/services/authApi' import { useResetPasswordMutation } from '@/services/authApi'
import { clearTokens } from '@/slice/authSlice' import { clearTokens } from '@/slice/authSlice'
import { showToast, ToastVariant } from '@/slice/toastSlice' import { showToast, ToastVariant } from '@/slice/toastSlice'
import { Box, InputLabel, OutlinedInput } from '@mui/material' import { InputLabel, OutlinedInput } from '@mui/material'
import { ArrowLeft } from '@wandersonalwes/iconsax-react'
import { useFormik } from 'formik' import { useFormik } from 'formik'
import Link from 'next/link' import Link from 'next/link'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import React from 'react' import * as Yup from 'yup'
import * as Yup from 'yup';
const validationSchema = Yup.object().shape({ const validationSchema = Yup.object().shape({
emailAddress: Yup.string() emailAddress: Yup.string()
...@@ -130,5 +128,5 @@ export default function ResetPasswordForm({ email }: { email?: string }) { ...@@ -130,5 +128,5 @@ export default function ResetPasswordForm({ email }: { email?: string }) {
{!email ? <Link href={PATH.AUTH.LOGIN.ROOT} className='ss-btn bg-secondary-grad'>Back to Login</Link> : ""} {!email ? <Link href={PATH.AUTH.LOGIN.ROOT} className='ss-btn bg-secondary-grad'>Back to Login</Link> : ""}
</div> </div>
</form> </form>
) )
} }
import React from 'react'
import ActivityAnalyticCard from './ActivityAnalyticCard'
import Activities from './Activities'
import PageHeader from '@/components/molecules/PageHeader' import PageHeader from '@/components/molecules/PageHeader'
import Activities from './Activities'
export default function ActivityLogPage() { export default function ActivityLogPage() {
return ( return (
......
...@@ -8,7 +8,7 @@ import { useAddGameMutation, useGetGameByIdQuery, useUpdateGameByIdMutation } fr ...@@ -8,7 +8,7 @@ import { useAddGameMutation, useGetGameByIdQuery, useUpdateGameByIdMutation } fr
import { useGetAllProviderQuery } from "@/services/providerApi"; import { useGetAllProviderQuery } from "@/services/providerApi";
import { showToast, ToastVariant } from "@/slice/toastSlice"; import { showToast, ToastVariant } from "@/slice/toastSlice";
import { gameInitialValues, GameProps } from "@/types/game"; import { gameInitialValues, GameProps } from "@/types/game";
import { Button, InputLabel, Input, OutlinedInput } from "@mui/material"; import { Button, InputLabel, OutlinedInput } from "@mui/material";
import { useFormik } from "formik"; import { useFormik } from "formik";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import React from "react"; import React from "react";
...@@ -32,7 +32,7 @@ export default function AddGameForm({ id }: AddGameFormProps) { ...@@ -32,7 +32,7 @@ export default function AddGameForm({ id }: AddGameFormProps) {
const router = useRouter(); const router = useRouter();
const { data: gameProviders, isLoading } = useGetAllProviderQuery(); const { data: gameProviders, isLoading } = useGetAllProviderQuery();
const [addGame, { isLoading: addingGame }] = useAddGameMutation(); const [addGame, { isLoading: addingGame }] = useAddGameMutation();
const { data, isLoading: loadingGameData } = useGetGameByIdQuery({ id: Number(id) }, { skip: !id }) const { data } = useGetGameByIdQuery({ id: Number(id) }, { skip: !id })
const [updateGame, { isLoading: editing }] = useUpdateGameByIdMutation(); const [updateGame, { isLoading: editing }] = useUpdateGameByIdMutation();
const [serverFiles, setServerFiles] = React.useState<{ const [serverFiles, setServerFiles] = React.useState<{
......
...@@ -14,7 +14,7 @@ export default function GameDetailPage() { ...@@ -14,7 +14,7 @@ export default function GameDetailPage() {
const params = useParams(); const params = useParams();
const id = params.slug; const id = params.slug;
const [search, setSearch] = React.useState(""); const [search, setSearch] = React.useState("");
const { data, isLoading } = useGetGameByIdQuery({ id: Number(id) }) const { data } = useGetGameByIdQuery({ id: Number(id) })
const screenshots = data?.data?.screenshots || []; const screenshots = data?.data?.screenshots || [];
......
...@@ -2,12 +2,11 @@ ...@@ -2,12 +2,11 @@
import ActionGroup from '@/components/molecules/Action'; import ActionGroup from '@/components/molecules/Action';
import { useAppDispatch } from '@/hooks/hook'; import { useAppDispatch } from '@/hooks/hook';
import { useDeleteGameByIdMutation, useGetAllGamesQuery } from '@/services/gameApi' import { useDeleteGameByIdMutation, useGetAllGamesQuery } from '@/services/gameApi';
import { showToast, ToastVariant } from '@/slice/toastSlice'; import { showToast, ToastVariant } from '@/slice/toastSlice';
import { GameItem } from '@/types/game'; import { GameItem } from '@/types/game';
import Image from 'next/image'; import Image from 'next/image';
import Link from 'next/link'; import Link from 'next/link';
import React from 'react'
function GameSkeleton() { function GameSkeleton() {
return ( return (
...@@ -41,7 +40,7 @@ function GameSkeleton() { ...@@ -41,7 +40,7 @@ function GameSkeleton() {
} }
export default function AdminGameList() { export default function AdminGameList() {
const { data, isLoading } = useGetAllGamesQuery(); const { data, isLoading } = useGetAllGamesQuery();
const [deleteGame, { isLoading: deleting }] = useDeleteGameByIdMutation(); const [deleteGame] = useDeleteGameByIdMutation();
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
return ( return (
<div className="admin__games grid md:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-6"> <div className="admin__games grid md:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-6">
...@@ -73,12 +72,12 @@ export default function AdminGameList() { ...@@ -73,12 +72,12 @@ export default function AdminGameList() {
) )
) )
} }
catch (e) { catch (e: any) {
dispatch( dispatch(
showToast( showToast(
{ {
variant: ToastVariant.ERROR, variant: ToastVariant.ERROR,
message: "Unable to Delete Game" message: e?.data?.message || "Unable to Delete Game"
} }
) )
) )
......
import PageHeader from '@/components/molecules/PageHeader' import PageHeader from '@/components/molecules/PageHeader'
import React from 'react'
import AddNotificationForm from './AddNotificationForm' import AddNotificationForm from './AddNotificationForm'
export default function NotificationFormRoot({ id }: { id?: string }) { export default function NotificationFormRoot() {
return ( return (
<> <>
<PageHeader <PageHeader
......
"use client"; "use client";
import React, { useEffect, useState } from "react"; import ReactQuillEditor from "@/components/molecules/ReactQuill";
import { useFormik } from "formik"; import { useAppDispatch } from "@/hooks/hook";
import * as Yup from "yup"; import { useCreatePageMutation, useGetSinlgePageByIdQuery, useUpdatePageByIdMutation } from "@/services/pageApi";
import { showToast, ToastVariant } from "@/slice/toastSlice";
import { pageInitialData } from "@/types/page"; // should match your type
import { import {
Button, Button,
InputLabel,
OutlinedInput,
FormHelperText, FormHelperText,
IconButton, IconButton,
InputLabel,
OutlinedInput,
} from "@mui/material"; } from "@mui/material";
import ReactQuillEditor from "@/components/molecules/ReactQuill";
import { pageInitialData } from "@/types/page"; // should match your type
import { CloseCircle } from "@wandersonalwes/iconsax-react"; import { CloseCircle } from "@wandersonalwes/iconsax-react";
import { useCreatePageMutation, useGetSinlgePageByIdQuery, useUpdatePageByIdMutation } from "@/services/pageApi"; import { useFormik } from "formik";
import { showToast, ToastVariant } from "@/slice/toastSlice";
import { useAppDispatch } from "@/hooks/hook";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import React, { useEffect, useState } from "react";
import * as Yup from "yup";
export default function AddPageForm({ id }: { id?: string }) { export default function AddPageForm({ id }: { id?: string }) {
const [createPage, { isLoading: creatingPage } const [createPage,
] = useCreatePageMutation(); ] = useCreatePageMutation();
const { data, isLoading } = useGetSinlgePageByIdQuery({ id }, { const { data } = useGetSinlgePageByIdQuery({ id }, {
skip: !id skip: !id
}) })
const [updatedPage, { isLoading: updating }] = useUpdatePageByIdMutation(); const [updatedPage] = useUpdatePageByIdMutation();
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const router = useRouter(); const router = useRouter();
......
...@@ -10,7 +10,7 @@ import { PageRequestProps } from '@/types/page'; ...@@ -10,7 +10,7 @@ import { PageRequestProps } from '@/types/page';
import { formatDateTime } from '@/utils/formatDateTime'; import { formatDateTime } from '@/utils/formatDateTime';
import { Checkbox, Pagination } from '@mui/material'; import { Checkbox, Pagination } from '@mui/material';
import { ColumnDef, getCoreRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table'; import { ColumnDef, getCoreRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table';
import React, { useMemo, useState } from 'react' import { useMemo, useState } from 'react';
export default function GeneralPageLiting() { export default function GeneralPageLiting() {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
...@@ -23,7 +23,7 @@ export default function GeneralPageLiting() { ...@@ -23,7 +23,7 @@ export default function GeneralPageLiting() {
pageSize: pageSize, pageSize: pageSize,
search: search || "" search: search || ""
}); });
const [deletePage, { isLoading: deleting }] = useDeletePageByIdMutation(); const [deletePage] = useDeletePageByIdMutation();
const filteredData = useMemo(() => data?.data?.data || [], [data]); const filteredData = useMemo(() => data?.data?.data || [], [data]);
...@@ -73,7 +73,7 @@ export default function GeneralPageLiting() { ...@@ -73,7 +73,7 @@ export default function GeneralPageLiting() {
accessorKey: 'registeredDate', accessorKey: 'registeredDate',
header: 'Registered Date', header: 'Registered Date',
cell: ({ row }) => { cell: ({ row }) => {
const { date, time } = formatDateTime(row.original.date) const { date } = formatDateTime(row.original.date)
return ( return (
<span className="text-[12px] font-[500] max-w-[380px]">{date}</span> <span className="text-[12px] font-[500] max-w-[380px]">{date}</span>
) )
......
...@@ -8,8 +8,8 @@ import { ColumnDef, getCoreRowModel, useReactTable } from '@tanstack/react-table ...@@ -8,8 +8,8 @@ import { ColumnDef, getCoreRowModel, useReactTable } from '@tanstack/react-table
import { useMemo, useState } from 'react'; import { useMemo, useState } from 'react';
export default function LatestRegisteredPlayer() { export default function LatestRegisteredPlayer() {
const [pageIndex, setPageIndex] = useState(1); const [pageIndex, _setPageIndex] = useState(1);
const [pageSize, setPageSize] = useState(6); const [pageSize, _setPageSize] = useState(6);
const { data, isLoading: loadingPlayer } = useGetAllPlayerQuery({ const { data, isLoading: loadingPlayer } = useGetAllPlayerQuery({
pageIndex, pageIndex,
pageSize, pageSize,
......
"use client"; "use client";
import InputFile from '@/components/atom/InputFile' import InputFile from '@/components/atom/InputFile';
import PasswordField from '@/components/molecules/PasswordField' import PasswordField from '@/components/molecules/PasswordField';
import { PATH } from '@/routes/PATH' import { PlayerProps, SinlgePlayerResponseProps } from '@/types/player';
import { PlayerProps, SinlgePlayerResponseProps } from '@/types/player' import { Button, InputLabel, OutlinedInput } from '@mui/material';
import { Button, InputLabel, OutlinedInput } from '@mui/material' import { FormikProps } from 'formik';
import { FormikProps } from 'formik'
import { useRouter } from 'next/navigation'
import React from 'react'
export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }: { formik: FormikProps<PlayerProps>, id?: string, data?: SinlgePlayerResponseProps, loading?: boolean, buttonLabel?: string }) { export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }: { formik: FormikProps<PlayerProps>, id?: string, data?: SinlgePlayerResponseProps, loading?: boolean, buttonLabel?: string }) {
const router = useRouter();
return ( return (
<form onSubmit={formik.handleSubmit}> <form onSubmit={formik.handleSubmit}>
......
"use client" "use client"
import InputFile from '@/components/atom/InputFile'
import PasswordField from '@/components/molecules/PasswordField'
import { useAppDispatch } from '@/hooks/hook' import { useAppDispatch } from '@/hooks/hook'
import { PATH } from '@/routes/PATH'
import { useCreatePlayerMutation, useGetPlayerByIdQuery, useUpdatePlayerByIdMutation } from '@/services/playerApi' import { useCreatePlayerMutation, useGetPlayerByIdQuery, useUpdatePlayerByIdMutation } from '@/services/playerApi'
import { showToast, ToastVariant } from '@/slice/toastSlice' import { showToast, ToastVariant } from '@/slice/toastSlice'
import { initialPlayerValues } from '@/types/player' import { initialPlayerValues } from '@/types/player'
import { Button, Input, InputLabel, OutlinedInput } from '@mui/material'
import { useFormik } from 'formik' import { useFormik } from 'formik'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import React from 'react' import * as Yup from "yup"
import * as Yup from "yup";
import AddPlayerForm from './AddPlayerForm' import AddPlayerForm from './AddPlayerForm'
export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({ export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({
...@@ -44,7 +39,7 @@ export default function AddPlayerPage({ id }: { id?: string }) { ...@@ -44,7 +39,7 @@ export default function AddPlayerPage({ id }: { id?: string }) {
const [createPlayer, { isLoading }] = useCreatePlayerMutation(); const [createPlayer, { isLoading }] = useCreatePlayerMutation();
const [updatePlayer, { isLoading: updating }] = useUpdatePlayerByIdMutation(); const [updatePlayer, { isLoading: updating }] = useUpdatePlayerByIdMutation();
const { data, isLoading: loadingPlayer } = useGetPlayerByIdQuery( const { data, } = useGetPlayerByIdQuery(
id ? { id } : ({} as any), id ? { id } : ({} as any),
{ skip: !id } { skip: !id }
); );
......
...@@ -3,23 +3,21 @@ ...@@ -3,23 +3,21 @@
import CustomSwitch from '@/components/atom/Switch'; import CustomSwitch from '@/components/atom/Switch';
import ActionGroup from '@/components/molecules/Action'; import ActionGroup from '@/components/molecules/Action';
import TabController from '@/components/molecules/TabController'; import TabController from '@/components/molecules/TabController';
import TableHeader from '@/components/molecules/TableHeader' import TableHeader from '@/components/molecules/TableHeader';
import CustomTable from '@/components/organism/Table'; import CustomTable from '@/components/organism/Table';
import { useAppDispatch } from '@/hooks/hook'; import { useAppDispatch } from '@/hooks/hook';
import { PATH } from '@/routes/PATH'; import { PATH } from '@/routes/PATH';
import { useDownloadUserMutation } from '@/services/downloadApi'; import { useDownloadUserMutation } from '@/services/downloadApi';
import { useDeletePlayerByIdMutation, useGetAllPlayerQuery, useSuspendPlayerByIdMutation } from '@/services/playerApi'; import { useDeletePlayerByIdMutation, useGetAllPlayerQuery, useSuspendPlayerByIdMutation } from '@/services/playerApi';
import { showToast, ToastVariant } from '@/slice/toastSlice'; import { showToast, ToastVariant } from '@/slice/toastSlice';
import { PlayerItem, PlayerProps } from '@/types/player'; import { PlayerItem } from '@/types/player';
import { formatDateTime } from '@/utils/formatDateTime'; import { formatDateTime } from '@/utils/formatDateTime';
import { getInitials } from '@/utils/getInitials'; import { getInitials } from '@/utils/getInitials';
import { Box, Checkbox, Pagination } from '@mui/material'; import { Box, Checkbox, Pagination } from '@mui/material';
import { ColumnDef, getCoreRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table'; import { ColumnDef, getCoreRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table';
import { useRouter } from 'next/navigation'; import React, { useMemo, useState } from 'react';
import React, { useMemo, useState } from 'react'
export default function PlayerListing() { export default function PlayerListing() {
const router = useRouter();
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const [search, setSearch] = useState(""); const [search, setSearch] = useState("");
const [sorting, setSorting] = useState<{ id: string; desc: boolean }[]>([]); const [sorting, setSorting] = useState<{ id: string; desc: boolean }[]>([]);
...@@ -33,10 +31,10 @@ export default function PlayerListing() { ...@@ -33,10 +31,10 @@ export default function PlayerListing() {
status: currentTab || "" status: currentTab || ""
}); });
const filteredData = useMemo(() => data?.data?.data || [], [data, currentTab, pageSize]); // const filteredData = useMemo(() => data?.data?.data || [], [data, currentTab, pageSize]);
const [deletePlayer, { isLoading: deletingPlayer }] = useDeletePlayerByIdMutation(); const [deletePlayer] = useDeletePlayerByIdMutation();
const [suspendPlayer, { isLoading: suspendingPlayer }] = useSuspendPlayerByIdMutation(); const [suspendPlayer] = useSuspendPlayerByIdMutation();
const [downloadUser, { isLoading: downloading }] = useDownloadUserMutation(); const [downloadUser, { isLoading: downloading }] = useDownloadUserMutation();
const handlePlayerSuspend = async (id: string) => { const handlePlayerSuspend = async (id: string) => {
...@@ -199,10 +197,10 @@ export default function PlayerListing() { ...@@ -199,10 +197,10 @@ export default function PlayerListing() {
columns, columns,
state: { state: {
sorting, sorting,
}, },
onSortingChange: setSorting, onSortingChange: setSorting,
getCoreRowModel: getCoreRowModel(), getCoreRowModel: getCoreRowModel(),
getSortedRowModel: getSortedRowModel(), getSortedRowModel: getSortedRowModel(),
getPaginationRowModel: getPaginationRowModel(), getPaginationRowModel: getPaginationRowModel(),
......
"use client" "use client"
import CreditCard from '@/components/organism/Charts/CreditCard' import CreditCard from '@/components/organism/Charts/CreditCard'
import EditIcon from '@/icons/EditIcon' import EditIcon from '@/icons/EditIcon'
import { PATH } from '@/routes/PATH' import { useGetPlayerBalanceByIdQuery, useGetPlayerByIdQuery } from '@/services/playerApi'
import { formatDateTime } from '@/utils/formatDateTime'
import Image from 'next/image' import Image from 'next/image'
import Link from 'next/link' import Link from 'next/link'
import React from 'react' import React from 'react'
import TransactionTable from '../../transaction/TransactionTable' import TransactionTable from '../../transaction/TransactionTable'
import { useAppSelector } from '@/hooks/hook'
import { formatDateTime } from '@/utils/formatDateTime'
import { useGetPlayerBalanceByIdQuery, useGetPlayerByIdQuery } from '@/services/playerApi'
import TableHeader from '@/components/molecules/TableHeader'
// const games = [ // const games = [
// { // {
...@@ -63,7 +60,7 @@ const CreditCardShimmer = () => { ...@@ -63,7 +60,7 @@ const CreditCardShimmer = () => {
}; };
export default function PlayerDetailPage({ id }: { id: number }) { export default function PlayerDetailPage({ id }: { id: number }) {
const [search, setSearch] = React.useState(""); const [search, setSearch] = React.useState("");
const { data, isLoading } = useGetPlayerByIdQuery({ id }, { const { data } = useGetPlayerByIdQuery({ id }, {
skip: !id skip: !id
}) })
const { data: userBalance, isLoading: loadingBalance } = useGetPlayerBalanceByIdQuery( const { data: userBalance, isLoading: loadingBalance } = useGetPlayerBalanceByIdQuery(
......
"use client"; "use client";
import ProfileBlock from '@/components/organism/Header/Profile'
import { useAppSelector } from '@/hooks/hook'; import { useAppSelector } from '@/hooks/hook';
import EditIcon from '@/icons/EditIcon'; import EditIcon from '@/icons/EditIcon';
import { formatDateTime } from '@/utils/formatDateTime';
import { UserTick } from '@wandersonalwes/iconsax-react'
import Image from 'next/image'; import Image from 'next/image';
import React from 'react'
export default function AdminProfile() { export default function AdminProfile() {
const user = useAppSelector(state => state.auth.user) const user = useAppSelector(state => state.auth.user)
......
"use client"; "use client";
import React from "react"; import InputFile from "@/components/atom/InputFile";
import { useFormik } from "formik"; import { useAppDispatch } from "@/hooks/hook";
import * as Yup from "yup"; import { useGetAllBannerQuery, useUpdateBannerMutation } from "@/services/settingApi";
import { showToast, ToastVariant } from "@/slice/toastSlice";
import { import {
Button, Button,
FormControlLabel,
IconButton,
InputLabel, InputLabel,
OutlinedInput, OutlinedInput,
IconButton, Switch
FormControlLabel,
Typography,
Switch,
} from "@mui/material"; } from "@mui/material";
import InputFile from "@/components/atom/InputFile";
import { CloseCircle } from "@wandersonalwes/iconsax-react"; import { CloseCircle } from "@wandersonalwes/iconsax-react";
import { useAppDispatch } from "@/hooks/hook"; import { useFormik } from "formik";
import { showToast, ToastVariant } from "@/slice/toastSlice"; import React from "react";
import { useGetAllBannerQuery, useUpdateBannerMutation } from "@/services/settingApi"; import * as Yup from "yup";
const validationSchema = Yup.object({ const validationSchema = Yup.object({
banners: Yup.array().of( banners: Yup.array().of(
...@@ -32,8 +31,8 @@ const validationSchema = Yup.object({ ...@@ -32,8 +31,8 @@ const validationSchema = Yup.object({
export default function BannerSlider() { export default function BannerSlider() {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const { data, isLoading } = useGetAllBannerQuery(); const { data } = useGetAllBannerQuery();
const [updateBanner, { isLoading: updating }] = useUpdateBannerMutation(); const [updateBanner] = useUpdateBannerMutation();
const formik = useFormik({ const formik = useFormik({
initialValues: { initialValues: {
......
"use client"; "use client";
import React from "react";
import { useFormik } from "formik";
import * as Yup from "yup";
import { InputLabel, OutlinedInput, Button, IconButton } from "@mui/material";
import InputFile from "@/components/atom/InputFile"; import InputFile from "@/components/atom/InputFile";
import { CloseCircle } from "@wandersonalwes/iconsax-react";
import { useGetSettingsQuery, useUpdateSettingMutation } from "@/services/settingApi";
import { useAppDispatch } from "@/hooks/hook"; import { useAppDispatch } from "@/hooks/hook";
import { useGetSettingsQuery, useUpdateSettingMutation } from "@/services/settingApi";
import { showToast, ToastVariant } from "@/slice/toastSlice"; import { showToast, ToastVariant } from "@/slice/toastSlice";
import { SiteInitialRequest } from "@/types/setting"; import { SiteInitialRequest } from "@/types/setting";
import { Button, IconButton, InputLabel, OutlinedInput } from "@mui/material";
import { CloseCircle } from "@wandersonalwes/iconsax-react";
import { useFormik } from "formik";
import React from "react";
import * as Yup from "yup";
export default function SiteSetting() { export default function SiteSetting() {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const [updateSetting, { isLoading }] = useUpdateSettingMutation(); const [updateSetting] = useUpdateSettingMutation();
const { data } = useGetSettingsQuery(); const { data } = useGetSettingsQuery();
const [serverFiles, setServerFiles] = React.useState({ const [serverFiles, setServerFiles] = React.useState({
......
...@@ -31,7 +31,7 @@ export default function TransactionTable({ user_id, game_id, search, setSearch } ...@@ -31,7 +31,7 @@ export default function TransactionTable({ user_id, game_id, search, setSearch }
const [sorting, setSorting] = useState<{ id: string; desc: boolean }[]>([]); const [sorting, setSorting] = useState<{ id: string; desc: boolean }[]>([]);
const [pageIndex, setPageIndex] = useState(1); const [pageIndex, setPageIndex] = useState(1);
const [pageSize, setPageSize] = useState(10); const [pageSize, setPageSize] = useState(10);
const [rowSelection, setRowSelection] = useState({}); // const [rowSelection, setRowSelection] = useState({});
const [status, setStatus] = React.useState<TransactionStatusProps | undefined>(); const [status, setStatus] = React.useState<TransactionStatusProps | undefined>();
const [selectedGame, setSelectedGame] = React.useState(""); const [selectedGame, setSelectedGame] = React.useState("");
const [selectedTransactionType, setSelectedTransationType] = React.useState<TransactionTypeProps | string>(""); const [selectedTransactionType, setSelectedTransationType] = React.useState<TransactionTypeProps | string>("");
...@@ -144,7 +144,7 @@ export default function TransactionTable({ user_id, game_id, search, setSearch } ...@@ -144,7 +144,7 @@ export default function TransactionTable({ user_id, game_id, search, setSearch }
// onRowSelectionChange: setRowSelection, // onRowSelectionChange: setRowSelection,
}); });
const { data: games, isLoading } = useGetAllGamesQuery(); const { data: games } = useGetAllGamesQuery();
......
...@@ -5,15 +5,12 @@ import { useAppDispatch, useAppSelector } from '@/hooks/hook'; ...@@ -5,15 +5,12 @@ import { useAppDispatch, useAppSelector } from '@/hooks/hook';
import { useUpdateUserProfileMutation } from '@/services/userApi'; import { useUpdateUserProfileMutation } from '@/services/userApi';
import { setTokens } from '@/slice/authSlice'; import { setTokens } from '@/slice/authSlice';
import { showToast, ToastVariant } from '@/slice/toastSlice'; import { showToast, ToastVariant } from '@/slice/toastSlice';
import { initialPlayerValues, PlayerItem, SinlgePlayerResponseProps } from '@/types/player'; import { initialPlayerValues, PlayerItem } from '@/types/player';
import { useFormik } from 'formik'; import { useFormik } from 'formik';
import { useRouter } from 'next/navigation';
import React from 'react'
export default function EditUserProfile({ id, buttonLabel }: { id: string, buttonLabel?: string; }) { export default function EditUserProfile({ id, buttonLabel }: { id: string, buttonLabel?: string; }) {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const router = useRouter();
const [updateUserProfile, { isLoading }] = useUpdateUserProfileMutation(); const [updateUserProfile, { isLoading }] = useUpdateUserProfileMutation();
const user = useAppSelector((state) => state?.auth.user); const user = useAppSelector((state) => state?.auth.user);
const access_token = useAppSelector((state) => state?.auth.access_token); const access_token = useAppSelector((state) => state?.auth.access_token);
......
...@@ -3,11 +3,10 @@ ...@@ -3,11 +3,10 @@
import { useAppDispatch, useAppSelector } from '@/hooks/hook'; import { useAppDispatch, useAppSelector } from '@/hooks/hook';
import { useAddUserWalletMutation } from '@/services/userApi'; import { useAddUserWalletMutation } from '@/services/userApi';
import { showToast, ToastVariant } from '@/slice/toastSlice'; import { showToast, ToastVariant } from '@/slice/toastSlice';
import { Button, InputLabel, OutlinedInput } from '@mui/material' import { Button, InputLabel, OutlinedInput } from '@mui/material';
import { InfoCircle, WalletCheck } from '@wandersonalwes/iconsax-react' import { InfoCircle, WalletCheck } from '@wandersonalwes/iconsax-react';
import { useFormik } from 'formik'; import { useFormik } from 'formik';
import React from 'react' import * as yup from 'yup';
import * as yup from 'yup'
const validationSchema = yup.object({ const validationSchema = yup.object({
...@@ -16,7 +15,7 @@ const validationSchema = yup.object({ ...@@ -16,7 +15,7 @@ const validationSchema = yup.object({
export default function EditUserWallet() { export default function EditUserWallet() {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const user = useAppSelector((state) => state.auth.user); const user = useAppSelector((state) => state.auth.user);
const [connectWallet, { isLoading }] = useAddUserWalletMutation(); const [connectWallet] = useAddUserWalletMutation();
const formik = useFormik({ const formik = useFormik({
initialValues: { initialValues: {
wallet_address: user?.wallet_address || "", wallet_address: user?.wallet_address || "",
......
...@@ -4,14 +4,13 @@ import GlassWrapper from '@/components/molecules/GlassWrapper'; ...@@ -4,14 +4,13 @@ import GlassWrapper from '@/components/molecules/GlassWrapper';
import GoldCoinIcon from '@/icons/GoldCoinIcon'; import GoldCoinIcon from '@/icons/GoldCoinIcon';
import { Box, Button, OutlinedInput } from '@mui/material'; import { Box, Button, OutlinedInput } from '@mui/material';
import { Coin } from '@wandersonalwes/iconsax-react'; import { Coin } from '@wandersonalwes/iconsax-react';
import Link from 'next/link';
import { useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
import React, { useState } from 'react'; import { useState } from 'react';
export default function CoinCalculator({ slug }: { slug: string }) { export default function CoinCalculator({ slug }: { slug: string }) {
const [amount, setAmount] = useState<number | "">(""); const [amount, setAmount] = useState<number | "">("");
const [baseCoins, setBaseCoins] = useState<number | null>(null); const [baseCoins, setBaseCoins] = useState<number | null>(null);
const [bonusCoins, setBonusCoins] = useState<number | null>(null); const [_bonusCoins, setBonusCoins] = useState<number | null>(null);
const router = useRouter(); const router = useRouter();
......
...@@ -7,10 +7,10 @@ import GoldCoinIcon from '@/icons/GoldCoinIcon'; ...@@ -7,10 +7,10 @@ import GoldCoinIcon from '@/icons/GoldCoinIcon';
import { useDepositMutation } from '@/services/transaction'; import { useDepositMutation } from '@/services/transaction';
import { showToast, ToastVariant } from '@/slice/toastSlice'; import { showToast, ToastVariant } from '@/slice/toastSlice';
import { Box, Button } from '@mui/material'; import { Box, Button } from '@mui/material';
import { BitcoinRefresh, Check, TickCircle } from '@wandersonalwes/iconsax-react'; import { TickCircle } from '@wandersonalwes/iconsax-react';
import Image from 'next/image'; import Image from 'next/image';
import { usePathname, useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
import React from 'react' import React from 'react';
type PaymentModeProps = "crypto" | "idem" type PaymentModeProps = "crypto" | "idem"
export default function CheckoutPage({ amount, slug, bonus }: { export default function CheckoutPage({ amount, slug, bonus }: {
...@@ -18,7 +18,6 @@ export default function CheckoutPage({ amount, slug, bonus }: { ...@@ -18,7 +18,6 @@ export default function CheckoutPage({ amount, slug, bonus }: {
slug: string; slug: string;
bonus: number bonus: number
}) { }) {
const pathname = usePathname();
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const router = useRouter(); const router = useRouter();
const [getPaymentLink, { isLoading: gettingLink }] = useDepositMutation(); const [getPaymentLink, { isLoading: gettingLink }] = useDepositMutation();
......
import GlassWrapper from '@/components/molecules/GlassWrapper'
import GoldCoinIcon from '@/icons/GoldCoinIcon' import GoldCoinIcon from '@/icons/GoldCoinIcon'
import { Box, Button, OutlinedInput } from '@mui/material' import { Box } from '@mui/material'
import { Coin } from '@wandersonalwes/iconsax-react' import { Coin } from '@wandersonalwes/iconsax-react'
import Link from 'next/link' import Link from 'next/link'
import React from 'react'
import CoinCalculator from './CoinCalculator' import CoinCalculator from './CoinCalculator'
import GlassWrapper from '@/components/molecules/GlassWrapper'
export default function BuyCoinSinlgeGame({ slug }: { slug: string }) { export default function BuyCoinSinlgeGame({ slug }: { slug: string }) {
const packs = [ const packs = [
......
...@@ -5,7 +5,6 @@ import { useAddUserWalletMutation } from '@/services/userApi' ...@@ -5,7 +5,6 @@ import { useAddUserWalletMutation } from '@/services/userApi'
import { showToast, ToastVariant } from '@/slice/toastSlice' import { showToast, ToastVariant } from '@/slice/toastSlice'
import { Button, OutlinedInput } from '@mui/material' import { Button, OutlinedInput } from '@mui/material'
import { useFormik } from 'formik' import { useFormik } from 'formik'
import React from 'react'
import * as yup from 'yup' import * as yup from 'yup'
......
import { Box, Typography } from '@mui/material' import GlassWrapper from '@/components/molecules/GlassWrapper'
import { SecuritySafe } from '@wandersonalwes/iconsax-react' import { SecuritySafe } from '@wandersonalwes/iconsax-react'
import Image from 'next/image' import Image from 'next/image'
import React from 'react'
import ConnectWalletForm from './ConnectWalletForm' import ConnectWalletForm from './ConnectWalletForm'
import GlassWrapper from '@/components/molecules/GlassWrapper'
export default function ConnectWalletPage() { export default function ConnectWalletPage() {
return ( return (
......
"use client"; "use client";
import React from 'react'
import BalanceRefresh from './BalanceRefresh';
import { Eye, EyeSlash } from '@wandersonalwes/iconsax-react';
import { Tooltip } from '@mui/material'; import { Tooltip } from '@mui/material';
import { Eye, EyeSlash } from '@wandersonalwes/iconsax-react';
import React from 'react';
import CopyToClipboard from './CopyToClipboard'; import CopyToClipboard from './CopyToClipboard';
export const CardPasswordField = ({ password }: { password: string }) => { export const CardPasswordField = ({ password }: { password: string }) => {
......
"use client"; "use client";
import { useGetUserBalanceBySlugQuery } from '@/services/userApi';
import React from 'react'
import CopyToClipboard from './CopyToClipboard';
import { CardPasswordField } from './CardPasswordHandler'; import { CardPasswordField } from './CardPasswordHandler';
import CopyToClipboard from './CopyToClipboard';
export default function SingleGameCred({ username, password }: { username: string; password: string }) { export default function SingleGameCred({ username, password }: { username: string; password: string }) {
......
"use client"; "use client";
import React from 'react'
import SingleGameCred from '../../../gameCredentials/SingleGameCred'
import { useAppSelector } from '@/hooks/hook'; import { useAppSelector } from '@/hooks/hook';
import { useRouter } from 'next/navigation'; import SingleGameCred from '../../../gameCredentials/SingleGameCred';
export default function GameCredentialsBlock({ game }: { game: any }) { export default function GameCredentialsBlock({ game }: { game: any }) {
const user = useAppSelector((s) => s ? s.auth.user : ""); const user = useAppSelector((s) => s ? s.auth.user : "");
if (!user) { if (!user) {
return ""; return "";
} }
return ( return (
<div className="game_cred "> <div className="game_cred ">
......
...@@ -3,17 +3,15 @@ ...@@ -3,17 +3,15 @@
import { useAppSelector } from '@/hooks/hook' import { useAppSelector } from '@/hooks/hook'
import GoldCoinIcon from '@/icons/GoldCoinIcon' import GoldCoinIcon from '@/icons/GoldCoinIcon'
import SilverCoinIcon from '@/icons/SilverCoinIcon' import SilverCoinIcon from '@/icons/SilverCoinIcon'
import { useGetUserBalanceBySlugQuery } from '@/services/userApi'
import { Box } from '@mui/material' import { Box } from '@mui/material'
export default function UserCoin({ slug }: { slug: string }) { export default function UserCoin({ slug }: { slug: string }) {
const { data } = useGetUserBalanceBySlugQuery({ slug }); const user = useAppSelector((s) => s.auth.user);
const user = useAppSelector((s) => s ? s.auth.user : ""); const newBalance = useAppSelector((state) => state.userBalanceSlice);
if (!user) { if (!user) {
return ""; return "";
} }
const newBalance = useAppSelector((state) => state.userBalanceSlice);
const providerBalance = newBalance.providerAndBalance.find( const providerBalance = newBalance.providerAndBalance.find(
(item: any) => item.provider === slug (item: any) => item.provider === slug
); );
......
import { PATH } from '@/routes/PATH';
import ProtectedLink from '@/routes/ProtectedLink';
import { getAllGames } from '@/serverApi/game'; import { getAllGames } from '@/serverApi/game';
import { Tooltip } from '@mui/material'; import { Tooltip } from '@mui/material';
import Image from 'next/image'; import Image from 'next/image';
import Link from 'next/link'; import Link from 'next/link';
import React from 'react'
export default async function ExclusiveGamePage() { export default async function ExclusiveGamePage() {
let games = null; let games = null;
...@@ -12,7 +9,7 @@ export default async function ExclusiveGamePage() { ...@@ -12,7 +9,7 @@ export default async function ExclusiveGamePage() {
try { try {
games = await getAllGames(); games = await getAllGames();
} catch (err) { } catch (err) {
// console.log("❌ Failed to fetch games:", err); console.log("❌ Failed to fetch games:", err);
return <p className="text-red-500">Failed to load games.</p>; return <p className="text-red-500">Failed to load games.</p>;
} }
......
'use client'; 'use client';
import GlassWrapper from "@/components/molecules/GlassWrapper"; import GlassWrapper from "@/components/molecules/GlassWrapper";
import { Box, Button, Stack, Typography } from "@mui/material"; import { Typography } from "@mui/material";
import Link from "next/link"; import Link from "next/link";
export default function KycBanner() { export default function KycBanner() {
......
'use client'; 'use client';
import React from 'react'; import { Button, InputLabel, OutlinedInput, Stack } from '@mui/material';
import { DatePicker, LocalizationProvider } from '@mui/x-date-pickers';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import dayjs from 'dayjs';
import { useFormik } from 'formik'; import { useFormik } from 'formik';
import * as Yup from 'yup'; import * as Yup from 'yup';
import dayjs from 'dayjs';
import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import { InputLabel, OutlinedInput, Stack, Button, TextField } from '@mui/material';
// Reuse your MUI styles // Reuse your MUI styles
const formFieldSx = { const formFieldSx = {
...@@ -75,7 +74,7 @@ export default function VerifyKYCPage() { ...@@ -75,7 +74,7 @@ export default function VerifyKYCPage() {
}, },
validationSchema, validationSchema,
onSubmit: (values) => { onSubmit: (values) => {
// console.log('Form submitted:', values); console.log('Form submitted:', values);
}, },
}); });
......
...@@ -46,7 +46,7 @@ export default function WithdrawlPage({ ...@@ -46,7 +46,7 @@ export default function WithdrawlPage({
const gameInfo = coins?.data?.game_information || {}; const gameInfo = coins?.data?.game_information || {};
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const [withdrawMoney, { isLoading: widthdrawing }] = const [withdrawMoney] =
useWithdrawlMutation(); useWithdrawlMutation();
const formik = useFormik<WithdrawlFormValues>({ const formik = useFormik<WithdrawlFormValues>({
......
"use client"; "use client";
import CustomTable from '@/components/organism/Table'; import CustomTable from '@/components/organism/Table';
import { useGetAllDepositQuery, useGetAllWithdrawlQuery } from '@/services/transaction'; import { useGetAllWithdrawlQuery } from '@/services/transaction';
import { SingleDepositProps } from '@/types/transaction'; import { SingleDepositProps } from '@/types/transaction';
import { Pagination } from '@mui/material'; import { Pagination } from '@mui/material';
import { ColumnDef, getCoreRowModel, getPaginationRowModel, useReactTable } from '@tanstack/react-table'; import { ColumnDef, getCoreRowModel, getPaginationRowModel, useReactTable } from '@tanstack/react-table';
import React, { useState } from 'react' import { useState } from 'react';
export default function WithdrawnHistoryPage({ currentFilter, export default function WithdrawnHistoryPage({ currentFilter,
customRange customRange
...@@ -18,7 +18,7 @@ export default function WithdrawnHistoryPage({ currentFilter, ...@@ -18,7 +18,7 @@ export default function WithdrawnHistoryPage({ currentFilter,
const { data, isLoading } = useGetAllWithdrawlQuery({ const { data, isLoading } = useGetAllWithdrawlQuery({
pageIndex, pageIndex,
pageSize, pageSize,
days:currentFilter, days: currentFilter,
customRange customRange
}); });
const columns: ColumnDef<SingleDepositProps>[] = [ const columns: ColumnDef<SingleDepositProps>[] = [
......
...@@ -13,7 +13,7 @@ export default function MenuPage() { ...@@ -13,7 +13,7 @@ export default function MenuPage() {
const { data, isLoading } = useGetAllPageQuery({ pageIndex: 1, pageSize: 30 }); const { data, isLoading } = useGetAllPageQuery({ pageIndex: 1, pageSize: 30 });
const [createMenu, { isLoading: updatingMenu }] = useCreateMenuMutation(); const [createMenu, { isLoading: updatingMenu }] = useCreateMenuMutation();
const { data: menus, isLoading: loadingMenu } = useGetAllMenuQuery(); const { data: menus } = useGetAllMenuQuery();
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const [selectedMenus, setSelectedMenus] = React.useState<any[]>([]); const [selectedMenus, setSelectedMenus] = React.useState<any[]>([]);
...@@ -37,7 +37,7 @@ export default function MenuPage() { ...@@ -37,7 +37,7 @@ export default function MenuPage() {
const handleMenuSave = async () => { const handleMenuSave = async () => {
try { try {
const menuIds = selectedMenus.map((menu) => menu.id); const menuIds = selectedMenus.map((menu) => menu.id);
const response = await createMenu({ pages: menuIds }).unwrap(); await createMenu({ pages: menuIds }).unwrap();
dispatch( dispatch(
showToast({ showToast({
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
import { useAppDispatch, useAppSelector } from "@/hooks/hook"; import { useAppDispatch, useAppSelector } from "@/hooks/hook";
import { clearTokens, setTokens } from "@/slice/authSlice"; import { clearTokens, setTokens } from "@/slice/authSlice";
import Cookies from "js-cookie";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import React, { useEffect } from "react"; import React, { useEffect } from "react";
import Cookies from "js-cookie";
function isTokenExpired(token: string): boolean { function isTokenExpired(token: string): boolean {
try { try {
...@@ -27,7 +27,7 @@ export default function Private({ children }: { children: React.ReactNode }) { ...@@ -27,7 +27,7 @@ export default function Private({ children }: { children: React.ReactNode }) {
const token = useAppSelector((state) => state.auth.access_token); const token = useAppSelector((state) => state.auth.access_token);
useEffect(() => { useEffect(() => {
let accessToken = token || Cookies.get("access_token"); const accessToken = token || Cookies.get("access_token");
if (!accessToken || isTokenExpired(accessToken)) { if (!accessToken || isTokenExpired(accessToken)) {
dispatch(clearTokens()); dispatch(clearTokens());
...@@ -43,7 +43,7 @@ export default function Private({ children }: { children: React.ReactNode }) { ...@@ -43,7 +43,7 @@ export default function Private({ children }: { children: React.ReactNode }) {
// if (!user) { // if (!user) {
// router.replace("/"); // router.replace("/");
// } // }
}, [token, user, dispatch, router]); }, [token, user, dispatch, router]);
if (!user) return null; if (!user) return null;
......
...@@ -19,7 +19,7 @@ export default function ProtectedLink({ href, className, children, target, rel, ...@@ -19,7 +19,7 @@ export default function ProtectedLink({ href, className, children, target, rel,
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const router = useRouter(); const router = useRouter();
const { data, isLoading } = useGetGamesPasswordStatusQuery({ provider: provider || "" }, { skip: !provider }); const { data } = useGetGamesPasswordStatusQuery({ provider: provider || "" }, { skip: !provider });
console.log("user data", { data, provider }); console.log("user data", { data, provider });
......
"use client"; "use client";
import { useEffect } from "react";
import { useAppDispatch } from "@/hooks/hook";
import { setTokens } from "@/slice/authSlice";
export default function ReduxHydrator({ token }: { token: string; }) { export default function ReduxHydrator({ token }: { token: string; }) {
const dispatch = useAppDispatch();
console.log(token);
// useEffect(() => { // useEffect(() => {
// dispatch(setTokens({ access_token: token, user })); // dispatch(setTokens({ access_token: token, user }));
......
// routes/Private.tsx // routes/Private.tsx
import { cookies } from "next/headers"; import { cookies } from "next/headers";
import { redirect } from "next/navigation";
import React from "react"; import React from "react";
import ReduxHydrator from "./ReduxHydrator"; import ReduxHydrator from "./ReduxHydrator";
function decodeJwt(token: string) { // function decodeJwt(token: string) {
try { // try {
return JSON.parse(atob(token.split(".")[1])); // return JSON.parse(atob(token.split(".")[1]));
} catch { // } catch {
return null; // return null;
} // }
} // }
export default async function ServerPrivate({ children }: { children: React.ReactNode }) { export default async function ServerPrivate({ children }: { children: React.ReactNode }) {
// ✅ Read cookie server-side // ✅ Read cookie server-side
...@@ -24,7 +23,7 @@ export default async function ServerPrivate({ children }: { children: React.Reac ...@@ -24,7 +23,7 @@ export default async function ServerPrivate({ children }: { children: React.Reac
// redirect("/"); // redirect("/");
// } // }
// const user = payload; // const user = payload;
return ( return (
......
import { PageRequestProps, PageResponseProps } from "@/types/page"; import { PageResponseProps } from "@/types/page";
import { cookies } from "next/headers";
import { serverBaseQuery } from "./serverBaseQuery";
import { BannerResponseProps } from "@/types/setting"; import { BannerResponseProps } from "@/types/setting";
import { serverBaseQuery } from "./serverBaseQuery";
export async function getPageDetail(slug: string): Promise<PageResponseProps | undefined> { export async function getPageDetail(slug: string): Promise<PageResponseProps | undefined> {
return serverBaseQuery(`/api/general/page/${slug}`); return serverBaseQuery(`/api/general/page/${slug}`);
......
// lib/baseQuery.ts // lib/baseQuery.ts
import { RootState } from "@/hooks/store";
export async function serverBaseQuery<T>( export async function serverBaseQuery<T>(
endpoint: string, endpoint: string,
...@@ -9,7 +8,6 @@ export async function serverBaseQuery<T>( ...@@ -9,7 +8,6 @@ export async function serverBaseQuery<T>(
token, token,
body, body,
cache = "no-store", cache = "no-store",
withAuth = false,
}: { }: {
method?: string; method?: string;
token?: string; token?: string;
......
...@@ -25,9 +25,8 @@ ...@@ -25,9 +25,8 @@
// export const { useDownloadTransactionMutation } = downloadApi; // export const { useDownloadTransactionMutation } = downloadApi;
// src/services/downloadApi.ts // src/services/downloadApi.ts
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery"; // your custom base query import { baseQuery } from "./baseQuery"; // your custom base query
import { GlobalResponse } from "@/types/config";
export const downloadApi = createApi({ export const downloadApi = createApi({
reducerPath: "downloadApi", reducerPath: "downloadApi",
......
import { GlobalResponse } from "@/types/config";
import { GameItem, GameResponseProps, SingleGameResponse } from "@/types/game";
import { createApi } from "@reduxjs/toolkit/query/react"; import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery"; import { baseQuery } from "./baseQuery";
import { GameItem, GameProps, GameResponseProps, SingleGameResponse } from "@/types/game";
import { GlobalResponse } from "@/types/config";
export const gameApi = createApi({ export const gameApi = createApi({
reducerPath: "gameApi", reducerPath: "gameApi",
......
...@@ -17,7 +17,7 @@ export const pageApi = createApi({ ...@@ -17,7 +17,7 @@ export const pageApi = createApi({
invalidatesTags: ['pages'] invalidatesTags: ['pages']
}), }),
getAllPage: builder.query<PageListResponse, QueryParams>({ getAllPage: builder.query<PageListResponse, QueryParams>({
query: (body) => ({ query: () => ({
url: "/api/admin/page/list", url: "/api/admin/page/list",
method: "GET", method: "GET",
}), }),
......
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery";
import { GlobalResponse } from "@/types/config"; import { GlobalResponse } from "@/types/config";
import { MenuResponse } from "@/types/menu"; import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery";
type PaymentRequestProps = { type PaymentRequestProps = {
idem_payment_uri: string, idem_payment_uri: string,
......
// services/playerApi.ts // services/playerApi.ts
import { createApi } from "@reduxjs/toolkit/query/react"; import { GlobalResponse, QueryParams } from "@/types/config";
import { baseQuery } from "./baseQuery";
import { import {
PlayerListResponse, PlayerListResponse,
PlayerProps, SinlgePlayerResponseProps
SinlgePlayerResponseProps,
} from "@/types/player"; } from "@/types/player";
import { GlobalResponse, QueryParams } from "@/types/config"; import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery";
export const playerApi = createApi({ export const playerApi = createApi({
reducerPath: "playerApi", reducerPath: "playerApi",
......
import { TransactionStatusProps } from "@/components/pages/dashboard/adminDashboard/transaction/TransactionTable";
import { QueryParams } from "@/types/config";
import { DepositListProps, DepositProps, DepositResponseProps } from "@/types/transaction";
import { createApi } from "@reduxjs/toolkit/query/react"; import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery"; import { baseQuery } from "./baseQuery";
import { DepositListProps, DepositProps, DepositResponseProps, DepositUrlProps } from "@/types/transaction";
import { QueryParams } from "@/types/config";
import { TransactionStatusProps } from "@/components/pages/dashboard/adminDashboard/transaction/TransactionTable";
export const transactionApi = createApi({ export const transactionApi = createApi({
reducerPath: "transactionApi", reducerPath: "transactionApi",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment