708e6dd92f
- download data only after 2 minutes after the previous download - download data when app returns from the background - user can force data download Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/18
120 lines
5.1 KiB
Objective-C
120 lines
5.1 KiB
Objective-C
//
|
|
// EQNSisma.m
|
|
// Earthquake Network
|
|
//
|
|
// Refactored by Andrea Busi
|
|
// Copyright © 2020 Earthquake Network. All rights reserved.
|
|
//
|
|
|
|
#import "EQNSisma.h"
|
|
#import "EQNUser.h"
|
|
#import "EQNUtility.h"
|
|
#import "NSDictionary+EQNExtensions.h"
|
|
|
|
@implementation EQNSisma
|
|
|
|
#pragma mark - Init
|
|
|
|
- (instancetype)initWithInfo:(NSDictionary *)info
|
|
{
|
|
self = [super init];
|
|
if (self) {
|
|
double latitude = [info[@"la"] doubleValue];
|
|
double longitude = [info[@"lo"] doubleValue];
|
|
self.coordinate = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
|
|
CLLocationDistance distance = [[EQNUser defaultUser].lastPosition distanceFromLocation:self.coordinate];
|
|
self.userDistance = distance/1000;
|
|
|
|
self.depth = info[@"de"];
|
|
self.magnitude = info[@"ma"];
|
|
self.magnitudeType = info[@"mt"];
|
|
|
|
// convert from log base 10
|
|
double pop100 = [info[@"p1"] doubleValue];
|
|
self.population100km = pow(10, pop100 / 1000);
|
|
self.intensity = info[@"it"];
|
|
self.place = info[@"pl"];
|
|
self.provider = info[@"pr"];
|
|
self.date = [EQNUtility getDateFromString:info[@"dt"]];
|
|
self.timeDifference = [info[@"di"] doubleValue];
|
|
|
|
self.magnitudeRange = info[@"mr"];
|
|
self.preliminary = info[@"py"];
|
|
self.smartphoneNumber = info[@"sm"];
|
|
self.userNumber = info[@"rp"];
|
|
|
|
self.weatherCode = [info eqn_safeObjectForKey:@"wc"];
|
|
self.weatherIcon = info[@"ic"];
|
|
self.weatherCloud = info[@"cl"];
|
|
self.weatherWindSpeed = info[@"ws"];
|
|
self.weatherPressure = info[@"pe"];
|
|
self.weatherHumidity = info[@"hu"];
|
|
self.weatherTemperature = info[@"te"];
|
|
self.pictureCount = info[@"pc"];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
#pragma mark - NSCoding
|
|
|
|
- (void)encodeWithCoder:(NSCoder *)encoder
|
|
{
|
|
[encoder encodeObject:self.coordinate forKey:@"coordinate"];
|
|
[encoder encodeDouble:self.userDistance forKey:@"userDistance"];
|
|
[encoder encodeObject:self.depth forKey:@"depth"];
|
|
[encoder encodeObject:self.magnitude forKey:@"magnitude"];
|
|
[encoder encodeObject:self.magnitudeType forKey:@"magnitudeType"];
|
|
[encoder encodeDouble:self.population100km forKey:@"population100km"];
|
|
[encoder encodeObject:self.intensity forKey:@"intensity"];
|
|
[encoder encodeObject:self.place forKey:@"place"];
|
|
[encoder encodeObject:self.provider forKey:@"provider"];
|
|
[encoder encodeObject:self.date forKey:@"date"];
|
|
[encoder encodeDouble:self.timeDifference forKey:@"timeDifference"];
|
|
[encoder encodeObject:self.magnitudeRange forKey:@"magnitudeRange"];
|
|
[encoder encodeObject:self.preliminary forKey:@"preliminary"];
|
|
[encoder encodeObject:self.smartphoneNumber forKey:@"smartphoneNumber"];
|
|
[encoder encodeObject:self.userNumber forKey:@"userNumber"];
|
|
[encoder encodeObject:self.weatherCode forKey:@"weatherCode"];
|
|
[encoder encodeObject:self.weatherIcon forKey:@"weatherIcon"];
|
|
[encoder encodeObject:self.weatherCloud forKey:@"weatherCloud"];
|
|
[encoder encodeObject:self.weatherWindSpeed forKey:@"weatherWindSpeed"];
|
|
[encoder encodeObject:self.weatherPressure forKey:@"weatherPressure"];
|
|
[encoder encodeObject:self.weatherHumidity forKey:@"weatherHumidity"];
|
|
[encoder encodeObject:self.weatherTemperature forKey:@"weatherTemperature"];
|
|
[encoder encodeObject:self.pictureCount forKey:@"pictureCount"];
|
|
}
|
|
|
|
- (instancetype)initWithCoder:(NSCoder *)decoder
|
|
{
|
|
self = [super init];
|
|
if(self) {
|
|
self.coordinate = [decoder decodeObjectForKey:@"coordinate"];
|
|
self.userDistance = [decoder decodeDoubleForKey:@"userDistance"];
|
|
self.depth = [decoder decodeObjectForKey:@"depth"];
|
|
self.magnitude = [decoder decodeObjectForKey:@"magnitude"];
|
|
self.magnitudeType = [decoder decodeObjectForKey:@"magnitudeType"];
|
|
self.population100km = [decoder decodeDoubleForKey:@"population100km"];
|
|
self.intensity = [decoder decodeObjectForKey:@"intensity"];
|
|
self.place = [decoder decodeObjectForKey:@"place"];
|
|
self.provider = [decoder decodeObjectForKey:@"provider"];
|
|
self.date = [decoder decodeObjectForKey:@"date"];
|
|
self.timeDifference = [decoder decodeDoubleForKey:@"timeDifference"];
|
|
self.magnitudeRange = [decoder decodeObjectForKey:@"magnitudeRange"];
|
|
self.preliminary = [decoder decodeObjectForKey:@"preliminary"];
|
|
self.smartphoneNumber = [decoder decodeObjectForKey:@"smartphoneNumber"];
|
|
self.userNumber = [decoder decodeObjectForKey:@"userNumber"];
|
|
self.weatherCode = [decoder decodeObjectForKey:@"weatherCode"];
|
|
self.weatherIcon = [decoder decodeObjectForKey:@"weatherIcon"];
|
|
self.weatherCloud = [decoder decodeObjectForKey:@"weatherCloud"];
|
|
self.weatherWindSpeed = [decoder decodeObjectForKey:@"weatherWindSpeed"];
|
|
self.weatherPressure = [decoder decodeObjectForKey:@"weatherPressure"];
|
|
self.weatherHumidity = [decoder decodeObjectForKey:@"weatherHumidity"];
|
|
self.weatherTemperature = [decoder decodeObjectForKey:@"weatherTemperature"];
|
|
self.pictureCount = [decoder decodeObjectForKey:@"pictureCount"];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
|
|
@end
|