From 605db6b7887b9f916f50bec2eceef1271761babc Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 28 Jun 2017 17:06:45 -1000 Subject: [PATCH] Fix up deleteAttachments method since making attachmentFolder dispatchOnce // FREEBIE --- src/Messages/Attachments/TSAttachmentStream.m | 22 +++++++++++++++++-- .../OWSDisappearingMessageFinderTest.m | 5 +++-- tests/Storage/OWSOrphanedDataCleanerTest.m | 4 +++- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/Messages/Attachments/TSAttachmentStream.m b/src/Messages/Attachments/TSAttachmentStream.m index f3b1145b6..14860f960 100644 --- a/src/Messages/Attachments/TSAttachmentStream.m +++ b/src/Messages/Attachments/TSAttachmentStream.m @@ -294,10 +294,28 @@ NS_ASSUME_NONNULL_BEGIN + (void)deleteAttachments { NSError *error; - [[NSFileManager defaultManager] removeItemAtPath:[self attachmentsFolder] error:&error]; + + NSFileManager *fileManager = [NSFileManager defaultManager]; + + NSURL *fileURL = [NSURL fileURLWithPath:self.attachmentsFolder]; + NSArray *contents = + [fileManager contentsOfDirectoryAtURL:fileURL includingPropertiesForKeys:nil options:0 error:&error]; + if (error) { - DDLogError(@"Failed to delete attachment folder with error: %@", error.debugDescription); + OWSFail(@"failed to get contents of attachments folder: %@ with error: %@", self.attachmentsFolder, error); + return; } + + for (NSURL *url in contents) { + NSError *deletionError; + [fileManager removeItemAtURL:url error:&deletionError]; + if (deletionError) { + OWSFail(@"failed to remove item at path: %@ with error: %@", filePath, deletionError); + // continue to try to delete remaining items. + } + } + + return; } - (CGSize)calculateImageSize diff --git a/tests/Messages/OWSDisappearingMessageFinderTest.m b/tests/Messages/OWSDisappearingMessageFinderTest.m index c114790ac..1fe22aedc 100644 --- a/tests/Messages/OWSDisappearingMessageFinderTest.m +++ b/tests/Messages/OWSDisappearingMessageFinderTest.m @@ -1,5 +1,6 @@ -// Created by Michael Kirk on 9/23/16. -// Copyright © 2016 Open Whisper Systems. All rights reserved. +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// #import "NSDate+millisecondTimeStamp.h" #import "OWSDisappearingMessagesFinder.h" diff --git a/tests/Storage/OWSOrphanedDataCleanerTest.m b/tests/Storage/OWSOrphanedDataCleanerTest.m index 996441aa8..0f4bb7fff 100644 --- a/tests/Storage/OWSOrphanedDataCleanerTest.m +++ b/tests/Storage/OWSOrphanedDataCleanerTest.m @@ -76,6 +76,9 @@ - (void)testFilesWithoutInteractionsAreDeleted { + // sanity check + XCTAssertEqual(0, [TSAttachmentStream numberOfItemsInAttachmentsFolder]); + NSError *error; TSAttachmentStream *attachmentStream = [[TSAttachmentStream alloc] initWithContentType:@"image/jpeg" sourceFilename:nil]; [attachmentStream writeData:[NSData new] error:&error]; @@ -129,7 +132,6 @@ [attachmentStream writeData:[NSData new] error:&error]; // Intentionally not saved, because we want a lingering file. - NSString *orphanedFilePath = [attachmentStream filePath]; BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:orphanedFilePath]; XCTAssert(fileExists);