mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-14 09:39:15 +00:00
Restore compressor settings after load via API
This commit is contained in:
@@ -107,11 +107,25 @@ export default class App extends Component<Props, State> {
|
||||
|
||||
private exposeAPI() {
|
||||
const api = {
|
||||
setFile: (blob: Blob, name: string) => {
|
||||
return new Promise((resolve) => {
|
||||
this.setState({ file: new File([blob], name) });
|
||||
document.addEventListener('squooshingdone', () => resolve(), { once: true });
|
||||
setFile: async (blob: Blob, name: string) => {
|
||||
let oldCompressorState = this.compressInstance && this.compressInstance.state;
|
||||
await new Promise((resolve) => {
|
||||
this.setState({ file: new File([blob], name) }, resolve);
|
||||
});
|
||||
await new Promise((resolve) => {
|
||||
document.addEventListener('squooshingdone', resolve, { once: true });
|
||||
});
|
||||
if (oldCompressorState) {
|
||||
let newState = this.compressInstance!.state;
|
||||
[0, 1].forEach((index) => {
|
||||
oldCompressorState = cleanMerge(oldCompressorState!, `images.${index}`, {
|
||||
loading: false,
|
||||
data: undefined,
|
||||
});
|
||||
newState = cleanSet(newState, `images.${index}`, oldCompressorState.images[index]);
|
||||
});
|
||||
this.compressInstance!.setState(newState);
|
||||
}
|
||||
},
|
||||
getBlob: async (side: 0 | 1) => {
|
||||
if (!this.state.file || !this.compressInstance) {
|
||||
|
||||
Reference in New Issue
Block a user