//
//  Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//

#import "OWS103EnableVideoCalling.h"
#import <SignalServiceKit/TSAccountManager.h>
#import <SignalServiceKit/TSNetworkManager.h>
#import <SignalServiceKit/TSUpdateAttributesRequest.h>

// Increment a similar constant for every future DBMigration
static NSString *const OWS103EnableVideoCallingMigrationId = @"103";

@implementation OWS103EnableVideoCalling

+ (NSString *)migrationId
{
    return OWS103EnableVideoCallingMigrationId;
}

// Override parent migration
- (void)runUp
{
    DDLogWarn(@"%@ running migration...", self.logTag);
    if ([TSAccountManager isRegistered]) {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            TSUpdateAttributesRequest *request = [[TSUpdateAttributesRequest alloc] initWithManualMessageFetching:NO];
            [[TSNetworkManager sharedManager] makeRequest:request
                success:^(NSURLSessionDataTask *task, id responseObject) {
                    DDLogInfo(@"%@ successfully ran", self.logTag);
                    [self save];
                }
                failure:^(NSURLSessionDataTask *task, NSError *error) {
                    if (!IsNSErrorNetworkFailure(error)) {
                        OWSProdError([OWSAnalyticsEvents errorEnableVideoCallingRequestFailed]);
                    }
                    DDLogError(@"%@ failed with error: %@", self.logTag, error);
                }];
        });
    } else {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            DDLogInfo(@"%@ skipping; not registered", self.logTag);
            [self save];
        });
    }
}

@end
