passforios/pass/Helpers/SecurePasteboard.swift

44 lines
1.4 KiB
Swift
Raw Permalink Normal View History

//
// SecurePasteboard.swift
// pass
//
// Created by Yishi Lin on 2017/7/27.
// Copyright © 2017 Bob Sun. All rights reserved.
//
import UIKit
2021-12-31 07:35:17 +01:00
class SecurePasteboard {
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 { [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
}
}
}