diff --git a/resources/assets/src/index.tsx b/resources/assets/src/index.tsx
index 50560ff5..fe945cf8 100644
--- a/resources/assets/src/index.tsx
+++ b/resources/assets/src/index.tsx
@@ -6,7 +6,7 @@ import routes from './scripts/route';
import './scripts/app';
-// eslint-disable-next-line @typescript-eslint/naming-convention
+// eslint-disable-next-line ts/naming-convention
Object.assign(window, {React, ReactDOM, $});
const route = routes.find(route =>
@@ -24,11 +24,12 @@ if (route) {
: null;
const root = createRoot(container!);
- root.render(
-
+ root.render((
+
-
-
- ,);
+
+
+
+ ));
}
}
diff --git a/resources/assets/src/views/skinlib/Upload.tsx b/resources/assets/src/views/skinlib/Upload.tsx
index d3a9f64d..41e0a54f 100644
--- a/resources/assets/src/views/skinlib/Upload.tsx
+++ b/resources/assets/src/views/skinlib/Upload.tsx
@@ -9,8 +9,8 @@ import {showModal, toast} from '@/scripts/notify';
import {isAlex} from '@/scripts/textureUtils';
import {TextureType} from '@/scripts/types';
import urls from '@/scripts/urls';
-import React, {useState} from 'react';
-import ReactDOM from 'react-dom';
+import {Suspense, useState} from 'react';
+import {createPortal} from 'react-dom';
const Previewer = React.lazy(async () => import('@/components/Viewer'));
@@ -19,7 +19,7 @@ function Upload() {
const [type, setType] = useState(TextureType.Steve);
const [isPrivate, setIsPrivate] = useState(false);
const [isUploading, setIsUploading] = useState(false);
- const [file, setFile] = useState(null);
+ const [file, setFile] = useState();
const [texture, setTexture] = useState('');
const nameRule = useBlessingExtra('rule');
const contentPolicy = useBlessingExtra('contentPolicy');
@@ -47,9 +47,13 @@ function Upload() {
};
const handleFileChange = async (event: React.ChangeEvent) => {
- const files = event.target.files!;
+ const {files} = event.target;
+ if (!files) {
+ return;
+ }
+
const [file] = files;
- if (file) {
+ if (file !== undefined) {
setFile(file);
if (!name && file.name.endsWith('.png')) {
setName(file.name.slice(0, -4));
@@ -239,14 +243,14 @@ function Upload() {
{container
- && ReactDOM.createPortal(
- }>
+ && createPortal(
+ }>
- ,
+ ,
container,
)}
>
diff --git a/resources/assets/src/views/user/Closet/Previewer.tsx b/resources/assets/src/views/user/Closet/Previewer.tsx
index af5a15bd..97832bfb 100644
--- a/resources/assets/src/views/user/Closet/Previewer.tsx
+++ b/resources/assets/src/views/user/Closet/Previewer.tsx
@@ -1,31 +1,35 @@
+import type {FC, ReactNode} from 'react';
import ViewerSkeleton from '@/components/ViewerSkeleton';
import useMount from '@/scripts/hooks/useMount';
-import React from 'react';
-import ReactDOM from 'react-dom';
+import {
+ lazy,
+ Suspense,
+} from 'react';
+import {createPortal} from 'react-dom';
-const Viewer = React.lazy(async () => import('@/components/Viewer'));
+const Viewer = lazy(async () => import('@/components/Viewer'));
type Props = {
skin?: string;
cape?: string;
- children: React.ReactNode;
+ children: ReactNode;
isAlex: boolean;
};
-const Previewer: React.FC = props => {
+const Previewer: FC = props => {
const container = useMount('#previewer');
- const skin = props.skin ? `${blessing.base_url}/textures/${props.skin}` : '';
- const cape = props.cape ? `${blessing.base_url}/textures/${props.cape}` : '';
+ const skin = props.skin === undefined ? '' : `${blessing.base_url}/textures/${props.skin}`;
+ const cape = props.cape === undefined ? '' : `${blessing.base_url}/textures/${props.cape}`;
return (
container
- && ReactDOM.createPortal(
- }>
+ && createPortal(
+ }>
{props.children}
- ,
+ ,
container,
)
);
diff --git a/resources/assets/src/views/user/Players/Previewer.tsx b/resources/assets/src/views/user/Players/Previewer.tsx
index 75eebcaf..0a12591e 100644
--- a/resources/assets/src/views/user/Players/Previewer.tsx
+++ b/resources/assets/src/views/user/Players/Previewer.tsx
@@ -2,7 +2,7 @@ import ViewerSkeleton from '@/components/ViewerSkeleton';
import useMount from '@/scripts/hooks/useMount';
import {t} from '@/scripts/i18n';
import React, {useState} from 'react';
-import ReactDOM from 'react-dom';
+import {createPortal} from 'react-dom';
import Viewer2d from './Viewer2d';
const Viewer3d = React.lazy(async () => import('@/components/Viewer'));
@@ -23,7 +23,7 @@ const Previewer: React.FC = props => {
};
const switcher = (
-