Skip to content

Commit

Permalink
FIX: % Saving calculation in compress screen (#33)
Browse files Browse the repository at this point in the history
* FIX: % Saving calculation in compress screen

* DOC: Update screenshot
  • Loading branch information
mazipan authored Jan 17, 2025
1 parent 62be141 commit ba27770
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 27 deletions.
Binary file modified screenshots/01-welcome-screen.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified screenshots/02-backdrop-editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified screenshots/03-image-compressor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified screenshots/mac-cannot-open.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified screenshots/mac-open-anyway.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
67 changes: 40 additions & 27 deletions src/compress/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@ export type ImageEventPayload = {
compressed: string;
};

export type PngFilter = 'MINSUM' | 'ENTROPY' | 'BRUTE_FORCE'
export type PngFilter = 'MINSUM' | 'ENTROPY' | 'BRUTE_FORCE';

export const PngFilterEnum = {
MINSUM: 'MINSUM',
ENTROPY: 'ENTROPY',
BRUTE_FORCE: 'BRUTE_FORCE'
} as const
BRUTE_FORCE: 'BRUTE_FORCE',
} as const;

export type Settings = {
quality: number;
overwrite: boolean;
filter: PngFilter
filter: PngFilter;
};

export interface CompressAppState {
Expand All @@ -38,9 +38,9 @@ export interface CompressAppState {
isProcessing: boolean;
settings: Settings;

setSettingQuality: (payload: number) => void
toggleSettingOverwrite: () => void
setSettingFilter: (payload: PngFilter) => void
setSettingQuality: (payload: number) => void;
toggleSettingOverwrite: () => void;
setSettingFilter: (payload: PngFilter) => void;

addImage: (payload: string) => void;
setImages: (payload: ImageStat[]) => void;
Expand Down Expand Up @@ -69,6 +69,25 @@ export async function toImageStat(src: string): Promise<ImageStat | null> {
};
}

export const calculateSaving = ({
origin,
compressed,
}: {
origin: number;
compressed: number;
}): number => {
let saving = 0;

if (origin === compressed) {
// Do nothing
} else if (compressed < origin) {
saving = ((origin - compressed) / origin) * 100;
} else {
saving = -(((compressed - origin) / origin) * 100);
}

return saving;
};
export const useCompressAppStore = create<CompressAppState>()(
persist(
(set, get) => ({
Expand All @@ -79,35 +98,34 @@ export const useCompressAppStore = create<CompressAppState>()(
settings: {
overwrite: false,
quality: 70,
filter: 'MINSUM'
filter: 'MINSUM',
},

setSettingQuality: (payload) => {
set((state) => ({
settings: {
...state.settings,
quality: payload
}
}))
quality: payload,
},
}));
},


toggleSettingOverwrite: () => {
set((state) => ({
settings: {
...state.settings,
overwrite: !state.settings.overwrite
}
}))
overwrite: !state.settings.overwrite,
},
}));
},

setSettingFilter: (payload) => {
set((state) => ({
settings: {
...state.settings,
filter: payload
}
}))
filter: payload,
},
}));
},

addImage: async (payload) => {
Expand Down Expand Up @@ -167,15 +185,10 @@ export const useCompressAppStore = create<CompressAppState>()(

const pSrc = convertFileSrc(payload.compressed);
const newSize = await getImageSize(pSrc);
let saving = 0;

if (newSize === matchImage.file_size) {
// Do nothing
} else if (newSize < matchImage.file_size) {
saving = (newSize / matchImage.file_size) * 100;
} else {
saving = -((newSize / matchImage.file_size) * 100);
}
const saving = calculateSaving({
origin: matchImage.file_size,
compressed: newSize,
});

set((state) => ({
images: state.images.map((i) => {
Expand Down

0 comments on commit ba27770

Please sign in to comment.