From 378e58431fdf33ad7699bc9c652ac211bbaff463 Mon Sep 17 00:00:00 2001 From: Michelle Linington Date: Wed, 5 Jan 2022 23:06:26 -0800 Subject: [PATCH] Bug fix for lost avatars on profile update Following a profile update, we need to reupload the avatar. Currently we're uploading the avatar by writing it to a temporary file and kicking off an NSURLSessionUploadTask. If Class A keys aren't available, we'd fail to complete the upload. This would remove the user's avatar from their profile. --- .../src/Messages/DeviceSyncing/OWSSyncGroupsMessage.swift | 2 +- SignalServiceKit/src/Network/API/OWSUpload.swift | 2 +- SignalServiceKit/src/Network/OWSURLSession.swift | 2 +- SignalServiceKit/src/Util/AudioWaveform.swift | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.swift b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.swift index a11b01844a..9bb0b465fd 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.swift +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.swift @@ -8,7 +8,7 @@ extension OWSSyncGroupsMessage { @objc public func buildPlainTextAttachmentFile(transaction: SDSAnyReadTransaction) -> URL? { - let fileUrl = OWSFileSystem.temporaryFileUrl() + let fileUrl = OWSFileSystem.temporaryFileUrl(isAvailableWhileDeviceLocked: true) guard let outputStream = OutputStream(url: fileUrl, append: false) else { owsFailDebug("Could not open outputStream.") return nil diff --git a/SignalServiceKit/src/Network/API/OWSUpload.swift b/SignalServiceKit/src/Network/API/OWSUpload.swift index f8ebe0dacd..7b6c280bac 100644 --- a/SignalServiceKit/src/Network/API/OWSUpload.swift +++ b/SignalServiceKit/src/Network/API/OWSUpload.swift @@ -676,7 +676,7 @@ public extension OWSUpload { let cdn0UrlSession = signalService.urlSessionForCdn(cdnNumber: 0) return firstly { () -> Promise in - let dataFileUrl = OWSFileSystem.temporaryFileUrl() + let dataFileUrl = OWSFileSystem.temporaryFileUrl(isAvailableWhileDeviceLocked: true) try data.write(to: dataFileUrl) let request = try cdn0UrlSession.buildRequest(uploadUrlPath, method: .post) diff --git a/SignalServiceKit/src/Network/OWSURLSession.swift b/SignalServiceKit/src/Network/OWSURLSession.swift index 2f094c055d..fc8843c1e7 100644 --- a/SignalServiceKit/src/Network/OWSURLSession.swift +++ b/SignalServiceKit/src/Network/OWSURLSession.swift @@ -1311,7 +1311,7 @@ extension OWSURLSession { textParts textPartsDictionary: OrderedDictionary, progress progressBlock: ProgressBlock? = nil) -> Promise { do { - let multipartBodyFileURL = OWSFileSystem.temporaryFileUrl() + let multipartBodyFileURL = OWSFileSystem.temporaryFileUrl(isAvailableWhileDeviceLocked: true) let boundary = OWSMultipartBody.createMultipartFormBoundary() // Order of form parts matters. let textParts = textPartsDictionary.map { (key, value) in diff --git a/SignalServiceKit/src/Util/AudioWaveform.swift b/SignalServiceKit/src/Util/AudioWaveform.swift index ea63dfb658..3bff3e738b 100644 --- a/SignalServiceKit/src/Util/AudioWaveform.swift +++ b/SignalServiceKit/src/Util/AudioWaveform.swift @@ -106,7 +106,7 @@ public class AudioWaveformManager: NSObject { // true and this path will no longer be hit. if !asset.isReadable, audioPath.hasSuffix("m4a") { - let symlinkPath = OWSFileSystem.temporaryFilePath(fileExtension: "aac") + let symlinkPath = OWSFileSystem.temporaryFilePath(fileExtension: "aac", isAvailableWhileDeviceLocked: true) do { try FileManager.default.createSymbolicLink(atPath: symlinkPath, withDestinationPath: audioPath)