From 89911acd845020c0afb4a8aafee0ee25551a2033 Mon Sep 17 00:00:00 2001 From: Roman Gorbunov Date: Thu, 25 Jul 2019 03:59:05 -0700 Subject: [PATCH] Made a DataStorage for live editing in flipper Summary: Theadsafe Data Storage for new insets in CKInsetComponent Reviewed By: kevin0571 Differential Revision: D16338091 fbshipit-source-id: 3b77652a4d08cfebce115a606af3fc3440a1aca0 --- .../FKDataStorageForLiveEditing.h | 16 ++++++++++++ .../FKDataStorageForLiveEditing.mm | 26 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutComponentKitSupport/FKDataStorageForLiveEditing.h create mode 100644 iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutComponentKitSupport/FKDataStorageForLiveEditing.mm diff --git a/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutComponentKitSupport/FKDataStorageForLiveEditing.h b/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutComponentKitSupport/FKDataStorageForLiveEditing.h new file mode 100644 index 000000000..157de45c8 --- /dev/null +++ b/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutComponentKitSupport/FKDataStorageForLiveEditing.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the LICENSE + * file in the root directory of this source tree. + */ +#import + + /** DataStorage uses to map global IDs of nodes to data which we want to store +to prodice live editing*/ +@interface FKDataStorageForLiveEditing : NSObject + +- (id)dataForTreeNodeIdentifier:(CKTreeNodeIdentifier)treeNodeIdentifier; +- (void)setData:(id)value forTreeNodeIdentifier:(CKTreeNodeIdentifier)treeNodeIdentifier; + +@end diff --git a/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutComponentKitSupport/FKDataStorageForLiveEditing.mm b/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutComponentKitSupport/FKDataStorageForLiveEditing.mm new file mode 100644 index 000000000..88e425c9d --- /dev/null +++ b/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutComponentKitSupport/FKDataStorageForLiveEditing.mm @@ -0,0 +1,26 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the LICENSE + * file in the root directory of this source tree. + */ +#import "FKDataStorageForLiveEditing.h" +#import +#import + +@implementation FKDataStorageForLiveEditing { + std::unordered_map _data; + std::mutex _mutex; +} + +- (void)setData:(id)value forTreeNodeIdentifier:(CKTreeNodeIdentifier)treeNodeIdentifier { + std::lock_guard lock(_mutex); + _data[treeNodeIdentifier] = value; +} + +- (id)dataForTreeNodeIdentifier:(CKTreeNodeIdentifier)treeNodeIdentifier { + std::lock_guard lock(_mutex); + return (_data.count(treeNodeIdentifier) ? _data[treeNodeIdentifier] : nil); +} + +@end