Move services to a separate package

This commit is contained in:
Vishnu Mohandas 2020-10-03 23:26:18 +05:30
parent 5a25676dc4
commit 7f16f88a8f
20 changed files with 50 additions and 52 deletions

View file

@ -18,7 +18,7 @@ import 'package:photos/models/file.dart';
import 'package:photos/core/configuration.dart';
class PhotoSyncManager {
class FileSyncManager {
final _logger = Logger("PhotoSyncManager");
final _dio = Dio();
final _db = FilesDB.instance;
@ -34,14 +34,13 @@ class PhotoSyncManager {
static final _dbUpdationTimeKey = "db_updation_time";
static final _diffLimit = 100;
PhotoSyncManager._privateConstructor() {
FileSyncManager._privateConstructor() {
Bus.instance.on<UserAuthenticatedEvent>().listen((event) {
sync();
});
}
static final PhotoSyncManager instance =
PhotoSyncManager._privateConstructor();
static final FileSyncManager instance = FileSyncManager._privateConstructor();
Future<void> init() async {
_prefs = await SharedPreferences.getInstance();

View file

@ -5,10 +5,10 @@ import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:photos/core/constants.dart';
import 'package:photos/core/configuration.dart';
import 'package:photos/favorite_files_repository.dart';
import 'package:photos/folder_service.dart';
import 'package:photos/memories_service.dart';
import 'package:photos/photo_sync_manager.dart';
import 'package:photos/services/favorites_service.dart';
import 'package:photos/services/folder_service.dart';
import 'package:photos/services/memories_service.dart';
import 'package:photos/file_sync_manager.dart';
import 'package:photos/ui/home_widget.dart';
import 'package:sentry/sentry.dart';
import 'package:super_logging/super_logging.dart';
@ -31,9 +31,9 @@ void _main() async {
areLogsEnabled: false,
);
await Configuration.instance.init();
await PhotoSyncManager.instance.init();
await FileSyncManager.instance.init();
await MemoriesService.instance.init();
await FavoriteFilesRepository.instance.init();
await FavoritesService.instance.init();
_sync();
final SentryClient sentry = new SentryClient(dsn: SENTRY_DSN);
@ -54,7 +54,7 @@ void _sync() async {
FolderSharingService.instance.sync().catchError((e) {
_logger.warning(e);
});
PhotoSyncManager.instance.sync().catchError((e) {
FileSyncManager.instance.sync().catchError((e) {
_logger.warning(e);
});
}

View file

@ -1,10 +1,10 @@
import 'package:photos/favorite_files_repository.dart';
import 'package:photos/services/favorites_service.dart';
import 'package:photos/models/filters/gallery_items_filter.dart';
import 'package:photos/models/file.dart';
class FavoriteItemsFilter implements GalleryItemsFilter {
@override
bool shouldInclude(File file) {
return FavoriteFilesRepository.instance.isLiked(file);
return FavoritesService.instance.isLiked(file);
}
}

View file

@ -7,13 +7,13 @@ import 'package:photos/models/face.dart';
import 'package:photos/models/file.dart';
import 'package:photos/utils/file_name_util.dart';
class FaceSearchManager {
class FaceSearchService {
final _logger = Logger("FaceSearchManager");
final _dio = Dio();
FaceSearchManager._privateConstructor();
static final FaceSearchManager instance =
FaceSearchManager._privateConstructor();
FaceSearchService._privateConstructor();
static final FaceSearchService instance =
FaceSearchService._privateConstructor();
Future<List<Face>> getFaces() {
return _dio

View file

@ -3,11 +3,11 @@ import 'package:photos/events/local_photos_updated_event.dart';
import 'package:photos/models/file.dart';
import 'package:shared_preferences/shared_preferences.dart';
class FavoriteFilesRepository {
class FavoritesService {
static final _favoritePhotoIdsKey = "favorite_photo_ids";
FavoriteFilesRepository._privateConstructor();
static FavoriteFilesRepository instance =
FavoriteFilesRepository._privateConstructor();
FavoritesService._privateConstructor();
static FavoritesService instance =
FavoritesService._privateConstructor();
SharedPreferences _preferences;

View file

@ -10,7 +10,7 @@ import 'package:photos/events/user_authenticated_event.dart';
import 'package:photos/models/folder.dart';
import 'package:photos/models/file.dart';
import 'core/event_bus.dart';
import '../core/event_bus.dart';
class FolderSharingService {
final _logger = Logger("FolderSharingService");

View file

@ -13,14 +13,13 @@ import 'package:photos/ui/passphrase_reentry_page.dart';
import 'package:photos/utils/dialog_util.dart';
import 'package:photos/utils/toast_util.dart';
class UserAuthenticator {
class UserService {
final _dio = Dio();
final _logger = Logger("UserAuthenticator");
UserAuthenticator._privateConstructor();
UserService._privateConstructor();
static final UserAuthenticator instance =
UserAuthenticator._privateConstructor();
static final UserService instance = UserService._privateConstructor();
Future<void> getOtt(BuildContext context, String email) async {
final dialog = createProgressDialog(context, "Please wait...");

View file

@ -1,7 +1,7 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:like_button/like_button.dart';
import 'package:photos/favorite_files_repository.dart';
import 'package:photos/services/favorites_service.dart';
import 'package:photos/file_repository.dart';
import 'package:photos/models/file_type.dart';
import 'package:photos/models/file.dart';
@ -178,9 +178,9 @@ class _DetailPageState extends State<DetailPage> {
Widget _getFavoriteButton() {
final file = _files[_selectedIndex];
return LikeButton(
isLiked: FavoriteFilesRepository.instance.isLiked(file),
isLiked: FavoritesService.instance.isLiked(file),
onTap: (oldValue) {
return FavoriteFilesRepository.instance.setLiked(file, !oldValue);
return FavoritesService.instance.setLiked(file, !oldValue);
},
likeBuilder: (isLiked) {
return Icon(

View file

@ -5,7 +5,7 @@ import 'package:flutter/widgets.dart';
import 'package:photos/core/event_bus.dart';
import 'package:photos/db/files_db.dart';
import 'package:photos/events/local_photos_updated_event.dart';
import 'package:photos/favorite_files_repository.dart';
import 'package:photos/services/favorites_service.dart';
import 'package:photos/models/device_folder.dart';
import 'package:photos/models/filters/favorite_items_filter.dart';
import 'package:photos/models/filters/folder_name_filter.dart';
@ -85,9 +85,9 @@ class _DeviceFolderGalleryWidgetState extends State<DeviceFolderGalleryWidget> {
return second.thumbnail.creationTime
.compareTo(first.thumbnail.creationTime);
});
if (FavoriteFilesRepository.instance.hasFavorites()) {
if (FavoritesService.instance.hasFavorites()) {
final file = await FilesDB.instance.getLatestFileAmongGeneratedIDs(
FavoriteFilesRepository.instance.getLiked().toList());
FavoritesService.instance.getLiked().toList());
folders.insert(0,
DeviceFolder("Favorites", "/Favorites", file, FavoriteItemsFilter()));
}

View file

@ -2,7 +2,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:photos/core/configuration.dart';
import 'package:photos/user_authenticator.dart';
import 'package:photos/services/user_service.dart';
class EmailEntryPage extends StatefulWidget {
EmailEntryPage({Key key}) : super(key: key);
@ -54,7 +54,7 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
onPressed: () {
final email = _emailController.text;
Configuration.instance.setEmail(email);
UserAuthenticator.instance.getOtt(context, email);
UserService.instance.getOtt(context, email);
},
padding: const EdgeInsets.fromLTRB(8, 12, 8, 12),
child: Text("Sign In"),

View file

@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
import 'package:photos/face_search_manager.dart';
import 'package:photos/services/face_search_service.dart';
import 'package:photos/models/face.dart';
import 'package:photos/models/selected_files.dart';
import 'package:photos/ui/gallery.dart';
import 'package:photos/ui/gallery_app_bar_widget.dart';
class FaceSearchResultsPage extends StatelessWidget {
final FaceSearchManager _faceSearchManager = FaceSearchManager.instance;
final FaceSearchService _faceSearchManager = FaceSearchService.instance;
final Face face;
final selectedFiles = SelectedFiles();

View file

@ -11,7 +11,7 @@ import 'package:photos/models/filters/important_items_filter.dart';
import 'package:photos/models/file.dart';
import 'package:photos/file_repository.dart';
import 'package:photos/models/selected_files.dart';
import 'package:photos/photo_sync_manager.dart';
import 'package:photos/file_sync_manager.dart';
import 'package:photos/ui/device_folders_gallery_widget.dart';
import 'package:photos/ui/gallery.dart';
import 'package:photos/ui/gallery_app_bar_widget.dart';
@ -20,7 +20,7 @@ import 'package:photos/ui/loading_widget.dart';
import 'package:photos/ui/memories_widget.dart';
import 'package:photos/ui/remote_folder_gallery_widget.dart';
import 'package:photos/ui/search_page.dart';
import 'package:photos/user_authenticator.dart';
import 'package:photos/services/user_service.dart';
import 'package:photos/utils/logging_util.dart';
import 'package:shake/shake.dart';
import 'package:logging/logging.dart';
@ -76,7 +76,7 @@ class _HomeWidgetState extends State<HomeWidget> {
bottomNavigationBar: _buildBottomNavigationBar(),
body: IndexedStack(
children: <Widget>[
PhotoSyncManager.instance.hasScannedDisk()
FileSyncManager.instance.hasScannedDisk()
? _getMainGalleryWidget()
: LoadingPhotosWidget(),
_deviceFolderGalleryWidget,
@ -140,7 +140,7 @@ class _HomeWidgetState extends State<HomeWidget> {
}
final ott = Uri.parse(link).queryParameters["ott"];
_logger.info("Ott: " + ott);
UserAuthenticator.instance.getCredentials(context, ott);
UserService.instance.getCredentials(context, ott);
}
Widget _getMainGalleryWidget() {
@ -155,7 +155,7 @@ class _HomeWidgetState extends State<HomeWidget> {
return _getFilteredPhotos(FileRepository.instance.files);
},
reloadEvent: Bus.instance.on<LocalPhotosUpdatedEvent>(),
onRefresh: PhotoSyncManager.instance.sync,
onRefresh: FileSyncManager.instance.sync,
tagPrefix: "home_gallery",
selectedFiles: _selectedFiles,
headerWidget: _memoriesWidget,

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:photos/memories_service.dart';
import 'package:photos/services/memories_service.dart';
import 'package:photos/models/file.dart';
import 'package:photos/models/file_type.dart';
import 'package:photos/models/memory.dart';

View file

@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:photos/core/configuration.dart';
import 'package:photos/ui/email_entry_page.dart';
import 'package:photos/user_authenticator.dart';
import 'package:photos/services/user_service.dart';
class OTTVerificationPage extends StatefulWidget {
OTTVerificationPage({Key key}) : super(key: key);
@ -84,7 +84,7 @@ class _OTTVerificationPageState extends State<OTTVerificationPage> {
_verificationCodeController.text.isEmpty
? null
: () {
UserAuthenticator.instance.getCredentials(
UserService.instance.getCredentials(
context, _verificationCodeController.text);
},
padding: const EdgeInsets.fromLTRB(8, 12, 8, 12),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:photos/user_authenticator.dart';
import 'package:photos/services/user_service.dart';
import 'package:photos/utils/dialog_util.dart';
class PassphraseEntryPage extends StatefulWidget {
@ -142,7 +142,7 @@ class _PassphraseEntryPageState extends State<PassphraseEntryPage> {
child: Text("Confirm"),
onPressed: () {
Navigator.of(context).pop();
UserAuthenticator.instance
UserService.instance
.setupKey(context, _passphraseController1.text);
},
),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:photos/db/files_db.dart';
import 'package:photos/folder_service.dart';
import 'package:photos/services/folder_service.dart';
import 'package:photos/models/folder.dart';
import 'package:photos/models/selected_files.dart';
import 'package:photos/ui/gallery.dart';

View file

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:photos/face_search_manager.dart';
import 'package:photos/services/face_search_service.dart';
import 'package:photos/models/face.dart';
import 'package:photos/ui/circular_network_image_widget.dart';
import 'package:photos/ui/face_search_results_page.dart';
@ -12,7 +12,7 @@ class SearchPage extends StatefulWidget {
}
class _SearchPageState extends State<SearchPage> {
final FaceSearchManager _faceSearchManager = FaceSearchManager.instance;
final FaceSearchService _faceSearchManager = FaceSearchService.instance;
String _searchString = "";
@override

View file

@ -1,7 +1,7 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:photos/folder_service.dart';
import 'package:photos/services/folder_service.dart';
import 'package:photos/models/folder.dart';
import 'package:photos/ui/loading_widget.dart';
import 'package:photos/utils/dialog_util.dart';

View file

@ -4,7 +4,7 @@ import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:photos/core/event_bus.dart';
import 'package:photos/events/photo_upload_event.dart';
import 'package:photos/photo_sync_manager.dart';
import 'package:photos/file_sync_manager.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
class SyncIndicator extends StatefulWidget {
@ -67,7 +67,7 @@ class _SyncIndicatorState extends State<SyncIndicator> {
child: Text("YES"),
onPressed: () {
Navigator.of(context).pop();
PhotoSyncManager.instance.stopSync();
FileSyncManager.instance.stopSync();
_completeText = "Sync stopped.";
setState(() {});
widget.refreshController.refreshCompleted();