Skip to content

Commit

Permalink
Add metadata.customAttributes field
Browse files Browse the repository at this point in the history
Summary:
`customAttributes` will be used by the UI Debugger to pass styleID for Bloks model attributes.
(replicating corresponding [Android implementation](https://www.internalfb.com/code/fbsource/[33c33fa7f582]/xplat/sonar/android/src/facebook/java/com/facebook/flipper/uidebugger/bloks/descriptors/BloksDebugComponentDescriptor.kt?lines=138-139%2C170-171))

Reviewed By: antonk52

Differential Revision: D47494013

fbshipit-source-id: 257387d4af94235b23d636047326532d7071e8dd
  • Loading branch information
Ivan Misuno authored and facebook-github-bot committed Jul 21, 2023
1 parent b22ac16 commit 1753581
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,15 @@ FOUNDATION_EXPORT NSString* const UIDEBUGGER_METADATA_TYPE_DOCUMENTATION;
- (UIDMetadataId)registerMetadataWithType:(NSString*)type
name:(NSString*)name
isMutable:(bool)isMutable
definedBy:(UIDMetadataId)definedById;
definedBy:(UIDMetadataId)parent;

- (UIDMetadataId)registerMetadataWithType:(NSString*)type
name:(NSString*)name
isMutable:(bool)isMutable
definedBy:(UIDMetadataId)parent
customAttributes:
(nullable NSDictionary<NSString*, id>*)
customAttributes;

- (NSDictionary<UIDMetadataId, UIDMetadata*>*)extractPendingMetadata;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,34 @@ - (UIDMetadataId)registerMetadataWithType:(NSString*)type
name:(NSString*)name
isMutable:(bool)isMutable
definedBy:(UIDMetadataId)parent {
return [self registerMetadataWithType:type
name:name
isMutable:isMutable
definedBy:parent
customAttributes:nil];
}

- (UIDMetadataId)registerMetadataWithType:(NSString*)type
name:(NSString*)name
isMutable:(bool)isMutable
definedBy:(UIDMetadataId)parent
customAttributes:
(nullable NSDictionary<NSString*, id>*)
customAttributes {
if (!parent) {
parent = _rootId;
}

UIDMetadataId identifier = @(++_generator);
UIDMetadata* metadata = [[UIDMetadata alloc] initWithIdentifier:identifier
type:type
name:name
isMutable:isMutable
parent:parent];
UIDMetadata* metadata =
[[UIDMetadata alloc] initWithIdentifier:identifier
type:type
name:name
isMutable:isMutable
parent:parent
possibleValues:nil
tags:nil
customAttributes:customAttributes];

[_lock lock];
if (![_register objectForKey:parent]) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,32 +23,33 @@ typedef NSNumber* UIDMetadataId;
*/
@interface UIDMetadata : NSObject

#pragma mark - Included in the wire protocol

@property(nonatomic, readonly) UIDMetadataId identifier;
@property(nonatomic, strong, readonly) NSString* type;
@property(nonatomic, readonly) UIDMetadataId parent;
@property(nonatomic, strong, readonly) NSString* name;
@property(nonatomic, readonly) bool isMutable;
@property(nonatomic, strong, readonly)
@property(nonatomic, readonly, nullable)
NSDictionary<NSString*, id>* customAttributes;

#pragma mark - Not included in the wire protocol

@property(nonatomic, readonly) UIDMetadataId parent;
@property(nonatomic, strong, readonly, nullable)
NSSet<UIDInspectableValue*>* possibleValues;
@property(nonatomic, strong, readonly) NSSet<NSString*>* tags;

- (instancetype)initWithIdentifier:(UIDMetadataId)identifier
type:(NSString*)type
name:(NSString*)name;

- (instancetype)initWithIdentifier:(UIDMetadataId)identifier
type:(NSString*)type
name:(NSString*)name
isMutable:(bool)isMutable
parent:(UIDMetadataId)parent;

- (instancetype)initWithIdentifier:(UIDMetadataId)identifier
type:(NSString*)type
name:(NSString*)name
isMutable:(bool)isMutable
parent:(UIDMetadataId)parent
possibleValues:(NSSet<UIDInspectableValue*>*)possibleValues
tags:(NSSet<NSString*>*)tags;
@property(nonatomic, strong, readonly, nullable) NSSet<NSString*>* tags;

#pragma mark -

- (instancetype)
initWithIdentifier:(UIDMetadataId)identifier
type:(NSString*)type
name:(NSString*)name
isMutable:(bool)isMutable
parent:(UIDMetadataId)parent
possibleValues:(nullable NSSet<UIDInspectableValue*>*)possibleValues
tags:(nullable NSSet<NSString*>*)tags
customAttributes:(nullable NSDictionary<NSString*, id>*)customAttributes;
@end

NS_ASSUME_NONNULL_END
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,48 +12,25 @@

@implementation UIDMetadata

- (instancetype)initWithIdentifier:(UIDMetadataId)identifier
type:(NSString*)type
name:(NSString*)name {
return [self initWithIdentifier:identifier
type:type
name:name
isMutable:false
parent:@0
possibleValues:[NSSet set]
tags:[NSSet set]];
}

- (instancetype)initWithIdentifier:(UIDMetadataId)identifier
type:(NSString*)type
name:(NSString*)name
isMutable:(bool)isMutable
parent:(UIDMetadataId)parent {
return [self initWithIdentifier:identifier
type:type
name:name
isMutable:isMutable
parent:parent
possibleValues:[NSSet set]
tags:[NSSet set]];
}

- (instancetype)initWithIdentifier:(UIDMetadataId)identifier
type:(NSString*)type
name:(NSString*)name
isMutable:(bool)isMutable
parent:(UIDMetadataId)parent
possibleValues:(NSSet<UIDInspectableValue*>*)possibleValues
tags:(NSSet<NSString*>*)tags {
tags:(NSSet<NSString*>*)tags
customAttributes:
(nullable NSDictionary<NSString*, id>*)customAttributes {
self = [super init];
if (self) {
_identifier = identifier;
_type = type;
_name = name;
_isMutable = isMutable;
_parent = parent;
_possibleValues = possibleValues;
_tags = tags;
_parent = parent ?: @0;
_possibleValues = possibleValues ?: [NSSet set];
_tags = tags ?: [NSSet set];
_customAttributes = customAttributes;
}
return self;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,28 @@

#if FB_SONARKIT_ENABLED

#import "NSDictionary+Foundation.h"
#import "NSSet+Foundation.h"
#import "UIDMetadata+Foundation.h"

FB_LINKABLE(UIDMetadata_Foundation)
@implementation UIDMetadata (Foundation)

- (id)toFoundation {
return @{
NSMutableDictionary* result = [NSMutableDictionary dictionary];

[result addEntriesFromDictionary:@{
@"id" : self.identifier,
@"type" : self.type,
@"name" : self.name,
@"mutable" : [NSNumber numberWithBool:self.isMutable],
};
}];

if (self.customAttributes != nil) {
result[@"customAttributes"] = [self.customAttributes toFoundation];
}

return [result copy];
}

@end
Expand Down

0 comments on commit 1753581

Please sign in to comment.