You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
4.8 KiB
Dart
121 lines
4.8 KiB
Dart
import 'package:cidade_social/app/app_store.dart';
|
|
import 'package:cidade_social/app/modules/address/dao/country_dao.dart';
|
|
import 'package:cidade_social/app/modules/address/dao/neighborhood_dao.dart';
|
|
import 'package:cidade_social/app/modules/address/dao/neighborhoodaddress_dao.dart';
|
|
import 'package:cidade_social/app/modules/address/model/country_model.dart';
|
|
import 'package:cidade_social/app/modules/address/model/neighborhood_model.dart';
|
|
import 'package:cidade_social/app/modules/address/model/neighborhoodaddress_model.dart';
|
|
import 'package:cidade_social/app/modules/address/repository/country_respository.dart';
|
|
import 'package:cidade_social/app/modules/address/repository/neighborhood_respository.dart';
|
|
import 'package:cidade_social/app/modules/address/repository/neighborhoodaddress_respository.dart';
|
|
import 'package:cidade_social/app/modules/auth/auth_respository.dart';
|
|
import 'package:cidade_social/app/shared/utils/constants.dart';
|
|
import 'package:cidade_social/app/shared/utils/core_utils.dart';
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter_modular/flutter_modular.dart';
|
|
import 'package:mobx/mobx.dart';
|
|
import 'package:package_info_plus/package_info_plus.dart';
|
|
|
|
part 'splash_store.g.dart';
|
|
|
|
class SplashStore = _SplashStoreBase with _$SplashStore;
|
|
|
|
abstract class _SplashStoreBase with Store {
|
|
|
|
@observable
|
|
String info = "";
|
|
|
|
@action
|
|
void setInfo(String value) => info = value;
|
|
|
|
@observable
|
|
bool isLoading = true;
|
|
|
|
@action
|
|
void setIsLoading(bool value) => isLoading = value;
|
|
|
|
Future<bool> hasInternet = CoreUtils.verifyInternetConnection();
|
|
|
|
Future<void> loadData() async {
|
|
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
|
String version = packageInfo.version;
|
|
if(Modular.get<AppStore>().credentialApp.isNotEmpty && Modular.get<AppStore>().credentialApp != 'FAIL') {
|
|
debugPrint('## loadData started at ${CoreUtils.dateToString(DateTime.now(), 'HH:mm:ss')}');
|
|
_getCountries(version);
|
|
_getNeighborhoods(version);
|
|
await _getNeighborhoodAddresses(version);
|
|
debugPrint('## loadData finished at ${CoreUtils.dateToString(DateTime.now(), 'HH:mm:ss')}');
|
|
}
|
|
return;
|
|
}
|
|
|
|
Future<void> _getNeighborhoodAddresses(String version) async {
|
|
var neighborhoodAddressList = await NeighborhoodAddressDAO.getList();
|
|
var neighborhoodAddressListOutdate = await NeighborhoodAddressDAO.getOutdated(version: version);
|
|
if (neighborhoodAddressList.isEmpty || neighborhoodAddressListOutdate.isNotEmpty) {
|
|
int? deletedCount = await NeighborhoodAddressDAO.deleteAll();
|
|
debugPrint('deletedCount: ${deletedCount ?? 0}');
|
|
int totalPages = 1;
|
|
int countPage = 0;
|
|
setInfo(Constants.basicDataLoadingText);
|
|
while(countPage < totalPages) {
|
|
countPage++;
|
|
var map = await NeighborhoodAddressRepository.getAllAddressByPagination(Modular
|
|
.get<AppStore>()
|
|
.credentialApp, page: countPage);
|
|
totalPages = map['total_pages'];
|
|
List<NeighborhoodAddressModel> result = map['results'];
|
|
for (var model in result) {
|
|
model.versionApp = version;
|
|
await NeighborhoodAddressDAO.save(model);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Future<void> _getNeighborhoods(String version) async {
|
|
var neighborhoodList = await NeighborhoodDAO.getList();
|
|
var neighborhoodListOutdate = await NeighborhoodDAO.getOutdated(version: version);
|
|
if (neighborhoodList.isEmpty || neighborhoodListOutdate.isNotEmpty) {
|
|
int? deletedCount = await NeighborhoodDAO.deleteAll();
|
|
debugPrint('deletedCount: ${deletedCount ?? 0}');
|
|
setInfo(Constants.basicDataLoadingText);
|
|
List<NeighborhoodModel> result = await NeighborhoodRepository.getNeighborhoods(Modular
|
|
.get<AppStore>()
|
|
.credentialApp);
|
|
for (var model in result) {
|
|
model.versionApp = version;
|
|
await NeighborhoodDAO.save(model);
|
|
}
|
|
}
|
|
}
|
|
|
|
Future<void> _getCountries(String version) async {
|
|
var countryList = await CountryDAO.getList();
|
|
var countryListOutdate = await CountryDAO.getOutdated(version: version);
|
|
if (countryList.isEmpty || countryListOutdate.isNotEmpty) {
|
|
int? deletedCount = await CountryDAO.deleteAll();
|
|
debugPrint('deletedCount: ${deletedCount ?? 0}');
|
|
setInfo(Constants.basicDataLoadingText);
|
|
List<CountryModel> result = await CountryRepository.getCountries(Modular
|
|
.get<AppStore>()
|
|
.credentialApp);
|
|
for (var model in result) {
|
|
model.versionApp = version;
|
|
await CountryDAO.save(model);
|
|
}
|
|
}
|
|
}
|
|
|
|
Future<void> getCredentialApp() async {
|
|
try {
|
|
var response = await AuthRepository.getTokenByCredential().timeout(const Duration(seconds: 40));
|
|
if(response != null) {
|
|
Modular.get<AppStore>().setCredentialApp(response);
|
|
}
|
|
} catch (err){
|
|
debugPrint(err.toString());
|
|
}
|
|
}
|
|
|
|
} |