/*
* Copyright 2018 The WebRTC Project Authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/

#import "ARDBroadcastSetupViewController.h"

@implementation ARDBroadcastSetupViewController {
UITextField *_roomNameField;
}

- (void)loadView {
UIView *view = [[UIView alloc] initWithFrame:CGRectZero];
view.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.7];

UIImageView *imageView =
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Icon-180"]];
imageView.translatesAutoresizingMaskIntoConstraints = NO;
[view addSubview:imageView];

_roomNameField = [[UITextField alloc] initWithFrame:CGRectZero];
_roomNameField.borderStyle = UITextBorderStyleRoundedRect;
_roomNameField.font = [UIFont systemFontOfSize:14.0];
_roomNameField.translatesAutoresizingMaskIntoConstraints = NO;
_roomNameField.placeholder = @"Room name";
_roomNameField.returnKeyType = UIReturnKeyDone;
_roomNameField.delegate = self;
[view addSubview:_roomNameField];

UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeSystem];
doneButton.translatesAutoresizingMaskIntoConstraints = NO;
doneButton.titleLabel.font = [UIFont systemFontOfSize:20.0];
[doneButton setTitle:@"Done" forState:UIControlStateNormal];
[doneButton addTarget:self
action:@selector(userDidFinishSetup)
forControlEvents:UIControlEventTouchUpInside];
[view addSubview:doneButton];

UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeSystem];
cancelButton.translatesAutoresizingMaskIntoConstraints = NO;
cancelButton.titleLabel.font = [UIFont systemFontOfSize:20.0];
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
[cancelButton addTarget:self
action:@selector(userDidCancelSetup)
forControlEvents:UIControlEventTouchUpInside];
[view addSubview:cancelButton];

UILayoutGuide *margin = view.layoutMarginsGuide;
[imageView.widthAnchor constraintEqualToConstant:60.0].active = YES;
[imageView.heightAnchor constraintEqualToConstant:60.0].active = YES;
[imageView.topAnchor constraintEqualToAnchor:margin.topAnchor constant:20]
.active = YES;
[imageView.centerXAnchor constraintEqualToAnchor:view.centerXAnchor].active =
YES;

[_roomNameField.leadingAnchor constraintEqualToAnchor:margin.leadingAnchor]
.active = YES;
[_roomNameField.topAnchor constraintEqualToAnchor:imageView.bottomAnchor
constant:20]
.active = YES;
[_roomNameField.trailingAnchor constraintEqualToAnchor:margin.trailingAnchor]
.active = YES;

[doneButton.leadingAnchor constraintEqualToAnchor:margin.leadingAnchor]
.active = YES;
[doneButton.bottomAnchor constraintEqualToAnchor:margin.bottomAnchor
constant:-20]
.active = YES;

[cancelButton.trailingAnchor constraintEqualToAnchor:margin.trailingAnchor]
.active = YES;
[cancelButton.bottomAnchor constraintEqualToAnchor:margin.bottomAnchor
constant:-20]
.active = YES;

UITapGestureRecognizer *tgr =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(didTap:)];
[view addGestureRecognizer:tgr];

self.view = view;
}

- (IBAction)didTap:(id)sender {
[self.view endEditing:YES];
}

- (void)userDidFinishSetup {
// URL of the resource where broadcast can be viewed that will be returned to
// the application
NSURL *broadcastURL =
[NSURL URLWithString:[NSString stringWithFormat:@"https://appr.tc/r/%@",
_roomNameField.text]];

// Dictionary with setup information that will be provided to broadcast
// extension when broadcast is started
NSDictionary *setupInfo = @{@"roomName" : _roomNameField.text};

// Tell ReplayKit that the extension is finished setting up and can begin
// broadcasting
[self.extensionContext completeRequestWithBroadcastURL:broadcastURL
setupInfo:setupInfo];
}

- (void)userDidCancelSetup {
// Tell ReplayKit that the extension was cancelled by the user
[self.extensionContext
cancelRequestWithError:[NSError errorWithDomain:@"com.google.AppRTCMobile"
code:-1
userInfo:nil]];
}

#pragma mark - UITextFieldDelegate

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[self userDidFinishSetup];
return YES;
}

@end