Line data Source code
1 : import 'package:flutter/material.dart'; 2 : import 'package:pal/src/database/repository/client/page_user_visit_repository.dart'; 3 : import 'package:pal/src/database/repository/client/schema_repository.dart'; 4 : import 'package:pal/src/services/package_version.dart'; 5 : 6 : class HelpersSynchronizer { 7 : 8 : final HelperGroupUserVisitRepository pageUserVisitRemoteRepository, pageUserVisitLocalRepository; 9 : 10 : final ClientSchemaRepository schemaRemoteRepository; 11 : 12 : final ClientSchemaLocalRepository schemaLocalRepository; 13 : 14 : final PackageVersionReader packageVersionReader; 15 : 16 3 : HelpersSynchronizer({ 17 : @required this.pageUserVisitRemoteRepository, 18 : @required this.pageUserVisitLocalRepository, 19 : @required this.schemaRemoteRepository, 20 : @required this.schemaLocalRepository, 21 : @required this.packageVersionReader, 22 : }); 23 : 24 1 : Future<void> sync(String inAppUserId) async { 25 2 : debugPrint("...sync database start"); 26 2 : String currentVersion = packageVersionReader.version; 27 3 : var currentSchema = await schemaLocalRepository.get(appVersion: currentVersion); 28 3 : var lastSchemaVersion = await schemaRemoteRepository.get( 29 1 : schemaVersion: currentSchema?.schemaVersion, 30 : appVersion: currentVersion 31 : ); 32 4 : debugPrint(" current schema version ${currentSchema?.schemaVersion}"); 33 : if(currentSchema == null) { 34 3 : var visits = await pageUserVisitRemoteRepository.get(inAppUserId, currentVersion); 35 2 : debugPrint("Save user visits"); 36 4 : debugPrint(" ${visits.length} visits found"); 37 3 : await pageUserVisitLocalRepository.saveAll(visits); 38 : } 39 : if(lastSchemaVersion != null) { 40 4 : debugPrint(" remote schema version ${lastSchemaVersion?.schemaVersion}"); 41 5 : debugPrint("${lastSchemaVersion?.groups?.length ?? 0} groups saved"); 42 3 : await schemaLocalRepository.save(lastSchemaVersion); 43 : } 44 2 : debugPrint("...sync database end"); 45 : } 46 : 47 : }