feat: support third party extensions (#572)

* refactor: support third party extensions

* fix tests

* fix: assistant_get error

* aaa

* bbb

* ccc

* ddd

* fix: aa

* fix: aa

* sss

* fix:asds

* eee

* refactor: loosen restriction of query string length

* fix: input auto

* feat: add ai overview trigger condition configuration

* refactor: continue chatting to select the corresponding mini-helper

* chore: settings width height

* aaa

---------

Co-authored-by: Steve Lau <stevelauc@outlook.com>
Co-authored-by: rain <15911122312@163.com>
This commit is contained in:
ayangweb
2025-05-30 17:18:52 +08:00
committed by GitHub
parent 51b0a2a545
commit c471a83821
75 changed files with 3674 additions and 1099 deletions

View File

@@ -1,4 +1,4 @@
import { useEffect, useState } from 'react';
import { useEffect, useState } from "react";
const useScript = (src: string, onError?: () => void) => {
useEffect(() => {
@@ -6,7 +6,7 @@ const useScript = (src: string, onError?: () => void) => {
return; // Prevent duplicate script loading
}
const script = document.createElement('script');
const script = document.createElement("script");
script.src = src;
script.async = true;
@@ -25,24 +25,27 @@ 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
let baseURL = appStore.state?.endpoint_http;
if (!baseURL || baseURL === "undefined") {
baseURL = "";
}
if (useLocalFallback || baseURL === "") {
useScript('/assets/fonts/icons/iconfont.js');
useScript("/assets/fonts/icons/iconfont.js");
return;
}
useScript(`${baseURL}/assets/fonts/icons/iconfont.js`, () => {
console.log("Remote iconfont loading failed, falling back to local resource");
console.log(
"Remote iconfont loading failed, falling back to local resource"
);
setUseLocalFallback(true);
});
useScript("/assets/fonts/icons/extension.js");
};