passforios/pass/Helpers/SecurePasteboard.swift

44 lines
1.5 KiB
Swift
Raw Normal View History

//
// SecurePasteboard.swift
// pass
//
// Created by Yishi Lin on 2017/7/27.
// Copyright © 2017 Bob Sun. All rights reserved.
//
import Foundation
import UIKit
class SecurePasteboard {
public static let shared = SecurePasteboard()
2019-05-01 17:49:27 +02:00
private var backgroundTaskID = UIBackgroundTaskIdentifier.invalid
2018-12-09 16:59:07 -08:00
func copy(textToCopy: String?, expirationTime: Double = 45) {
// copy to the pasteboard
UIPasteboard.general.string = textToCopy ?? ""
2018-12-09 16:59:07 -08:00
// clean the pasteboard after expirationTime
guard expirationTime > 0 else {
return
}
2018-12-09 16:59:07 -08:00
// exit the existing background task, if any
2019-05-01 17:49:27 +02:00
if backgroundTaskID != UIBackgroundTaskIdentifier.invalid {
UIApplication.shared.endBackgroundTask(UIBackgroundTaskIdentifier.invalid)
backgroundTaskID = UIBackgroundTaskIdentifier.invalid
}
2018-12-09 16:59:07 -08:00
backgroundTaskID = UIApplication.shared.beginBackgroundTask(expirationHandler: { [weak self] in
UIPasteboard.general.string = ""
2019-05-01 17:49:27 +02:00
UIApplication.shared.endBackgroundTask(UIBackgroundTaskIdentifier.invalid)
self?.backgroundTaskID = UIBackgroundTaskIdentifier.invalid
})
2018-12-09 16:59:07 -08:00
DispatchQueue.global(qos: .utility).asyncAfter(deadline: .now() + expirationTime) { [weak self] in
UIPasteboard.general.string = ""
2019-05-01 17:49:27 +02:00
UIApplication.shared.endBackgroundTask(UIBackgroundTaskIdentifier.invalid)
self?.backgroundTaskID = UIBackgroundTaskIdentifier.invalid
}
}
}