mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
3baeb981d9
Moved the JobRunner into SessionUtilitiesKit so it can be used by SessionSnodeKit Exposed a 'sharedLokiProject' value on UserDefaults to remove the hard-coded group name used everywhere Added "blocking" job support for 'OnLaunch' and 'OnActive' jobs to the JobRunner (will retry until it succeeds) Added the UpdateProfilePicture and RetrieveDefaultOpenGroupRooms jobs
47 lines
1.7 KiB
Swift
47 lines
1.7 KiB
Swift
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import Foundation
|
|
import GRDB
|
|
import SignalCoreKit
|
|
import SessionUtilitiesKit
|
|
|
|
public enum UpdateProfilePictureJob: JobExecutor {
|
|
public static let maxFailureCount: Int = -1
|
|
public static let requiresThreadId: Bool = false
|
|
public static let requiresInteractionId: Bool = false
|
|
|
|
public static func run(
|
|
_ job: Job,
|
|
success: @escaping (Job, Bool) -> (),
|
|
failure: @escaping (Job, Error?, Bool) -> (),
|
|
deferred: @escaping (Job) -> ()
|
|
) {
|
|
// Don't run when inactive or not in main app
|
|
guard (UserDefaults.sharedLokiProject?[.isMainAppActive]).defaulting(to: false) else {
|
|
deferred(job) // Don't need to do anything if it's not the main app
|
|
return
|
|
}
|
|
|
|
// Only re-upload the profile picture if enough time has passed since the last upload
|
|
guard
|
|
let lastProfilePictureUpload: Date = UserDefaults.standard[.lastProfilePictureUpload],
|
|
Date().timeIntervalSince(lastProfilePictureUpload) > (14 * 24 * 60 * 60)
|
|
else {
|
|
deferred(job)
|
|
return
|
|
}
|
|
|
|
// Note: The user defaults flag is updated in ProfileManager
|
|
let profile: Profile = Profile.fetchOrCreateCurrentUser()
|
|
let profilePicture: UIImage? = ProfileManager.profileAvatar(id: profile.id)
|
|
|
|
ProfileManager.updateLocal(
|
|
profileName: profile.name,
|
|
avatarImage: profilePicture,
|
|
requiredSync: true,
|
|
success: { success(job, false) },
|
|
failure: { error in failure(job, error, false) }
|
|
)
|
|
}
|
|
}
|