Browse Source

fix: safari can not in (#1590)

Joel 1 year ago
parent
commit
d6a6697891
4 changed files with 2 additions and 32 deletions
  1. 1 3
      web/global.d.ts
  2. 0 1
      web/package.json
  3. 1 7
      web/service/base.ts
  4. 0 21
      web/utils/stream.ts

+ 1 - 3
web/global.d.ts

@@ -1,5 +1,3 @@
 declare module 'lamejs';
 declare module 'react-18-input-autosize';
-declare module 'fetch-readablestream' {
-  export default function fetchReadableStream(url: string, options?: RequestInit): Promise<Response>
-}
+

+ 0 - 1
web/package.json

@@ -36,7 +36,6 @@
     "echarts": "^5.4.1",
     "echarts-for-react": "^3.0.2",
     "emoji-mart": "^5.5.2",
-    "fetch-readablestream": "^0.2.0",
     "i18next": "^22.4.13",
     "i18next-resources-to-backend": "^1.1.3",
     "immer": "^9.0.19",

+ 1 - 7
web/service/base.ts

@@ -1,11 +1,8 @@
-import fetchStream from 'fetch-readablestream'
 import { API_PREFIX, IS_CE_EDITION, PUBLIC_API_PREFIX } from '@/config'
 import Toast from '@/app/components/base/toast'
 import type { MessageEnd, MessageReplace, ThoughtItem } from '@/app/components/app/chat/type'
-import { isSupportNativeFetchStream } from '@/utils/stream'
 
 const TIME_OUT = 100000
-const supportNativeFetchStream = isSupportNativeFetchStream()
 
 const ContentType = {
   json: 'application/json',
@@ -223,9 +220,6 @@ const baseFetch = <T>(
   if (body && bodyStringify)
     options.body = JSON.stringify(body)
 
-  // for those do not support native fetch stream, we use fetch-readablestream as polyfill
-  const doFetch = supportNativeFetchStream ? globalThis.fetch : fetchStream
-
   // Handle timeout
   return Promise.race([
     new Promise((resolve, reject) => {
@@ -234,7 +228,7 @@ const baseFetch = <T>(
       }, TIME_OUT)
     }),
     new Promise((resolve, reject) => {
-      doFetch(urlWithPrefix, options as RequestInit)
+      globalThis.fetch(urlWithPrefix, options as RequestInit)
         .then((res) => {
           const resClone = res.clone()
           // Error handler

+ 0 - 21
web/utils/stream.ts

@@ -1,21 +0,0 @@
-// https://developer.chrome.com/articles/fetch-streaming-requests/#feature-detection
-export const isSupportNativeFetchStream = () => {
-  const supportsRequestStreams = (() => {
-    let duplexAccessed = false
-
-    const params = {
-      body: new ReadableStream(),
-      method: 'POST',
-      get duplex() {
-        duplexAccessed = true
-        return 'half'
-      },
-    }
-
-    const hasContentType = new Request('', params).headers.has('Content-Type')
-
-    return duplexAccessed && !hasContentType
-  })()
-
-  return supportsRequestStreams
-}