Merge branch 'database-refactor' into emoji-reacts

This commit is contained in:
ryanzhao 2022-08-03 09:59:29 +10:00
commit 1c9d23eeb5
5 changed files with 51 additions and 41 deletions

View File

@ -759,7 +759,7 @@
FDC4381527B329CE00C60D73 /* NonceGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDC4381427B329CE00C60D73 /* NonceGenerator.swift */; };
FDC4381727B32EC700C60D73 /* Personalization.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDC4381627B32EC700C60D73 /* Personalization.swift */; };
FDC4382027B36ADC00C60D73 /* SOGSEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDC4381F27B36ADC00C60D73 /* SOGSEndpoint.swift */; };
FDC4382F27B383AF00C60D73 /* UpdateRegistrationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDC4382E27B383AF00C60D73 /* UpdateRegistrationResponse.swift */; };
FDC4382F27B383AF00C60D73 /* PushServerResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDC4382E27B383AF00C60D73 /* PushServerResponse.swift */; };
FDC4383827B3863200C60D73 /* VersionResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDC4383727B3863200C60D73 /* VersionResponse.swift */; };
FDC4384F27B4804F00C60D73 /* Header.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDC4384E27B4804F00C60D73 /* Header.swift */; };
FDC4385127B4807400C60D73 /* QueryParam.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDC4385027B4807400C60D73 /* QueryParam.swift */; };
@ -1810,7 +1810,7 @@
FDC4381427B329CE00C60D73 /* NonceGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonceGenerator.swift; sourceTree = "<group>"; };
FDC4381627B32EC700C60D73 /* Personalization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Personalization.swift; sourceTree = "<group>"; };
FDC4381F27B36ADC00C60D73 /* SOGSEndpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SOGSEndpoint.swift; sourceTree = "<group>"; };
FDC4382E27B383AF00C60D73 /* UpdateRegistrationResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateRegistrationResponse.swift; sourceTree = "<group>"; };
FDC4382E27B383AF00C60D73 /* PushServerResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushServerResponse.swift; sourceTree = "<group>"; };
FDC4383727B3863200C60D73 /* VersionResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VersionResponse.swift; sourceTree = "<group>"; };
FDC4383D27B4708600C60D73 /* Atomic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Atomic.swift; sourceTree = "<group>"; };
FDC4384E27B4804F00C60D73 /* Header.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Header.swift; sourceTree = "<group>"; };
@ -3820,7 +3820,7 @@
FDC4382D27B383A600C60D73 /* Models */ = {
isa = PBXGroup;
children = (
FDC4382E27B383AF00C60D73 /* UpdateRegistrationResponse.swift */,
FDC4382E27B383AF00C60D73 /* PushServerResponse.swift */,
);
path = Models;
sourceTree = "<group>";
@ -5232,7 +5232,7 @@
FD6A7A692818BE7300035AC1 /* RetrieveDefaultOpenGroupRoomsJob.swift in Sources */,
FD09798D27FD1D8900936362 /* DisappearingMessageConfiguration.swift in Sources */,
FDF0B75A2807F3A3004C14C5 /* MessageSenderError.swift in Sources */,
FDC4382F27B383AF00C60D73 /* UpdateRegistrationResponse.swift in Sources */,
FDC4382F27B383AF00C60D73 /* PushServerResponse.swift in Sources */,
FDC4386327B4D94E00C60D73 /* SOGSMessage.swift in Sources */,
FD245C692850666800B966DD /* ExpirationTimerUpdate.swift in Sources */,
FD42F9A8285064B800A0C77D /* PushNotificationAPI.swift in Sources */,
@ -6897,7 +6897,7 @@
CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 361;
CURRENT_PROJECT_VERSION = 363;
DEVELOPMENT_TEAM = SUQ8J2PCT7;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@ -6969,7 +6969,7 @@
CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 361;
CURRENT_PROJECT_VERSION = 363;
DEVELOPMENT_TEAM = SUQ8J2PCT7;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",

View File

@ -158,14 +158,12 @@ public class MediaView: UIView {
loadBlock = { [weak self] in
AssertIsOnMainThread()
guard let strongSelf = self else { return }
if animatedImageView.image != nil {
owsFailDebug("Unexpectedly already loaded.")
return
}
strongSelf.tryToLoadMedia(
self?.tryToLoadMedia(
loadMediaBlock: { applyMediaBlock in
guard attachment.isValid else {
self?.configure(forError: .invalid)
@ -328,6 +326,16 @@ public class MediaView: UIView {
}
private func configure(forError error: MediaError) {
// When there is a failure in the 'loadMediaBlock' closure this can be called
// on a background thread - rather than dispatching in every 'loadMediaBlock'
// usage we just do so here
guard Thread.isMainThread else {
DispatchQueue.main.async {
self.configure(forError: error)
}
return
}
let icon: UIImage
switch error {

View File

@ -0,0 +1,10 @@
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import Foundation
extension PushNotificationAPI {
struct PushServerResponse: Codable {
let code: Int
let message: String?
}
}

View File

@ -1,15 +0,0 @@
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import Foundation
extension PushNotificationAPI {
struct UpdateRegistrationResponse: Codable {
struct Body: Codable {
let code: Int
let message: String?
}
let status: Int
let body: Body
}
}

View File

@ -65,13 +65,13 @@ public final class PushNotificationAPI : NSObject {
request.httpBody = body
let promise: Promise<Void> = attempt(maxRetryCount: maxRetryCount, recoveringOn: DispatchQueue.global()) {
OnionRequestAPI.sendOnionRequest(request, to: server, using: .v2, with: serverPublicKey)
.map2 { _, response in
guard let response: UpdateRegistrationResponse = try? response?.decoded(as: UpdateRegistrationResponse.self) else {
OnionRequestAPI.sendOnionRequest(request, to: server, with: serverPublicKey)
.map2 { _, data in
guard let response: PushServerResponse = try? data?.decoded(as: PushServerResponse.self) else {
return SNLog("Couldn't unregister from push notifications.")
}
guard response.body.code != 0 else {
return SNLog("Couldn't unregister from push notifications due to error: \(response.body.message ?? "nil").")
guard response.code != 0 else {
return SNLog("Couldn't unregister from push notifications due to error: \(response.message ?? "nil").")
}
}
}
@ -127,13 +127,13 @@ public final class PushNotificationAPI : NSObject {
promises.append(
attempt(maxRetryCount: maxRetryCount, recoveringOn: DispatchQueue.global()) {
OnionRequestAPI.sendOnionRequest(request, to: server, using: .v2, with: serverPublicKey)
OnionRequestAPI.sendOnionRequest(request, to: server, with: serverPublicKey)
.map2 { _, data -> Void in
guard let response: UpdateRegistrationResponse = try? data?.decoded(as: UpdateRegistrationResponse.self) else {
guard let response: PushServerResponse = try? data?.decoded(as: PushServerResponse.self) else {
return SNLog("Couldn't register device token.")
}
guard response.body.code != 0 else {
return SNLog("Couldn't register device token due to error: \(response.body.message ?? "nil").")
guard response.code != 0 else {
return SNLog("Couldn't register device token due to error: \(response.message ?? "nil").")
}
userDefaults[.deviceToken] = hexEncodedToken
@ -193,13 +193,13 @@ public final class PushNotificationAPI : NSObject {
request.httpBody = body
let promise: Promise<Void> = attempt(maxRetryCount: maxRetryCount, recoveringOn: DispatchQueue.global()) {
OnionRequestAPI.sendOnionRequest(request, to: server, using: .v2, with: serverPublicKey)
.map2 { _, response in
guard let response: UpdateRegistrationResponse = try? response?.decoded(as: UpdateRegistrationResponse.self) else {
OnionRequestAPI.sendOnionRequest(request, to: server, with: serverPublicKey)
.map2 { _, data in
guard let response: PushServerResponse = try? data?.decoded(as: PushServerResponse.self) else {
return SNLog("Couldn't subscribe/unsubscribe for closed group: \(closedGroupPublicKey).")
}
guard response.body.code != 0 else {
return SNLog("Couldn't subscribe/unsubscribe for closed group: \(closedGroupPublicKey) due to error: \(response.body.message ?? "nil").")
guard response.code != 0 else {
return SNLog("Couldn't subscribe/unsubscribe for closed group: \(closedGroupPublicKey) due to error: \(response.message ?? "nil").")
}
}
}
@ -236,8 +236,15 @@ public final class PushNotificationAPI : NSObject {
let retryCount: UInt = (maxRetryCount ?? PushNotificationAPI.maxRetryCount)
let promise: Promise<Void> = attempt(maxRetryCount: retryCount, recoveringOn: queue) {
OnionRequestAPI.sendOnionRequest(request, to: server, using: .v2, with: serverPublicKey)
.map { _ in }
OnionRequestAPI.sendOnionRequest(request, to: server, with: serverPublicKey)
.map2 { _, data in
guard let response: PushServerResponse = try? data?.decoded(as: PushServerResponse.self) else {
return SNLog("Couldn't send push notification.")
}
guard response.code != 0 else {
return SNLog("Couldn't send push notification due to error: \(response.message ?? "nil").")
}
}
}
return promise