diff --git a/iOS/Plugins/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin.h b/iOS/Plugins/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin.h new file mode 100644 index 000000000..db09070de --- /dev/null +++ b/iOS/Plugins/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import + +@interface FlipperKitDatabasesPlugin : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)sharedInstance; + +@end diff --git a/iOS/Plugins/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin.mm b/iOS/Plugins/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin.mm new file mode 100644 index 000000000..a5cfaf72d --- /dev/null +++ b/iOS/Plugins/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin/FlipperKitDatabasesPlugin.mm @@ -0,0 +1,102 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#if FB_SONARKIT_ENABLED +#import "FlipperKitDatabasesPlugin.h" +#import +#import +#import + +@interface FlipperKitDatabasesPlugin () +@property(strong, nonatomic) id connection; + +@end + +@implementation FlipperKitDatabasesPlugin + +- (instancetype)init { + if (self = [super init]) { + } + return self; +} + ++ (instancetype)sharedInstance { + static FlipperKitDatabasesPlugin* sInstance = nil; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sInstance = [FlipperKitDatabasesPlugin new]; + }); + + return sInstance; +} + +- (void)didConnect:(id)connection { + self.connection = connection; + + // Define connection event handlers + + // databaseList + [connection + receive:@"databaseList" + withBlock:^(NSDictionary* params, id responder) { + NSMutableDictionary* response = [NSMutableDictionary dictionary]; + + response[@1] = @{ + @"id" : @1, + @"name" : @"Provider1", + @"tables" : @[ @"Table1_1", @"Table1_2", @"Table1_3" ] + }; + response[@2] = @{ + @"id" : @2, + @"name" : @"Provider2", + @"tables" : @[ @"Table2_1", @"Table2_2" ] + }; + response[@3] = + @{@"id" : @3, + @"name" : @"Provider3", + @"tables" : @[ @"Table3_1" ]}; + [responder success:response]; + }]; + + // getTableData + [connection receive:@"getTableData" + withBlock:^(NSDictionary* params, id responder){ + + }]; + + // getTableStructure + [connection receive:@"getTableStructure" + withBlock:^(NSDictionary* params, id responder){ + }]; + + // getTableInfo + [connection receive:@"getTableInfo" + withBlock:^(NSDictionary* params, id responder){ + }]; + + // execute + [connection receive:@"execute" + withBlock:^(NSDictionary*, id responder){ + }]; +} + +- (void)didDisconnect { + self.connection = nil; +} + +- (NSString*)identifier { + return @"Databases"; +} + +- (BOOL)runInBackground { + return YES; +} + +@end + +#endif