refactor: optimized loading of font icons on the web side (#596)

* refactor: optimized loading of font icons on the web side

* refactor: update
This commit is contained in:
ayangweb
2025-06-03 11:22:22 +08:00
committed by GitHub
parent f557f7e780
commit 5046754534
4 changed files with 13 additions and 38 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,3 @@
import { useAppStore } from "@/stores/appStore";
import logoImg from "@/assets/icon.svg";
interface FontIconProps {
name: string;
className?: string;
@@ -8,17 +5,11 @@ interface FontIconProps {
}
const FontIcon = ({ name, className, style, ...rest }: FontIconProps) => {
const isTauri = useAppStore((state) => state.isTauri);
if (isTauri) {
return (
<svg className={`icon ${className || ""}`} style={style} {...rest}>
<use xlinkHref={`#${name}`} />
</svg>
);
} else {
return <img src={logoImg} className={className} alt={"coco"} />;
}
return (
<svg className={`icon ${className || ""}`} style={style} {...rest}>
<use xlinkHref={`#${name}`} />
</svg>
);
};
export default FontIcon;

View File

@@ -1,9 +1,9 @@
import { useEffect, useState } from "react";
import { useEffect } from "react";
const useScript = (src: string, onError?: () => void) => {
useEffect(() => {
if (document.querySelector(`script[src="${src}"]`)) {
return; // Prevent duplicate script loading
return;
}
const script = document.createElement("script");
@@ -12,7 +12,8 @@ const useScript = (src: string, onError?: () => void) => {
script.onerror = () => {
console.error(`Failed to load script: ${src}`);
if (onError) onError();
onError?.();
};
document.body.appendChild(script);
@@ -26,23 +27,8 @@ const useScript = (src: string, onError?: () => void) => {
export default useScript;
export const useIconfontScript = () => {
const appStore = JSON.parse(localStorage.getItem("app-store") || "{}");
const [_useLocalFallback, setUseLocalFallback] = useState(false);
let baseURL = appStore.state?.endpoint_http;
if (!baseURL || baseURL === "undefined") {
baseURL = "";
}
useScript("/assets/fonts/icons/iconfont.js");
useScript(`${baseURL}/assets/fonts/icons/iconfont.js`, () => {
console.log(
"Remote iconfont loading failed, falling back to local resource"
);
setUseLocalFallback(true);
});
useScript("/assets/fonts/icons/extension.js");
// Coco Server Icons
useScript("https://at.alicdn.com/t/c/font_4878526_cykw3et0ezd.js");
// Coco App Icons
useScript("https://at.alicdn.com/t/c/font_4934333_j1t3b1xyxkk.js");
};