Files
2025-09-18 17:55:52 -04:00

147 lines
4.6 KiB
Plaintext

//
// RBPurchaseViewController.m
// RobloxMobile
//
// Created by Christian Hresko on 6/16/14.
// Copyright (c) 2014 ROBLOX. All rights reserved.
//
#import "RBPurchaseViewController.h"
#import "StoreManager.h"
#import "RobloxHUD.h"
#import "RobloxTheme.h"
#import "RobloxInfo.h"
#import "UIView+Position.h"
#import "RBXEventReporter.h"
#import "UserInfo.h"
@interface RBPurchaseViewController ()
@property (nonatomic, strong) UIWebView* purchaseWebView;
@property (nonatomic, strong) NSURL* url;
@end
@implementation RBPurchaseViewController
{
RBXAnalyticsContextName purchasingContext;
}
- (id)initWithURL:(NSURL*)url andTitle:(NSString*)title {
self = [super init];
if (self) {
self.url = url;
self.title = title;
}
return self;
}
- (id)initWithRobuxPurchasing
{
purchasingContext = RBXAContextPurchasingRobux;
NSString* url = [[RobloxInfo getWWWBaseUrl] stringByAppendingString:@"mobile-app-upgrades/native-ios/robux"];
NSString* titleString = [NSString stringWithFormat:@"%@ : R$%@", NSLocalizedString(@"CurrentRobuxBalanceWord", nil), [UserInfo CurrentPlayer].Robux];
self = [self initWithURL:[NSURL URLWithString:url] andTitle:titleString];
return self;
}
- (id)initWithBCPurchasing
{
purchasingContext = RBXAContextPurchasingBC;
NSString* url = [[RobloxInfo getWWWBaseUrl] stringByAppendingString:@"mobile-app-upgrades/native-ios/bc"];
//NSString* BCLevelKey = @"NBCWord";
//[UserInfo CurrentPlayer].bcMember
NSString* titleString = NSLocalizedString(@"Builders Club", nil); //[NSString stringWithFormat:@"%@ : %@", NSLocalizedString(@"CurrentBuildersClubWord", nil), NSLocalizedString(BCLevelKey, nil)];
self = [self initWithURL:[NSURL URLWithString:url] andTitle:titleString];
return self;
}
- (void)loadView {
[super loadView];
self.purchaseWebView = [[UIWebView alloc] init];
self.purchaseWebView.delegate = self;
self.purchaseWebView.frame = self.view.bounds;
self.purchaseWebView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.purchaseWebView.scalesPageToFit = YES;
self.purchaseWebView.multipleTouchEnabled = NO;
self.purchaseWebView.scrollView.scrollEnabled = YES;
self.purchaseWebView.scrollView.bounces = NO;
[self.view addSubview:self.purchaseWebView];
NSURLRequest* request = [NSURLRequest requestWithURL:self.url];
dispatch_async(dispatch_get_main_queue(), ^{
[self.purchaseWebView loadRequest:request];
});
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
//pesky phone problem
if (![RobloxInfo thisDeviceIsATablet])
[self disableTapRecognizer];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[RBXEventReporter sharedInstance] reportButtonClick:RBXAButtonClose withContext:purchasingContext];
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
[RobloxHUD showSpinnerWithLabel:nil dimBackground:NO];
if (![RobloxInfo thisDeviceIsATablet])
webView.hidden = YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[RobloxHUD hideSpinner:YES];
//scale the page to fit the view it is shoved into
if (![RobloxInfo thisDeviceIsATablet])
{
CGSize contentSize = webView.scrollView.contentSize;
CGSize viewSize = self.view.bounds.size;
float rw = viewSize.width / contentSize.width;
webView.scrollView.minimumZoomScale = rw;
webView.scrollView.maximumZoomScale = rw;
webView.scrollView.zoomScale = rw;
webView.hidden = NO;
}
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
[RobloxHUD hideSpinner:YES];
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
id storeManager = GetStoreMgr;
if ([storeManager isKindOfClass:[StoreManager class]]) {
if([storeManager checkForInAppPurchases:request navigationType:navigationType]) {
NSString* url = [NSString stringWithFormat:@"%@", request.URL];
NSArray* urlParts = [url componentsSeparatedByString:@"?id="];
if (urlParts.count >= 1)
{
NSString* purchaseID = [[(NSString*)urlParts[1] componentsSeparatedByString:@"."] lastObject];
[[RBXEventReporter sharedInstance] reportButtonClick:RBXAButtonSubmit withContext:purchasingContext withCustomDataString:purchaseID];
}
return NO;
}
}
return YES;
}
@end