Create void-cat/api package
@ -72,7 +72,7 @@
|
|||||||
|
|
||||||
<Target Name="IncludeBuildFiles" AfterTargets="ComputeFilesToPublish">
|
<Target Name="IncludeBuildFiles" AfterTargets="ComputeFilesToPublish">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<_CopyItems Include="$(SpaRoot)build\**\*.*" />
|
<_CopyItems Include="$(SpaRoot)src\app\build\**\*.*" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Copy SourceFiles="@(_CopyItems)" DestinationFolder="$(PublishDir)wwwroot\%(RecursiveDir)" />
|
<Copy SourceFiles="@(_CopyItems)" DestinationFolder="$(PublishDir)wwwroot\%(RecursiveDir)" />
|
||||||
</Target>
|
</Target>
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
},
|
},
|
||||||
"AllowedHosts": "*",
|
"AllowedHosts": "*",
|
||||||
"Settings": {
|
"Settings": {
|
||||||
"SiteUrl": "http://localhost:7195",
|
"SiteUrl": "https://localhost:7195",
|
||||||
"DataDirectory": "./data",
|
"DataDirectory": "./data",
|
||||||
"CorsOrigins": [
|
"CorsOrigins": [
|
||||||
"http://localhost:3000"
|
"http://localhost:3000"
|
||||||
|
@ -1,58 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "spa",
|
|
||||||
"version": "0.1.0",
|
|
||||||
"private": true,
|
"private": true,
|
||||||
"proxy": "http://localhost:7195",
|
"workspaces": [
|
||||||
"dependencies": {
|
"src/*"
|
||||||
"@hcaptcha/react-hcaptcha": "^1.1.1",
|
|
||||||
"@reduxjs/toolkit": "^1.7.2",
|
|
||||||
"@types/node": "^18.16.3",
|
|
||||||
"@types/qrcode.react": "^1.0.2",
|
|
||||||
"@types/react": "^18.2.0",
|
|
||||||
"@types/react-dom": "^18.2.1",
|
|
||||||
"@types/sjcl": "^1.0.30",
|
|
||||||
"moment": "^2.29.4",
|
|
||||||
"qrcode.react": "^1.0.1",
|
|
||||||
"react": "^18.2.0",
|
|
||||||
"react-dom": "^18.2.0",
|
|
||||||
"react-helmet": "^6.1.0",
|
|
||||||
"react-redux": "^7.2.6",
|
|
||||||
"react-router-dom": "^6.2.1",
|
|
||||||
"react-scripts": "5.0.0",
|
|
||||||
"recharts": "^2.1.10",
|
|
||||||
"sjcl": "^1.0.8",
|
|
||||||
"typescript": "^5.0.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@craco/craco": "^6.4.5",
|
|
||||||
"@types/preval.macro": "^3.0.0",
|
|
||||||
"@types/react-helmet": "^6.1.6",
|
|
||||||
"cra-bundle-analyzer": "^0.1.1",
|
|
||||||
"http-proxy-middleware": "^2.0.6",
|
|
||||||
"preval.macro": "^5.0.0"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"start": "craco start",
|
|
||||||
"build": "craco build",
|
|
||||||
"test": "craco test",
|
|
||||||
"eject": "react-scripts eject"
|
|
||||||
},
|
|
||||||
"eslintConfig": {
|
|
||||||
"extends": [
|
|
||||||
"react-app",
|
|
||||||
"react-app/jest"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"browserslist": {
|
|
||||||
"production": [
|
|
||||||
">0.2%",
|
|
||||||
"not dead",
|
|
||||||
"not op_mini all"
|
|
||||||
],
|
],
|
||||||
"development": [
|
"scripts": {
|
||||||
"last 1 chrome version",
|
"build": "yarn workspace @void-cat/api build && yarn workspace @void-cat/app build"
|
||||||
"last 1 firefox version",
|
|
||||||
"last 1 safari version"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import {VoidUploadResult} from "./index";
|
import {VoidUploadResult} from "./index";
|
||||||
import sjcl from "sjcl";
|
import sjcl from "sjcl";
|
||||||
import {sjclcodec} from "./codecBytes";
|
import {sjclcodec} from "./codecBytes";
|
||||||
import {buf2hex} from "../Util";
|
import {buf2hex} from "./Util";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generic upload state
|
* Generic upload state
|
||||||
*/
|
*/
|
3
VoidCat/spa/src/api/src/Util.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export function buf2hex(buffer: number[] | ArrayBuffer) {
|
||||||
|
return [...new Uint8Array(buffer)].map(x => x.toString(16).padStart(2, '0')).join('');
|
||||||
|
}
|
20
VoidCat/spa/src/api/tsconfig.json
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"baseUrl": "src",
|
||||||
|
"target": "es2020",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"strict": true,
|
||||||
|
"allowJs": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"noImplicitOverride": true,
|
||||||
|
"module": "CommonJS",
|
||||||
|
"declaration": true,
|
||||||
|
"declarationMap": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"outDir": "dist"
|
||||||
|
},
|
||||||
|
"include": ["src"],
|
||||||
|
"files": ["src/index.ts"]
|
||||||
|
}
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 401 KiB After Width: | Height: | Size: 401 KiB |
@ -2,6 +2,7 @@
|
|||||||
import {useState} from "react";
|
import {useState} from "react";
|
||||||
import {useSelector} from "react-redux";
|
import {useSelector} from "react-redux";
|
||||||
import {Navigate} from "react-router-dom";
|
import {Navigate} from "react-router-dom";
|
||||||
|
import {AdminProfile} from "@void-cat/api";
|
||||||
|
|
||||||
import {FileList} from "../Components/Shared/FileList";
|
import {FileList} from "../Components/Shared/FileList";
|
||||||
import {UserList} from "./UserList";
|
import {UserList} from "./UserList";
|
||||||
@ -11,7 +12,6 @@ import EditUser from "./EditUser";
|
|||||||
|
|
||||||
import useApi from "Hooks/UseApi";
|
import useApi from "Hooks/UseApi";
|
||||||
import {RootState} from "Store";
|
import {RootState} from "Store";
|
||||||
import {AdminProfile} from "../Api";
|
|
||||||
|
|
||||||
export function Admin() {
|
export function Admin() {
|
||||||
const auth = useSelector((state: RootState) => state.login.jwt);
|
const auth = useSelector((state: RootState) => state.login.jwt);
|
@ -1,9 +1,9 @@
|
|||||||
import {useState} from "react";
|
import {useState} from "react";
|
||||||
import {useSelector} from "react-redux";
|
import {useSelector} from "react-redux";
|
||||||
|
import {AdminProfile} from "@void-cat/api";
|
||||||
|
|
||||||
import {VoidButton} from "../Components/Shared/VoidButton";
|
import {VoidButton} from "../Components/Shared/VoidButton";
|
||||||
import useApi from "Hooks/UseApi";
|
import useApi from "Hooks/UseApi";
|
||||||
import {AdminProfile} from "Api";
|
|
||||||
import {RootState} from "Store";
|
import {RootState} from "Store";
|
||||||
|
|
||||||
export default function EditUser({user, onClose}: {user: AdminProfile, onClose: () => void}) {
|
export default function EditUser({user, onClose}: {user: AdminProfile, onClose: () => void}) {
|
@ -1,12 +1,12 @@
|
|||||||
import {useDispatch} from "react-redux";
|
import {useDispatch} from "react-redux";
|
||||||
import {ReactNode, useEffect, useState} from "react";
|
import {ReactNode, useEffect, useState} from "react";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
import {AdminProfile, AdminUserListResult, ApiError, PagedResponse, PagedSortBy, PageSortOrder} from "@void-cat/api";
|
||||||
|
|
||||||
import {logout} from "../LoginState";
|
import {logout} from "../LoginState";
|
||||||
import {PageSelector} from "../Components/Shared/PageSelector";
|
import {PageSelector} from "../Components/Shared/PageSelector";
|
||||||
|
|
||||||
import useApi from "Hooks/UseApi";
|
import useApi from "Hooks/UseApi";
|
||||||
import {AdminProfile, AdminUserListResult, ApiError, PagedResponse, PagedSortBy, PageSortOrder} from "Api";
|
|
||||||
|
|
||||||
interface UserListProps {
|
interface UserListProps {
|
||||||
actions: (u: AdminProfile) => ReactNode
|
actions: (u: AdminProfile) => ReactNode
|
@ -2,6 +2,7 @@ import "./FileEdit.css";
|
|||||||
import {useState} from "react";
|
import {useState} from "react";
|
||||||
import {useSelector} from "react-redux";
|
import {useSelector} from "react-redux";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
import {PaymentServices, SetPaymentConfigRequest, VoidFileResponse} from "@void-cat/api";
|
||||||
|
|
||||||
import {StrikePaymentConfig} from "./StrikePaymentConfig";
|
import {StrikePaymentConfig} from "./StrikePaymentConfig";
|
||||||
import {NoPaymentConfig} from "./NoPaymentConfig";
|
import {NoPaymentConfig} from "./NoPaymentConfig";
|
||||||
@ -9,7 +10,6 @@ import {VoidButton} from "../Shared/VoidButton";
|
|||||||
|
|
||||||
import useApi from "Hooks/UseApi";
|
import useApi from "Hooks/UseApi";
|
||||||
import {RootState} from "Store";
|
import {RootState} from "Store";
|
||||||
import {Payment, PaymentServices, SetPaymentConfigRequest, VoidFileResponse} from "Api";
|
|
||||||
|
|
||||||
interface FileEditProps {
|
interface FileEditProps {
|
||||||
file: VoidFileResponse
|
file: VoidFileResponse
|
@ -1,6 +1,6 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import {VoidButton} from "../Shared/VoidButton";
|
import {VoidButton} from "../Shared/VoidButton";
|
||||||
import {PaymentCurrencies, SetPaymentConfigRequest, VoidFileResponse} from "../../Api";
|
import {PaymentCurrencies, SetPaymentConfigRequest, VoidFileResponse} from "@void-cat/api";
|
||||||
|
|
||||||
interface NoPaymentConfigProps {
|
interface NoPaymentConfigProps {
|
||||||
privateFile: VoidFileResponse
|
privateFile: VoidFileResponse
|
@ -1,7 +1,7 @@
|
|||||||
import {useState} from "react";
|
import {useState} from "react";
|
||||||
import {VoidButton} from "../Shared/VoidButton";
|
import {VoidButton} from "../Shared/VoidButton";
|
||||||
|
|
||||||
import {PaymentCurrencies, SetPaymentConfigRequest, VoidFileResponse} from "Api";
|
import {PaymentCurrencies, SetPaymentConfigRequest, VoidFileResponse} from "@void-cat/api";
|
||||||
|
|
||||||
interface StrikePaymentConfigProps {
|
interface StrikePaymentConfigProps {
|
||||||
file: VoidFileResponse
|
file: VoidFileResponse
|
@ -2,10 +2,10 @@ import "./FilePayment.css";
|
|||||||
import {useState} from "react";
|
import {useState} from "react";
|
||||||
import {LightningPayment} from "./LightningPayment";
|
import {LightningPayment} from "./LightningPayment";
|
||||||
import {VoidButton} from "../Shared/VoidButton";
|
import {VoidButton} from "../Shared/VoidButton";
|
||||||
|
import {PaymentOrder, PaymentServices, VoidFileResponse} from "@void-cat/api";
|
||||||
|
|
||||||
import useApi from "Hooks/UseApi";
|
import useApi from "Hooks/UseApi";
|
||||||
import {FormatCurrency} from "Util";
|
import {FormatCurrency} from "Util";
|
||||||
import {PaymentOrder, PaymentServices, VoidFileResponse} from "Api";
|
|
||||||
|
|
||||||
interface FilePaymentProps {
|
interface FilePaymentProps {
|
||||||
file: VoidFileResponse
|
file: VoidFileResponse
|
@ -1,10 +1,10 @@
|
|||||||
import QRCode from "qrcode.react";
|
import QRCode from "qrcode.react";
|
||||||
import {useEffect} from "react";
|
import {useEffect} from "react";
|
||||||
|
import {PaymentOrder, PaymentOrderState, VoidFileResponse} from "@void-cat/api";
|
||||||
|
|
||||||
import {Countdown} from "../Shared/Countdown";
|
import {Countdown} from "../Shared/Countdown";
|
||||||
|
|
||||||
import useApi from "Hooks/UseApi";
|
import useApi from "Hooks/UseApi";
|
||||||
import {PaymentOrder, PaymentOrderState, VoidFileResponse} from "Api";
|
|
||||||
|
|
||||||
interface LightningPaymentProps {
|
interface LightningPaymentProps {
|
||||||
file: VoidFileResponse
|
file: VoidFileResponse
|
@ -1,13 +1,13 @@
|
|||||||
import "./FileUpload.css";
|
import "./FileUpload.css";
|
||||||
import {useEffect, useMemo, useState} from "react";
|
import {useEffect, useMemo, useState} from "react";
|
||||||
import {useSelector} from "react-redux";
|
import {useSelector} from "react-redux";
|
||||||
|
import {UploadState, VoidFileResponse} from "@void-cat/api";
|
||||||
|
|
||||||
import {VoidButton} from "../Shared/VoidButton";
|
import {VoidButton} from "../Shared/VoidButton";
|
||||||
import {useFileTransfer} from "../Shared/FileTransferHook";
|
import {useFileTransfer} from "../Shared/FileTransferHook";
|
||||||
|
|
||||||
import {RootState} from "Store";
|
import {RootState} from "Store";
|
||||||
import {ConstName, FormatBytes} from "Util";
|
import {ConstName, FormatBytes} from "Util";
|
||||||
import {UploadState, VoidFileResponse} from "Api";
|
|
||||||
import useApi from "Hooks/UseApi";
|
import useApi from "Hooks/UseApi";
|
||||||
|
|
||||||
interface FileUploadProps {
|
interface FileUploadProps {
|
@ -1,8 +1,8 @@
|
|||||||
import {Bar, BarChart, Tooltip, XAxis} from "recharts";
|
import {Bar, BarChart, Tooltip, XAxis} from "recharts";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
import {BandwidthPoint} from "@void-cat/api";
|
||||||
|
|
||||||
import {FormatBytes} from "Util";
|
import {FormatBytes} from "Util";
|
||||||
import {BandwidthPoint} from "../../Api";
|
|
||||||
|
|
||||||
interface MetricsGraphProps {
|
interface MetricsGraphProps {
|
||||||
metrics?: Array<BandwidthPoint>
|
metrics?: Array<BandwidthPoint>
|
@ -1,11 +1,11 @@
|
|||||||
import {useEffect, useState} from "react";
|
import {useEffect, useState} from "react";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
import {ApiKey} from "@void-cat/api";
|
||||||
|
|
||||||
import {VoidButton} from "../Shared/VoidButton";
|
import {VoidButton} from "../Shared/VoidButton";
|
||||||
import VoidModal from "../Shared/VoidModal";
|
import VoidModal from "../Shared/VoidModal";
|
||||||
|
|
||||||
import useApi from "Hooks/UseApi";
|
import useApi from "Hooks/UseApi";
|
||||||
import {ApiKey} from "Api";
|
|
||||||
|
|
||||||
export default function ApiKeyList() {
|
export default function ApiKeyList() {
|
||||||
const Api = useApi();
|
const Api = useApi();
|
@ -2,11 +2,11 @@ import {useDispatch} from "react-redux";
|
|||||||
import {ReactNode, useEffect, useState} from "react";
|
import {ReactNode, useEffect, useState} from "react";
|
||||||
import {Link} from "react-router-dom";
|
import {Link} from "react-router-dom";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
import {ApiError, PagedRequest, PagedResponse, PagedSortBy, PageSortOrder, VoidFileResponse} from "@void-cat/api";
|
||||||
|
|
||||||
import {logout} from "../../LoginState";
|
import {logout} from "../../LoginState";
|
||||||
import {PageSelector} from "./PageSelector";
|
import {PageSelector} from "./PageSelector";
|
||||||
|
|
||||||
import {ApiError, PagedRequest, PagedResponse, PagedSortBy, PageSortOrder, VoidFileResponse} from "Api";
|
|
||||||
import {FormatBytes} from "Util";
|
import {FormatBytes} from "Util";
|
||||||
|
|
||||||
interface FileListProps {
|
interface FileListProps {
|
@ -1,9 +1,9 @@
|
|||||||
import "./InlineProfile.css";
|
import "./InlineProfile.css";
|
||||||
import {CSSProperties} from "react";
|
import {CSSProperties} from "react";
|
||||||
import {Link} from "react-router-dom";
|
import {Link} from "react-router-dom";
|
||||||
|
import {Profile} from "@void-cat/api";
|
||||||
|
|
||||||
import {DefaultAvatar} from "Const";
|
import {DefaultAvatar} from "Const";
|
||||||
import {Profile} from "../../Api";
|
|
||||||
|
|
||||||
const DefaultSize = 64;
|
const DefaultSize = 64;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
import {useState} from "react";
|
import {useState} from "react";
|
||||||
import {useDispatch, useSelector} from "react-redux";
|
import {useDispatch, useSelector} from "react-redux";
|
||||||
import HCaptcha from "@hcaptcha/react-hcaptcha";
|
import HCaptcha from "@hcaptcha/react-hcaptcha";
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
import {useSelector} from "react-redux";
|
import {useSelector} from "react-redux";
|
||||||
|
import {VoidApi} from "@void-cat/api";
|
||||||
|
|
||||||
import {RootState} from "Store";
|
import {RootState} from "Store";
|
||||||
import {VoidApi} from "Api";
|
|
||||||
import {ApiHost} from "Const";
|
import {ApiHost} from "Const";
|
||||||
|
|
||||||
export default function useApi() {
|
export default function useApi() {
|
@ -1,5 +1,5 @@
|
|||||||
import {createSlice, PayloadAction} from "@reduxjs/toolkit";
|
import {createSlice, PayloadAction} from "@reduxjs/toolkit";
|
||||||
import {Profile} from "./Api";
|
import {Profile} from "@void-cat/api";
|
||||||
|
|
||||||
interface LoginStore {
|
interface LoginStore {
|
||||||
jwt?: string
|
jwt?: string
|
@ -1,4 +1,4 @@
|
|||||||
import "./Donate.css"
|
import "./Donate.css"
|
||||||
import {useState} from "react";
|
import {useState} from "react";
|
||||||
|
|
||||||
export function Donate() {
|
export function Donate() {
|
@ -2,6 +2,7 @@ import "./FilePreview.css";
|
|||||||
import {Fragment, useEffect, useState} from "react";
|
import {Fragment, useEffect, useState} from "react";
|
||||||
import {useParams} from "react-router-dom";
|
import {useParams} from "react-router-dom";
|
||||||
import {Helmet} from "react-helmet";
|
import {Helmet} from "react-helmet";
|
||||||
|
import {PaymentOrder, VoidFileResponse, StreamEncryption} from "@void-cat/api";
|
||||||
|
|
||||||
import {TextPreview} from "../Components/FilePreview/TextPreview";
|
import {TextPreview} from "../Components/FilePreview/TextPreview";
|
||||||
import {FileEdit} from "../Components/FileEdit/FileEdit";
|
import {FileEdit} from "../Components/FileEdit/FileEdit";
|
||||||
@ -12,7 +13,6 @@ import {useFileTransfer} from "../Components/Shared/FileTransferHook";
|
|||||||
import Icon from "../Components/Shared/Icon";
|
import Icon from "../Components/Shared/Icon";
|
||||||
|
|
||||||
import useApi from "Hooks/UseApi";
|
import useApi from "Hooks/UseApi";
|
||||||
import {PaymentOrder, VoidFileResponse, StreamEncryption} from "Api";
|
|
||||||
import {FormatBytes} from "Util";
|
import {FormatBytes} from "Util";
|
||||||
import {ApiHost} from "Const";
|
import {ApiHost} from "Const";
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
import {useSelector} from "react-redux";
|
import {useSelector} from "react-redux";
|
||||||
|
|
||||||
import {Dropzone} from "../Components/FileUpload/Dropzone";
|
import {Dropzone} from "../Components/FileUpload/Dropzone";
|
||||||
import {GlobalStats} from "../Components/HomePage/GlobalStats";
|
import {GlobalStats} from "../Components/HomePage/GlobalStats";
|
@ -3,10 +3,10 @@ import {Fragment, useEffect, useState} from "react";
|
|||||||
import {useDispatch, useSelector} from "react-redux";
|
import {useDispatch, useSelector} from "react-redux";
|
||||||
import {default as moment} from "moment";
|
import {default as moment} from "moment";
|
||||||
import {useParams} from "react-router-dom";
|
import {useParams} from "react-router-dom";
|
||||||
|
import {Profile} from "@void-cat/api";
|
||||||
|
|
||||||
import useApi from "Hooks/UseApi";
|
import useApi from "Hooks/UseApi";
|
||||||
import {RootState} from "Store";
|
import {RootState} from "Store";
|
||||||
import {Profile} from "Api";
|
|
||||||
import {DefaultAvatar} from "Const";
|
import {DefaultAvatar} from "Const";
|
||||||
|
|
||||||
import {logout, setProfile as setGlobalProfile} from "../LoginState";
|
import {logout, setProfile as setGlobalProfile} from "../LoginState";
|
||||||
@ -25,7 +25,6 @@ export function ProfilePage() {
|
|||||||
const [emailCodeError, setEmailCodeError] = useState("");
|
const [emailCodeError, setEmailCodeError] = useState("");
|
||||||
const [newCodeSent, setNewCodeSent] = useState(false);
|
const [newCodeSent, setNewCodeSent] = useState(false);
|
||||||
|
|
||||||
const auth = useSelector((s: RootState) => s.login.jwt);
|
|
||||||
const localProfile = useSelector((s: RootState) => s.login.profile);
|
const localProfile = useSelector((s: RootState) => s.login.profile);
|
||||||
|
|
||||||
const canEdit = localProfile?.id === profile?.id;
|
const canEdit = localProfile?.id === profile?.id;
|
@ -13,7 +13,7 @@ export function UserLogin() {
|
|||||||
if (auth) {
|
if (auth) {
|
||||||
navigate("/");
|
navigate("/");
|
||||||
}
|
}
|
||||||
}, [auth]);
|
}, [auth, navigate]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="page">
|
<div className="page">
|
@ -1,5 +1,5 @@
|
|||||||
import {createSlice, PayloadAction} from "@reduxjs/toolkit";
|
import {createSlice, PayloadAction} from "@reduxjs/toolkit";
|
||||||
import {SiteInfoResponse} from "Api";
|
import {SiteInfoResponse} from "@void-cat/api";
|
||||||
|
|
||||||
export const SiteInfoState = createSlice({
|
export const SiteInfoState = createSlice({
|
||||||
name: "SiteInfo",
|
name: "SiteInfo",
|
@ -1,4 +1,4 @@
|
|||||||
import {configureStore} from "@reduxjs/toolkit";
|
import {configureStore} from "@reduxjs/toolkit";
|
||||||
import loginReducer from "./LoginState";
|
import loginReducer from "./LoginState";
|
||||||
import siteInfoReducer from "./SiteInfoStore";
|
import siteInfoReducer from "./SiteInfoStore";
|
||||||
|
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"files": {
|
"files": {
|
||||||
"main.js": "/static/js/bundle.js",
|
"main.js": "/static/js/bundle.js",
|
||||||
"index.html": "/index.html",
|
"index.html": "/index.html",
|
||||||
|