mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-06-27 21:05:53 +00:00
4.20.61
This was a small update until Twitch ripped out half their CSS. * Added: Cross-Origin Storage Bridge for settings, better synchronizing settings on sub-domains with support for binary blobs at the cost of slightly increased start-up time. * Fixed: Rendering issues caused by missing CSS. * Fixed: FFZ Control Center button not appearing on dashboard pages, and appearing in the incorrect place. * Changed: Work towards splitting modules into their own JS files for a faster, more asynchronous startup. * API Added: Methods for serializing and deserializing Blobs for transmission across postMessage.
This commit is contained in:
parent
2c5937c8af
commit
264c375f13
88 changed files with 1685 additions and 500 deletions
59
src/utilities/blobs.js
Normal file
59
src/utilities/blobs.js
Normal file
|
@ -0,0 +1,59 @@
|
|||
'use strict';
|
||||
|
||||
export function isValidBlob(blob) {
|
||||
return blob instanceof Blob || blob instanceof File || blob instanceof ArrayBuffer || blob instanceof Uint8Array;
|
||||
}
|
||||
|
||||
export async function serializeBlob(blob) {
|
||||
if ( ! blob )
|
||||
return null;
|
||||
|
||||
if ( blob instanceof Blob )
|
||||
return {
|
||||
type: 'blob',
|
||||
mime: blob.type,
|
||||
buffer: await blob.arrayBuffer(),
|
||||
}
|
||||
|
||||
if ( blob instanceof File )
|
||||
return {
|
||||
type: 'file',
|
||||
mime: blob.type,
|
||||
name: blob.name,
|
||||
modified: blob.lastModified,
|
||||
buffer: await blob.arrayBuffer()
|
||||
}
|
||||
|
||||
if ( blob instanceof ArrayBuffer )
|
||||
return {
|
||||
type: 'ab',
|
||||
buffer: blob
|
||||
}
|
||||
|
||||
if ( blob instanceof Uint8Array )
|
||||
return {
|
||||
type: 'u8',
|
||||
buffer: blob.buffer
|
||||
}
|
||||
|
||||
throw new TypeError('Invalid type');
|
||||
}
|
||||
|
||||
export function deserializeBlob(data) {
|
||||
if ( ! data || ! data.type )
|
||||
return null;
|
||||
|
||||
if ( data.type === 'blob' )
|
||||
return new Blob([data.buffer], {type: data.mime});
|
||||
|
||||
if ( data.type === 'file' )
|
||||
return new File([data.buffer], data.name, {type: data.mime, lastModified: data.modified});
|
||||
|
||||
if ( data.type === 'ab' )
|
||||
return data.buffer;
|
||||
|
||||
if ( data.type === 'u8' )
|
||||
return new Uint8Array(data.buffer);
|
||||
|
||||
throw new TypeError('Invalid type');
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue