Fixed progressDivider implementation in ios code

This commit is contained in:
kitolog 2016-05-31 12:48:56 +03:00
parent 1bc9481a47
commit 14d6703b89

View File

@ -23,7 +23,7 @@
- (void)downloadFile:(DownloadParams*)params - (void)downloadFile:(DownloadParams*)params
{ {
_params = params; _params = params;
_bytesWritten = 0; _bytesWritten = 0;
NSURL* url = [NSURL URLWithString:_params.fromUrl]; NSURL* url = [NSURL URLWithString:_params.fromUrl];
@ -62,7 +62,7 @@
_statusCode = [NSNumber numberWithLong:httpUrlResponse.statusCode]; _statusCode = [NSNumber numberWithLong:httpUrlResponse.statusCode];
_contentLength = [NSNumber numberWithLong: httpUrlResponse.expectedContentLength]; _contentLength = [NSNumber numberWithLong: httpUrlResponse.expectedContentLength];
return _params.beginCallback(_statusCode, _contentLength, httpUrlResponse.allHeaderFields); return _params.beginCallback(_statusCode, _contentLength, httpUrlResponse.allHeaderFields);
} }
@ -71,17 +71,19 @@
if ([_statusCode isEqualToNumber:[NSNumber numberWithInt:200]]) { if ([_statusCode isEqualToNumber:[NSNumber numberWithInt:200]]) {
[_fileHandle writeData:data]; [_fileHandle writeData:data];
_bytesWritten = [NSNumber numberWithUnsignedInteger:[_bytesWritten unsignedIntegerValue] + data.length]; _bytesWritten = [NSNumber numberWithLong:[_bytesWritten longValue] + data.length];
if (_params.progressDivider <= 1) { if (_params.progressDivider <= 1) {
return _params.progressCallback(_contentLength, _bytesWritten); return _params.progressCallback(_contentLength, _bytesWritten);
} else { } else {
NSLog(@"---Progress callback---"); double doubleBytesWritten = (double)[_bytesWritten longValue];
long double progress = Math.round(((double) _bytesWritten * 100) / _contentLength); double doubleContentLength = (double)[_contentLength longValue];
if (progress % param.progressDivider == 0) { double doublePercents = doubleBytesWritten / doubleContentLength * 100;
if ((progress != _lastProgressValue) || (_bytesWritten == _contentLength)) { NSNumber* progress = [NSNumber numberWithUnsignedInt: floor(doublePercents)];
NSLog(@"---Progress callback EMIT--- %zu", progress); if ([progress unsignedIntValue] % [_params.progressDivider integerValue] == 0) {
_lastProgressValue = [NSNumber numberWithLong:progress]; if (([progress unsignedIntValue] != [_lastProgressValue unsignedIntValue]) || ([_bytesWritten unsignedIntegerValue] == [_contentLength longValue])) {
NSLog(@"---Progress callback EMIT--- %zu", [progress unsignedIntValue]);
_lastProgressValue = [NSNumber numberWithUnsignedInt:[progress unsignedIntValue]];
return _params.progressCallback(_contentLength, _bytesWritten); return _params.progressCallback(_contentLength, _bytesWritten);
} }
} }