This commit is contained in:
Yamozha
2021-04-02 02:24:13 +03:00
parent c23950b545
commit 7256d79e2c
31493 changed files with 3036630 additions and 0 deletions

View File

@ -0,0 +1,18 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))
Pod::Spec.new do |s|
s.name = 'UMAppLoader'
s.version = package['version']
s.summary = package['description']
s.description = package['description']
s.license = package['license']
s.author = package['author']
s.homepage = package['homepage']
s.platform = :ios, '10.0'
s.source = { git: 'https://github.com/expo/expo.git' }
s.source_files = 'UMAppLoader/**/*.{h,m}'
s.preserve_paths = 'UMAppLoader/**/*.{h,m}'
s.requires_arc = true
end

View File

@ -0,0 +1,11 @@
// Copyright 2018-present 650 Industries. All rights reserved.
#import <UMAppLoader/UMAppRecordInterface.h>
@protocol UMAppLoaderInterface <NSObject>
- (nonnull id<UMAppRecordInterface>)loadAppWithUrl:(nonnull NSString *)url
options:(nullable NSDictionary *)options
callback:(nullable void(^)(BOOL success, NSError * _Nullable error))callback;
@end

View File

@ -0,0 +1,7 @@
// Copyright 2018-present 650 Industries. All rights reserved.
@protocol UMAppRecordInterface <NSObject>
- (void)invalidate;
@end

View File

@ -0,0 +1,21 @@
// Copyright 2018-present 650 Industries. All rights reserved.
#import <UMAppLoader/UMAppLoaderInterface.h>
#define UM_REGISTER_APP_LOADER_WITH_CUSTOM_LOAD(loader_name, _custom_load_code) \
extern void UMRegisterAppLoader(NSString *, Class); \
+ (void)load { \
UMRegisterAppLoader(@#loader_name, self); \
_custom_load_code \
}
#define UM_REGISTER_APP_LOADER(loader_name) \
UM_REGISTER_APP_LOADER_WITH_CUSTOM_LOAD(loader_name,)
@interface UMAppLoaderProvider : NSObject
- (nullable id<UMAppLoaderInterface>)createAppLoader:(nonnull NSString *)loaderName;
+ (nonnull instancetype)sharedInstance;
@end

View File

@ -0,0 +1,42 @@
// Copyright 2018-present 650 Industries. All rights reserved.
#import <UMAppLoader/UMAppLoaderProvider.h>
#import <UMAppLoader/UMAppLoaderInterface.h>
static NSMutableDictionary<NSString *, Class> *UMProvidedAppLoaderClasses;
extern void UMRegisterAppLoader(NSString *, Class);
extern void UMRegisterAppLoader(NSString *loaderName, Class loaderClass)
{
if ([loaderClass conformsToProtocol:@protocol(UMAppLoaderInterface)]) {
if (!UMProvidedAppLoaderClasses) {
UMProvidedAppLoaderClasses = [NSMutableDictionary new];
}
UMProvidedAppLoaderClasses[loaderName] = loaderClass;
} else {
NSLog(@"UMAppLoader class (%@) doesn't conform to the UMAppLoaderInterface protocol.", NSStringFromClass(loaderClass));
}
}
@implementation UMAppLoaderProvider
- (nullable id<UMAppLoaderInterface>)createAppLoader:(NSString *)loaderName
{
Class loaderClass = UMProvidedAppLoaderClasses[loaderName];
return [loaderClass new];
}
# pragma mark - static
+ (nonnull instancetype)sharedInstance
{
static UMAppLoaderProvider *loaderProvider;
static dispatch_once_t once;
dispatch_once(&once, ^{
loaderProvider = [[UMAppLoaderProvider alloc] init];
});
return loaderProvider;
}
@end