Skip to content

Commit e93cf05

Browse files
Salakarlaurenzlong
authored andcommitted
[storage-resize-images] Fix bug where resized images sometimes get resized again.
1 parent 4ecd09c commit e93cf05

File tree

4 files changed

+15
-18
lines changed

4 files changed

+15
-18
lines changed

storage-resize-images/functions/lib/index.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,16 @@ exports.generateResizedImage = functions.storage.object().onFinalize((object) =>
4848
logs.contentTypeInvalid(contentType);
4949
return;
5050
}
51+
if (object.metadata && object.metadata.resizedImage === "true") {
52+
logs.imageAlreadyResized();
53+
return;
54+
}
5155
const bucket = admin.storage().bucket(object.bucket);
5256
const filePath = object.name; // File path in the bucket.
5357
const fileDir = path.dirname(filePath);
5458
const fileName = path.basename(filePath);
5559
const fileExtension = path.extname(filePath);
5660
const fileNameWithoutExtension = fileName.slice(0, -fileExtension.length);
57-
const isResizedImage = validators.isResizedImage(fileNameWithoutExtension);
58-
if (isResizedImage) {
59-
logs.imageAlreadyResized();
60-
return;
61-
}
6261
let originalFile;
6362
try {
6463
originalFile = path.join(os.tmpdir(), filePath);
@@ -117,6 +116,9 @@ const resizeImage = ({ bucket, originalFile, fileDir, fileNameWithoutExtension,
117116
// Cloud Storage files.
118117
const metadata = {
119118
contentType: contentType,
119+
metadata: {
120+
resizedImage: "true",
121+
},
120122
};
121123
if (config_1.default.cacheControlHeader) {
122124
metadata.cacheControl = config_1.default.cacheControlHeader;

storage-resize-images/functions/lib/validators.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,4 @@
1515
* limitations under the License.
1616
*/
1717
Object.defineProperty(exports, "__esModule", { value: true });
18-
const suffixRegex = /_\d+x\d+$/;
1918
exports.isImage = (contentType) => contentType.startsWith("image/");
20-
exports.isResizedImage = (fileName) => suffixRegex.test(fileName);

storage-resize-images/functions/src/index.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,18 @@ export const generateResizedImage = functions.storage.object().onFinalize(
5252
return;
5353
}
5454

55+
if (object.metadata && object.metadata.resizedImage === "true") {
56+
logs.imageAlreadyResized();
57+
return;
58+
}
59+
5560
const bucket = admin.storage().bucket(object.bucket);
5661
const filePath = object.name; // File path in the bucket.
5762
const fileDir = path.dirname(filePath);
5863
const fileName = path.basename(filePath);
5964
const fileExtension = path.extname(filePath);
6065
const fileNameWithoutExtension = fileName.slice(0, -fileExtension.length);
6166

62-
const isResizedImage = validators.isResizedImage(fileNameWithoutExtension);
63-
if (isResizedImage) {
64-
logs.imageAlreadyResized();
65-
return;
66-
}
67-
6867
let originalFile;
6968
try {
7069
originalFile = path.join(os.tmpdir(), filePath);
@@ -150,6 +149,9 @@ const resizeImage = async ({
150149
// Cloud Storage files.
151150
const metadata: any = {
152151
contentType: contentType,
152+
metadata: {
153+
resizedImage: "true",
154+
},
153155
};
154156
if (config.cacheControlHeader) {
155157
metadata.cacheControl = config.cacheControlHeader;

storage-resize-images/functions/src/validators.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,5 @@
1414
* limitations under the License.
1515
*/
1616

17-
const suffixRegex = /_\d+x\d+$/;
18-
1917
export const isImage = (contentType: string): boolean =>
2018
contentType.startsWith("image/");
21-
22-
export const isResizedImage = (fileName: string): boolean =>
23-
suffixRegex.test(fileName);

0 commit comments

Comments
 (0)