From 1de126104d725bb190eb3609277c17841e5e8cc5 Mon Sep 17 00:00:00 2001 From: dstark5 Date: Wed, 30 Aug 2023 00:56:02 -0700 Subject: [PATCH] Migated to new epub viewer for android and ios --- lib/ui/about_page.dart | 8 ++-- lib/ui/components/file_buttons_widget.dart | 44 +------------------- lib/ui/epub_viewer.dart | 48 +++++++++++++++++++++- pubspec.lock | 30 +++++++++----- 4 files changed, 71 insertions(+), 59 deletions(-) diff --git a/lib/ui/about_page.dart b/lib/ui/about_page.dart index 011ef49..0ffeed2 100644 --- a/lib/ui/about_page.dart +++ b/lib/ui/about_page.dart @@ -37,7 +37,7 @@ class AboutPage extends StatelessWidget { padding: EdgeInsets.only(left: 7, right: 7, top: 10), child: Text( "Github", - style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), + style: TextStyle(fontSize: 19, fontWeight: FontWeight.bold), ), ), _UrlText( @@ -55,7 +55,7 @@ class AboutPage extends StatelessWidget { padding: EdgeInsets.only(left: 7, right: 7, top: 10), child: Text( "Licence", - style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), + style: TextStyle(fontSize: 19, fontWeight: FontWeight.bold), ), ), _UrlText( @@ -93,7 +93,7 @@ class _UrlText extends StatelessWidget { Text( text, style: const TextStyle( - fontSize: 17, + fontSize: 15, fontWeight: FontWeight.bold, color: Colors.blueAccent, ), @@ -103,7 +103,7 @@ class _UrlText extends StatelessWidget { ), const Icon( Icons.launch, - size: 20, + size: 17, color: Colors.blueAccent, ) ], diff --git a/lib/ui/components/file_buttons_widget.dart b/lib/ui/components/file_buttons_widget.dart index 65dd84c..a47038d 100644 --- a/lib/ui/components/file_buttons_widget.dart +++ b/lib/ui/components/file_buttons_widget.dart @@ -1,14 +1,9 @@ -import 'dart:io'; -import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:openlib/ui/components/delete_dialog_widget.dart'; -import 'package:openlib/ui/epub_viewer.dart'; -import 'package:vocsy_epub_viewer/epub_viewer.dart'; +import 'package:openlib/ui/epub_viewer.dart' show launchEpubViewer; import 'package:openlib/ui/pdf_viewer.dart'; -import 'package:openlib/services/files.dart'; -import 'package:openlib/state/state.dart' show saveEpubState, dbProvider; class FileOpenAndDeleteButtons extends ConsumerWidget { final String id; @@ -98,40 +93,3 @@ class FileOpenAndDeleteButtons extends ConsumerWidget { ); } } - -Future launchEpubViewer( - {required String fileName, - required BuildContext context, - required WidgetRef ref}) async { - if (Platform.isAndroid || Platform.isIOS) { - String path = await getFilePath(fileName); - String? epubConfig = await ref.read(dbProvider).getBookState(fileName); - - VocsyEpub.setConfig( - // ignore: use_build_context_synchronously - themeColor: Theme.of(context).colorScheme.secondary, - identifier: "iosBook", - scrollDirection: EpubScrollDirection.HORIZONTAL, - ); - - if ((epubConfig?.isNotEmpty ?? true) && - (epubConfig != null) && - (!(epubConfig.startsWith('epubcfi')))) { - VocsyEpub.open(path, - lastLocation: EpubLocator.fromJson(json.decode(epubConfig))); - } else { - VocsyEpub.open(path); - } - - VocsyEpub.locatorStream.listen((locator) { - saveEpubState(fileName, locator, ref); - // convert locator from string to json and save to your database to be retrieved later - }); - } else { - Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) { - return EpubViewerWidget( - fileName: fileName, - ); - })); - } -} diff --git a/lib/ui/epub_viewer.dart b/lib/ui/epub_viewer.dart index e9eac1f..4bef49b 100644 --- a/lib/ui/epub_viewer.dart +++ b/lib/ui/epub_viewer.dart @@ -1,10 +1,56 @@ import 'dart:io'; +import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:epub_view/epub_view.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:vocsy_epub_viewer/epub_viewer.dart'; +import 'package:openlib/services/files.dart'; +import 'package:openlib/ui/components/snack_bar_widget.dart'; import 'package:openlib/state/state.dart' - show filePathProvider, saveEpubState, getBookPosition; + show filePathProvider, saveEpubState, dbProvider, getBookPosition; + +Future launchEpubViewer( + {required String fileName, + required BuildContext context, + required WidgetRef ref}) async { + if (Platform.isAndroid || Platform.isIOS) { + String path = await getFilePath(fileName); + String? epubConfig = await ref.read(dbProvider).getBookState(fileName); + + try { + VocsyEpub.setConfig( + // ignore: use_build_context_synchronously + themeColor: const Color.fromARGB(255, 210, 15, 1), + identifier: "iosBook", + scrollDirection: EpubScrollDirection.HORIZONTAL, + ); + + if ((epubConfig?.isNotEmpty ?? true) && + (epubConfig != null) && + (!(epubConfig.startsWith('epubcfi')))) { + VocsyEpub.open(path, + lastLocation: EpubLocator.fromJson(json.decode(epubConfig))); + } else { + VocsyEpub.open(path); + } + + VocsyEpub.locatorStream.listen((locator) async { + await saveEpubState(fileName, locator, ref); + // convert locator from string to json and save to your database to be retrieved later + }); + } catch (e) { + // ignore: use_build_context_synchronously + showSnackBar(context: context, message: 'Unable to open pdf!'); + } + } else { + Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) { + return EpubViewerWidget( + fileName: fileName, + ); + })); + } +} class EpubViewerWidget extends ConsumerStatefulWidget { const EpubViewerWidget({super.key, required this.fileName}); diff --git a/pubspec.lock b/pubspec.lock index 5929e4c..4aca087 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -93,10 +93,10 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.17.2" convert: dependency: transitive description: @@ -364,18 +364,18 @@ packages: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: @@ -529,10 +529,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" sqflite: dependency: "direct main" description: @@ -617,10 +617,10 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.6.0" typed_data: dependency: transitive description: @@ -749,6 +749,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" win32: dependency: transitive description: @@ -782,5 +790,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.0.5 <4.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=3.10.0"