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