Add AppendableBuffer class and modify pipeFetchLog function
This commit is contained in:
@@ -1340,8 +1340,36 @@ if(Capacitor.isNativePlatform()){
|
|||||||
streamedFetchListening = true
|
streamedFetchListening = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class AppendableBuffer{
|
||||||
|
buffer:Uint8Array
|
||||||
|
constructor(){
|
||||||
|
this.buffer = new Uint8Array(0)
|
||||||
|
}
|
||||||
|
append(data:Uint8Array){
|
||||||
|
const newBuffer = new Uint8Array(this.buffer.length + data.length)
|
||||||
|
newBuffer.set(this.buffer, 0)
|
||||||
|
newBuffer.set(data, this.buffer.length)
|
||||||
|
this.buffer = newBuffer
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const pipeFetchLog = (fetchLogIndex:number, readableStream:ReadableStream<Uint8Array>) => {
|
const pipeFetchLog = (fetchLogIndex:number, readableStream:ReadableStream<Uint8Array>) => {
|
||||||
const textDecoder = new TextDecoderStream()
|
let textDecoderBuffer = new AppendableBuffer()
|
||||||
|
let textDecoderPointer = 0
|
||||||
|
const textDecoder = TextDecoderStream ? (new TextDecoderStream()) : new TransformStream<Uint8Array, string>({
|
||||||
|
transform(chunk, controller) {
|
||||||
|
try{
|
||||||
|
textDecoderBuffer.append(chunk)
|
||||||
|
const decoded = new TextDecoder('utf-8', {
|
||||||
|
fatal: true
|
||||||
|
}).decode(textDecoderBuffer.buffer)
|
||||||
|
let newString = decoded.slice(textDecoderPointer)
|
||||||
|
textDecoderPointer = decoded.length
|
||||||
|
controller.enqueue(newString)
|
||||||
|
}
|
||||||
|
catch{}
|
||||||
|
}
|
||||||
|
})
|
||||||
textDecoder.readable.pipeTo(new WritableStream({
|
textDecoder.readable.pipeTo(new WritableStream({
|
||||||
write(chunk) {
|
write(chunk) {
|
||||||
fetchLog[fetchLogIndex].response += chunk
|
fetchLog[fetchLogIndex].response += chunk
|
||||||
|
|||||||
Reference in New Issue
Block a user