️ Impl.: Deferred Element - shouldCache

This commit is contained in:
Dominic Go 2022-06-24 05:33:53 +08:00
parent d2b4013c99
commit 8a8febb09d
2 changed files with 11 additions and 0 deletions

View File

@ -24,12 +24,14 @@ class RNIDeferredMenuElement: RNIMenuElement {
// -----------------------------
var deferredID: String;
var shouldCache: Bool;
override init?(dictionary: NSDictionary){
guard let deferredID = dictionary["deferredID"] as? String
else { return nil };
self.deferredID = deferredID;
self.shouldCache = dictionary["shouldCache"] as? Bool ?? true;
super.init(dictionary: dictionary);
@ -42,6 +44,14 @@ class RNIDeferredMenuElement: RNIMenuElement {
// make local copy to prevent using `[weak self]`
let deferredID = self.deferredID;
if !self.shouldCache,
#available(iOS 15.0, *) {
return UIDeferredMenuElement.uncached { completion in
handler(deferredID, completion);
};
};
return UIDeferredMenuElement { completion in
handler(deferredID, completion);
};

View File

@ -16,6 +16,7 @@ export type MenuAttributes = 'hidden' | 'disabled' | 'destructive';
export type DeferredMenuElementConfig = {
type: 'deferred';
deferredID: string;
shouldCache?: boolean;
};
export type MenuActionConfig = {