127700081SBartłomiej Bukowski#import <UIKit/UIKit.h>
227700081SBartłomiej Bukowski
327700081SBartłomiej Bukowski#import "EXManagedAppSplashScreenConfigurationBuilder.h"
427700081SBartłomiej Bukowski#import "EXUtil.h"
527700081SBartłomiej Bukowski
6*94af3edaSWill Schurman@import EXManifests;
727700081SBartłomiej Bukowski
827700081SBartłomiej Bukowskistatic const NSString *kManifestIosKey = @"ios";
927700081SBartłomiej Bukowskistatic const NSString *kManifestSplashKey = @"splash";
1027700081SBartłomiej Bukowskistatic const NSString *kManifestResizeModeKey = @"resizeMode";
1127700081SBartłomiej Bukowskistatic const NSString *kManifestBackgroundColorKey = @"backgroundColor";
1227700081SBartłomiej Bukowskistatic const NSString *kManifestTabletImageUrlKey = @"tabletImageUrl";
1327700081SBartłomiej Bukowskistatic const NSString *kManifestImageUrlKey = @"imageUrl";
1427700081SBartłomiej Bukowski
1527700081SBartłomiej Bukowskistatic const NSString *kImageResizeModeContain = @"contain";
1627700081SBartłomiej Bukowskistatic const NSString *kImageResizeModeCover = @"cover";
1727700081SBartłomiej Bukowski
1827700081SBartłomiej Bukowski@implementation EXManagedAppSplashScreenConfigurationBuilder
1927700081SBartłomiej Bukowski
2050661f5cSWill Schurman+ (EXManagedAppSplashScreenConfiguration *)parseManifest:(EXManifestsManifest *)manifest
2127700081SBartłomiej Bukowski{
2227700081SBartłomiej Bukowski  UIColor *backgroundColor = [[self class] parseBackgroundColor:manifest];
2327700081SBartłomiej Bukowski  NSString *imageUrl = [[self class] parseImageUrl:manifest];
2427700081SBartłomiej Bukowski  EXSplashScreenImageResizeMode imageResizeMode = [[self class] parseImageResizeMode:manifest];
254d7a9b36SBartłomiej Bukowski  return [[EXManagedAppSplashScreenConfiguration alloc] initWithBackgroundColor:backgroundColor
2627700081SBartłomiej Bukowski                                                                       imageUrl:imageUrl
2727700081SBartłomiej Bukowski                                                                imageResizeMode:imageResizeMode];
2827700081SBartłomiej Bukowski}
2927700081SBartłomiej Bukowski
3050661f5cSWill Schurman+ (UIColor * _Nonnull)parseBackgroundColor:(EXManifestsManifest *)manifest
3127700081SBartłomiej Bukowski{
324d7a9b36SBartłomiej Bukowski  // TODO: (@bbarthec) backgroundColor is recommended to be in HEX format for now, but it should be any css-valid format
33c8841cb0SWill Schurman  NSString *hexString = manifest.iosSplashBackgroundColor;
3427700081SBartłomiej Bukowski  UIColor *color = [EXUtil colorWithHexString:hexString];
3527700081SBartłomiej Bukowski  if (color) {
3627700081SBartłomiej Bukowski    return color;
3727700081SBartłomiej Bukowski  }
3827700081SBartłomiej Bukowski
3927700081SBartłomiej Bukowski  return [UIColor whiteColor];
4027700081SBartłomiej Bukowski}
4127700081SBartłomiej Bukowski
4250661f5cSWill Schurman+ (NSString * _Nullable)parseImageUrl:(EXManifestsManifest *)manifest
4327700081SBartłomiej Bukowski{
44c8841cb0SWill Schurman  return manifest.iosSplashImageUrl;
4527700081SBartłomiej Bukowski}
4627700081SBartłomiej Bukowski
4750661f5cSWill Schurman+ (EXSplashScreenImageResizeMode)parseImageResizeMode:(EXManifestsManifest *)manifest
4827700081SBartłomiej Bukowski{
49c8841cb0SWill Schurman  NSString *resizeMode = manifest.iosSplashImageResizeMode;
5027700081SBartłomiej Bukowski  if ([kImageResizeModeCover isEqualToString:resizeMode]) {
5127700081SBartłomiej Bukowski    return EXSplashScreenImageResizeModeCover;
5227700081SBartłomiej Bukowski  }
5327700081SBartłomiej Bukowski  return EXSplashScreenImageResizeModeContain;
5427700081SBartłomiej Bukowski}
5527700081SBartłomiej Bukowski
5627700081SBartłomiej Bukowski@end
57