From 74d7bdd763986740beb28302703dd775c1a27b61 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Wed, 19 Jun 2019 09:45:15 +0200 Subject: [PATCH] Use a proper logger - Fimber It's time to start using a proper logger so we can control the number of log messages, also - it helps to have a central configuration point for the logs, specially since I would like to hook them up to Crashlytics in the future. --- lib/apis/git.dart | 35 +++++++++++---------- lib/apis/git_migration.dart | 9 +++--- lib/apis/github.dart | 33 +++++++++---------- lib/apis/gitlab.dart | 31 +++++++++--------- lib/app.dart | 25 ++++++++------- lib/screens/githostsetup_autoconfigure.dart | 9 +++--- lib/screens/githostsetup_button.dart | 3 +- lib/screens/githostsetup_screens.dart | 21 +++++++------ lib/screens/note_viewer.dart | 3 +- lib/state_container.dart | 25 ++++++++------- lib/storage/file_storage.dart | 5 +-- lib/storage/git_storage.dart | 5 +-- lib/storage/serializers.dart | 3 +- lib/utils.dart | 5 +-- pubspec.lock | 7 +++++ pubspec.yaml | 1 + 16 files changed, 122 insertions(+), 98 deletions(-) diff --git a/lib/apis/git.dart b/lib/apis/git.dart index 1469be76..8b35dc1c 100644 --- a/lib/apis/git.dart +++ b/lib/apis/git.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; +import 'package:fimber/fimber.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; @@ -34,9 +35,9 @@ class GitRepo { 'cloneUrl': cloneUrl, 'folderName': folderName, }); - print("Done"); + Fimber.d("Done"); } on PlatformException catch (e) { - print("gitClone Failed: '${e.message}'."); + Fimber.d("gitClone Failed: '${e.message}'."); throw createGitException(e.message); } } @@ -47,7 +48,7 @@ class GitRepo { 'folderName': folderName, }); } on PlatformException catch (e) { - print("gitInit Failed: '${e.message}'."); + Fimber.d("gitInit Failed: '${e.message}'."); throw createGitException(e.message); } } @@ -59,9 +60,9 @@ class GitRepo { 'authorName': authorName, 'authorEmail': authorEmail, }); - print("Done"); + Fimber.d("Done"); } on PlatformException catch (e) { - print("gitPull Failed: '${e.message}'."); + Fimber.d("gitPull Failed: '${e.message}'."); throw createGitException(e.message); } } @@ -73,7 +74,7 @@ class GitRepo { 'filePattern': filePattern, }); } on PlatformException catch (e) { - print("gitAdd Failed: '${e.message}'."); + Fimber.d("gitAdd Failed: '${e.message}'."); } } @@ -84,7 +85,7 @@ class GitRepo { 'filePattern': filePattern, }); } on PlatformException catch (e) { - print("gitRm Failed: '${e.message}'."); + Fimber.d("gitRm Failed: '${e.message}'."); } } @@ -94,7 +95,7 @@ class GitRepo { 'folderName': folderName, }); } on PlatformException catch (e) { - print("gitPush Failed: '${e.message}'."); + Fimber.d("gitPush Failed: '${e.message}'."); throw createGitException(e.message); } } @@ -106,7 +107,7 @@ class GitRepo { 'folderName': folderName, }); } on PlatformException catch (e) { - print("gitResetLast Failed: '${e.message}'."); + Fimber.d("gitResetLast Failed: '${e.message}'."); throw createGitException(e.message); } } @@ -123,29 +124,29 @@ class GitRepo { 'when': when, }); } on PlatformException catch (e) { - print("gitCommit Failed: '${e.message}'."); + Fimber.d("gitCommit Failed: '${e.message}'."); } } } Future generateSSHKeys({@required String comment}) async { - print("generateSSHKeyss: " + comment); + Fimber.d("generateSSHKeyss: " + comment); try { String publicKey = await _platform.invokeMethod('generateSSHKeys', { 'comment': comment, }); - print("Public Key " + publicKey); + Fimber.d("Public Key " + publicKey); return publicKey; } on PlatformException catch (e) { - print("Failed to generateSSHKeys: '${e.message}'."); + Fimber.d("Failed to generateSSHKeys: '${e.message}'."); } try { String publicKey = await _platform.invokeMethod('getSSHPublicKey'); - print("Public Key " + publicKey); + Fimber.d("Public Key " + publicKey); return publicKey; } on PlatformException catch (e) { - print("Failed to getSSHPublicKey: '${e.message}'."); + Fimber.d("Failed to getSSHPublicKey: '${e.message}'."); } return ""; @@ -155,14 +156,14 @@ Future setSshKeys({ @required String publicKey, @required String privateKey, }) async { - print("setSshKeys"); + Fimber.d("setSshKeys"); try { await _platform.invokeMethod('setSshKeys', { 'publicKey': publicKey, 'privateKey': privateKey, }); } on PlatformException catch (e) { - print("Failed to setSSHKeys: '${e.message}'."); + Fimber.d("Failed to setSSHKeys: '${e.message}'."); rethrow; } } diff --git a/lib/apis/git_migration.dart b/lib/apis/git_migration.dart index 6d79c0cf..b5c0ded6 100644 --- a/lib/apis/git_migration.dart +++ b/lib/apis/git_migration.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; +import 'package:fimber/fimber.dart'; import 'package:flutter/foundation.dart'; import 'package:journal/apis/git.dart'; import 'package:journal/settings.dart'; @@ -15,11 +16,11 @@ Future migrateGitRepo({ @required String toGitBaseFolder, @required String toGitBaseSubFolder, }) async { - print( + Fimber.d( "migrateGitRepo $fromGitBasePath $toGitBaseFolder / $toGitBaseSubFolder"); var fromBasePath = p.join(gitBasePath, fromGitBasePath); var toGitRepoPath = p.join(gitBasePath, toGitBaseFolder, toGitBaseSubFolder); - print("toGitRemotePath $toGitRepoPath"); + Fimber.d("toGitRemotePath $toGitRepoPath"); final dir = Directory(fromBasePath); var lister = dir.list(recursive: false); @@ -31,7 +32,7 @@ Future migrateGitRepo({ var fileName = p.basename(file.path); var toPath = p.join(toGitRepoPath, fileName); - print("Migrating " + file.path + " --> " + toPath); + Fimber.d("Migrating " + file.path + " --> " + toPath); await file.copy(toPath); @@ -43,5 +44,5 @@ Future migrateGitRepo({ await gitRepo.add(fileName); await gitRepo.commit(message: "Added Journal Entry"); } - print("migrateGitRepo: Done"); + Fimber.d("migrateGitRepo: Done"); } diff --git a/lib/apis/github.dart b/lib/apis/github.dart index 8fcfcdf4..d1b3b7d9 100644 --- a/lib/apis/github.dart +++ b/lib/apis/github.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; +import 'package:fimber/fimber.dart'; import 'package:flutter/services.dart'; import 'package:http/http.dart' as http; import 'package:url_launcher/url_launcher.dart'; @@ -19,23 +20,23 @@ class GitHub implements GitHost { void init(OAuthCallback callback) { Future _handleMessages(MethodCall call) async { if (call.method != "onURL") { - print("GitHub Unknown Call: " + call.method); + Fimber.d("GitHub Unknown Call: " + call.method); return; } - print("GitHub: Called onUrl with " + call.arguments.toString()); + Fimber.d("GitHub: Called onUrl with " + call.arguments.toString()); String url = call.arguments["URL"]; var uri = Uri.parse(url); var authCode = uri.queryParameters['code']; if (authCode == null) { - print("GitHub: Missing auth code. Now what?"); + Fimber.d("GitHub: Missing auth code. Now what?"); callback(GitHostException.OAuthFailed); } _accessCode = await _getAccessCode(authCode); if (_accessCode == null || _accessCode.isEmpty) { - print("GitHub: AccessCode is invalid: " + _accessCode); + Fimber.d("GitHub: AccessCode is invalid: " + _accessCode); callback(GitHostException.OAuthFailed); } @@ -43,7 +44,7 @@ class GitHub implements GitHost { } _platform.setMethodCallHandler(_handleMessages); - print("GitHub: Installed Handler"); + Fimber.d("GitHub: Installed Handler"); } Future _getAccessCode(String authCode) async { @@ -52,13 +53,13 @@ class GitHub implements GitHost { var response = await http.post(url); if (response.statusCode != 200) { - print("Github getAccessCode: Invalid response " + + Fimber.d("Github getAccessCode: Invalid response " + response.statusCode.toString() + ": " + response.body); throw GitHostException.OAuthFailed; } - print("GithubResponse: " + response.body); + Fimber.d("GithubResponse: " + response.body); var map = Uri.splitQueryString(response.body); return map["access_token"]; @@ -85,7 +86,7 @@ class GitHub implements GitHost { var response = await http.get(url); if (response.statusCode != 200) { - print("Github listRepos: Invalid response " + + Fimber.d("Github listRepos: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -123,7 +124,7 @@ class GitHub implements GitHost { var response = await http.post(url, headers: headers, body: json.encode(data)); if (response.statusCode != 201) { - print("Github createRepo: Invalid response " + + Fimber.d("Github createRepo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -137,7 +138,7 @@ class GitHub implements GitHost { throw GitHostException.CreateRepoFailed; } - print("GitHub createRepo: " + response.body); + Fimber.d("GitHub createRepo: " + response.body); Map map = json.decode(response.body); return _repoFromJson(map); } @@ -155,7 +156,7 @@ class GitHub implements GitHost { var response = await http.get(url); if (response.statusCode != 200) { - print("Github getRepo: Invalid response " + + Fimber.d("Github getRepo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -163,7 +164,7 @@ class GitHub implements GitHost { throw GitHostException.GetRepoFailed; } - print("GitHub getRepo: " + response.body); + Fimber.d("GitHub getRepo: " + response.body); Map map = json.decode(response.body); return _repoFromJson(map); } @@ -190,14 +191,14 @@ class GitHub implements GitHost { var response = await http.post(url, headers: headers, body: json.encode(data)); if (response.statusCode != 201) { - print("Github addDeployKey: Invalid response " + + Fimber.d("Github addDeployKey: Invalid response " + response.statusCode.toString() + ": " + response.body); throw GitHostException.DeployKeyFailed; } - print("GitHub addDeployKey: " + response.body); + Fimber.d("GitHub addDeployKey: " + response.body); return json.decode(response.body); } @@ -218,7 +219,7 @@ class GitHub implements GitHost { var response = await http.get(url); if (response.statusCode != 200) { - print("Github getUserInfo: Invalid response " + + Fimber.d("Github getUserInfo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -227,7 +228,7 @@ class GitHub implements GitHost { Map map = jsonDecode(response.body); if (map == null || map.isEmpty) { - print("Github getUserInfo: jsonDecode Failed " + + Fimber.d("Github getUserInfo: jsonDecode Failed " + response.statusCode.toString() + ": " + response.body); diff --git a/lib/apis/gitlab.dart b/lib/apis/gitlab.dart index b660fa86..04e32ab8 100644 --- a/lib/apis/gitlab.dart +++ b/lib/apis/gitlab.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'dart:io'; import 'dart:math'; +import 'package:fimber/fimber.dart'; import 'package:flutter/services.dart'; import 'package:http/http.dart' as http; import 'package:url_launcher/url_launcher.dart'; @@ -21,11 +22,11 @@ class GitLab implements GitHost { void init(OAuthCallback callback) { Future _handleMessages(MethodCall call) async { if (call.method != "onURL") { - print("GitLab Unknown Call: " + call.method); + Fimber.d("GitLab Unknown Call: " + call.method); return; } - print("GitLab: Called onUrl with " + call.arguments.toString()); + Fimber.d("GitLab: Called onUrl with " + call.arguments.toString()); String url = call.arguments["URL"]; var queryParamters = url.substring(url.indexOf('#') + 1); @@ -33,9 +34,9 @@ class GitLab implements GitHost { var state = map['state']; if (state != _stateOAuth) { - print("GitLab: OAuth State incorrect"); - print("Required State: " + _stateOAuth); - print("Actual State: " + state); + Fimber.d("GitLab: OAuth State incorrect"); + Fimber.d("Required State: " + _stateOAuth); + Fimber.d("Actual State: " + state); callback(GitHostException.OAuthFailed); return; } @@ -50,7 +51,7 @@ class GitLab implements GitHost { } _platform.setMethodCallHandler(_handleMessages); - print("GitLab: Installed Handler"); + Fimber.d("GitLab: Installed Handler"); } @override @@ -74,7 +75,7 @@ class GitLab implements GitHost { var response = await http.get(url); if (response.statusCode != 200) { - print("GitLab listRepos: Invalid response " + + Fimber.d("GitLab listRepos: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -112,7 +113,7 @@ class GitLab implements GitHost { var response = await http.post(url, headers: headers, body: json.encode(data)); if (response.statusCode != 201) { - print("GitLab createRepo: Invalid response " + + Fimber.d("GitLab createRepo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -126,7 +127,7 @@ class GitLab implements GitHost { throw GitHostException.CreateRepoFailed; } - print("GitLab createRepo: " + response.body); + Fimber.d("GitLab createRepo: " + response.body); Map map = json.decode(response.body); return _repoFromJson(map); } @@ -144,7 +145,7 @@ class GitLab implements GitHost { var response = await http.get(url); if (response.statusCode != 200) { - print("GitLab getRepo: Invalid response " + + Fimber.d("GitLab getRepo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -152,7 +153,7 @@ class GitLab implements GitHost { throw GitHostException.GetRepoFailed; } - print("GitLab getRepo: " + response.body); + Fimber.d("GitLab getRepo: " + response.body); Map map = json.decode(response.body); return _repoFromJson(map); } @@ -180,14 +181,14 @@ class GitLab implements GitHost { var response = await http.post(url, headers: headers, body: json.encode(data)); if (response.statusCode != 201) { - print("GitLab addDeployKey: Invalid response " + + Fimber.d("GitLab addDeployKey: Invalid response " + response.statusCode.toString() + ": " + response.body); throw GitHostException.DeployKeyFailed; } - print("GitLab addDeployKey: " + response.body); + Fimber.d("GitLab addDeployKey: " + response.body); return json.decode(response.body); } @@ -208,7 +209,7 @@ class GitLab implements GitHost { var response = await http.get(url); if (response.statusCode != 200) { - print("GitLab getUserInfo: Invalid response " + + Fimber.d("GitLab getUserInfo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -217,7 +218,7 @@ class GitLab implements GitHost { Map map = jsonDecode(response.body); if (map == null || map.isEmpty) { - print("GitLab getUserInfo: jsonDecode Failed " + + Fimber.d("GitLab getUserInfo: jsonDecode Failed " + response.statusCode.toString() + ": " + response.body); diff --git a/lib/app.dart b/lib/app.dart index 9dc0f63f..9ccd8fb0 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:device_info/device_info.dart'; +import 'package:fimber/fimber.dart'; import 'package:firebase_analytics/firebase_analytics.dart'; import 'package:firebase_analytics/observer.dart'; import 'package:flutter/material.dart'; @@ -17,6 +18,8 @@ import 'screens/onboarding_screens.dart'; class JournalApp extends StatelessWidget { static Future main() async { + Fimber.plantTree(DebugTree.elapsed(useColors: true)); + var pref = await SharedPreferences.getInstance(); JournalApp.preferences = pref; @@ -29,14 +32,14 @@ class JournalApp extends StatelessWidget { var remoteGitRepoSubFolder = pref.getString("remoteGitRepoSubFolder") ?? ""; var onBoardingCompleted = pref.getBool("onBoardingCompleted") ?? false; - print(" ---- Settings ---- "); - print("localGitRepoConfigured: $localGitRepoConfigured"); - print("remoteGitRepoConfigured: $remoteGitRepoConfigured"); - print("localGitRepoPath: $localGitRepoPath"); - print("remoteGitRepoFolderName: $remoteGitRepoFolderName"); - print("remoteGitRepoSubFolder: $remoteGitRepoSubFolder"); - print("onBoardingCompleted: $onBoardingCompleted"); - print(" ------------------ "); + Fimber.d(" ---- Settings ---- "); + Fimber.d("localGitRepoConfigured: $localGitRepoConfigured"); + Fimber.d("remoteGitRepoConfigured: $remoteGitRepoConfigured"); + Fimber.d("localGitRepoPath: $localGitRepoPath"); + Fimber.d("remoteGitRepoFolderName: $remoteGitRepoFolderName"); + Fimber.d("remoteGitRepoSubFolder: $remoteGitRepoSubFolder"); + Fimber.d("onBoardingCompleted: $onBoardingCompleted"); + Fimber.d(" ------------------ "); _enableAnalyticsIfPossible(); @@ -84,18 +87,18 @@ class JournalApp extends StatelessWidget { isPhysicalDevice = info.isPhysicalDevice; } } catch (e) { - print(e); + Fimber.d(e); } if (isPhysicalDevice == false) { - print("Not running in a physcial device"); + Fimber.d("Not running in a physcial device"); JournalApp.isInDebugMode = true; } bool should = (JournalApp.isInDebugMode == false); should = should && (await shouldEnableAnalytics()); - print("Analytics Collection: $should"); + Fimber.d("Analytics Collection: $should"); JournalApp.analytics.setAnalyticsCollectionEnabled(should); } diff --git a/lib/screens/githostsetup_autoconfigure.dart b/lib/screens/githostsetup_autoconfigure.dart index 2e94b011..6b4dd59c 100644 --- a/lib/screens/githostsetup_autoconfigure.dart +++ b/lib/screens/githostsetup_autoconfigure.dart @@ -1,3 +1,4 @@ +import 'package:fimber/fimber.dart'; import 'package:flutter/material.dart'; import 'package:function_types/function_types.dart'; import 'package:journal/apis/git.dart'; @@ -36,7 +37,7 @@ class GitHostSetupAutoConfigureState extends State { } void _startAutoConfigure() { - print("Starting autoconfigure"); + Fimber.d("Starting autoconfigure"); setState(() { _configuringStarted = true; }); @@ -47,7 +48,7 @@ class GitHostSetupAutoConfigureState extends State { if (error != null) { throw error; } - print("GitHost Initalized: " + widget.gitHostType.toString()); + Fimber.d("GitHost Initalized: " + widget.gitHostType.toString()); GitHostRepo repo; try { @@ -87,7 +88,7 @@ class GitHostSetupAutoConfigureState extends State { } Settings.instance.save(); } on GitHostException catch (e) { - print("GitHostSetupAutoConfigure: " + e.toString()); + Fimber.d("GitHostSetupAutoConfigure: " + e.toString()); setState(() { errorMessage = widget.gitHostType.toString() + ": " + e.toString(); }); @@ -97,7 +98,7 @@ class GitHostSetupAutoConfigureState extends State { }); gitHost.launchOAuthScreen(); } on GitHostException catch (e) { - print("GitHostSetupAutoConfigure: " + e.toString()); + Fimber.d("GitHostSetupAutoConfigure: " + e.toString()); setState(() { errorMessage = widget.gitHostType.toString() + ": " + e.toString(); }); diff --git a/lib/screens/githostsetup_button.dart b/lib/screens/githostsetup_button.dart index 62dc337d..15ec9723 100644 --- a/lib/screens/githostsetup_button.dart +++ b/lib/screens/githostsetup_button.dart @@ -1,3 +1,4 @@ +import 'package:fimber/fimber.dart'; import 'package:flutter/material.dart'; import 'package:function_types/function_types.dart'; import 'package:journal/analytics.dart'; @@ -46,7 +47,7 @@ class GitHostSetupButton extends StatelessWidget { } void _onPressedWithAnalytics() { - print("githostsetup_button_click " + text); + Fimber.d("githostsetup_button_click " + text); getAnalytics().logEvent( name: "githostsetup_button_click", parameters: { diff --git a/lib/screens/githostsetup_screens.dart b/lib/screens/githostsetup_screens.dart index a4f425ca..f7d35eff 100644 --- a/lib/screens/githostsetup_screens.dart +++ b/lib/screens/githostsetup_screens.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:dots_indicator/dots_indicator.dart'; +import 'package:fimber/fimber.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:function_types/function_types.dart'; @@ -50,7 +51,7 @@ class GitHostSetupScreenState extends State { int _currentPageIndex = 0; Widget _buildPage(BuildContext context, int pos) { - print("_buildPage " + pos.toString()); + Fimber.d("_buildPage " + pos.toString()); assert(_pageCount >= 1); if (pos == 0) { @@ -223,15 +224,15 @@ class GitHostSetupScreenState extends State { @override Widget build(BuildContext context) { - print("build _pageCount " + _pageCount.toString()); - print("build _currentPageIndex " + _currentPageIndex.toString()); + Fimber.d("build _pageCount " + _pageCount.toString()); + Fimber.d("build _currentPageIndex " + _currentPageIndex.toString()); var pageView = PageView.builder( controller: pageController, itemBuilder: _buildPage, itemCount: _pageCount, onPageChanged: (int pageNum) { - print("PageView onPageChanged: " + pageNum.toString()); + Fimber.d("PageView onPageChanged: " + pageNum.toString()); /* String pageName = ""; switch (pageNum) { @@ -350,8 +351,8 @@ class GitHostSetupScreenState extends State { await launch(gitLabUrl); } } catch (err, stack) { - print('_launchDeployKeyPage: ' + err.toString()); - print(stack.toString()); + Fimber.d('_launchDeployKeyPage: ' + err.toString()); + Fimber.d(stack.toString()); } } @@ -366,8 +367,8 @@ class GitHostSetupScreenState extends State { } } catch (err, stack) { // FIXME: Error handling? - print("_launchCreateRepoPage: " + err.toString()); - print(stack); + Fimber.d("_launchCreateRepoPage: " + err.toString()); + Fimber.d(stack.toString()); } } @@ -400,7 +401,7 @@ class GitHostSetupScreenState extends State { List subFolders = await _getSubFoldersWithMdFiles(basePath); if (subFolders.isEmpty) { - print("Found no subfolders with md files"); + Fimber.d("Found no subfolders with md files"); _finish(); return; } @@ -417,7 +418,7 @@ class GitHostSetupScreenState extends State { var dotGitDir = Directory(p.join(baseDir.path, ".git")); bool exists = await dotGitDir.exists(); if (exists) { - print("Removing " + baseDir.path); + Fimber.d("Removing " + baseDir.path); await baseDir.delete(recursive: true); await baseDir.create(); } diff --git a/lib/screens/note_viewer.dart b/lib/screens/note_viewer.dart index ed3600f1..477cebf4 100644 --- a/lib/screens/note_viewer.dart +++ b/lib/screens/note_viewer.dart @@ -1,3 +1,4 @@ +import 'package:fimber/fimber.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; @@ -94,7 +95,7 @@ class NoteBrowsingScreenState extends State { stateContainer.removeNote(note); Navigator.pop(context); - print("Shwoing an undo snackbar"); + Fimber.d("Shwoing an undo snackbar"); var snackbar = buildUndoDeleteSnackbar(context, note, noteIndex); _scaffoldKey.currentState ..removeCurrentSnackBar() diff --git a/lib/state_container.dart b/lib/state_container.dart index 15bf026b..432b1ab3 100644 --- a/lib/state_container.dart +++ b/lib/state_container.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; +import 'package:fimber/fimber.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:journal/analytics.dart'; @@ -101,7 +102,7 @@ class StateContainerState extends State { } void _loadNotesFromDisk() { - print("Loading Notes From Disk"); + Fimber.d("Loading Notes From Disk"); appState.isLoadingFromDisk = true; noteRepo.listNotes().then((loadedNotes) { setState(() { @@ -118,8 +119,8 @@ class StateContainerState extends State { }); }).catchError((err, stack) { setState(() { - print("Load Notes From Disk Error: " + err.toString()); - print(stack.toString()); + Fimber.d("Load Notes From Disk Error: " + err.toString()); + Fimber.d(stack.toString()); appState.isLoadingFromDisk = false; getAnalytics().logEvent( @@ -134,7 +135,7 @@ class StateContainerState extends State { Future syncNotes() async { if (!appState.remoteGitRepoConfigured) { - print("Not syncing because RemoteRepo not configured"); + Fimber.d("Not syncing because RemoteRepo not configured"); return true; } @@ -150,8 +151,8 @@ class StateContainerState extends State { }); } catch (err, stack) { setState(() { - print("Load Notes From Disk Error: " + err.toString()); - print(stack.toString()); + Fimber.d("Load Notes From Disk Error: " + err.toString()); + Fimber.d(stack.toString()); appState.isLoadingFromDisk = false; }); } @@ -161,16 +162,16 @@ class StateContainerState extends State { void _syncNotes() { if (!appState.remoteGitRepoConfigured) { - print("Not syncing because RemoteRepo not configured"); + Fimber.d("Not syncing because RemoteRepo not configured"); return; } - print("Starting to syncNotes"); + Fimber.d("Starting to syncNotes"); noteRepo.sync().then((loaded) { - print("NotesRepo Synced: " + loaded.toString()); + Fimber.d("NotesRepo Synced: " + loaded.toString()); _loadNotesFromDisk(); }).catchError((err) { - print("NotesRepo Sync: " + err.toString()); + Fimber.d("NotesRepo Sync: " + err.toString()); }); } @@ -213,7 +214,7 @@ class StateContainerState extends State { } void insertNote(int index, Note note) { - print("State Container insertNote"); + Fimber.d("State Container insertNote"); setState(() { if (note.filePath == null || note.filePath.isEmpty) { note.filePath = toIso8601WithTimezone(note.created) + '.md'; @@ -227,7 +228,7 @@ class StateContainerState extends State { } void updateNote(Note note) { - print("State Container updateNote"); + Fimber.d("State Container updateNote"); setState(() { // Update that specific note for (var i = 0; i < appState.notes.length; i++) { diff --git a/lib/storage/file_storage.dart b/lib/storage/file_storage.dart index 6553dcfb..8d5d4127 100644 --- a/lib/storage/file_storage.dart +++ b/lib/storage/file_storage.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; +import 'package:fimber/fimber.dart'; import 'package:flutter/foundation.dart'; import 'package:journal/note.dart'; import 'package:journal/storage/notes_repository.dart'; @@ -21,7 +22,7 @@ class FileStorage implements NoteRepository { }) { assert(baseDirectory != null); assert(baseDirectory.isNotEmpty); - print("FileStorage Directory: " + baseDirectory); + Fimber.d("FileStorage Directory: " + baseDirectory); } @override @@ -61,7 +62,7 @@ class FileStorage implements NoteRepository { @override Future addNote(Note note) async { var filePath = p.join(baseDirectory, note.filePath); - print("FileStorage: Adding note in " + filePath); + Fimber.d("FileStorage: Adding note in " + filePath); var file = File(filePath); if (file == null) { diff --git a/lib/storage/git_storage.dart b/lib/storage/git_storage.dart index fc86bb0b..50bb79d9 100644 --- a/lib/storage/git_storage.dart +++ b/lib/storage/git_storage.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:fimber/fimber.dart'; import 'package:flutter/foundation.dart'; import 'package:journal/apis/git.dart'; import 'package:journal/note.dart'; @@ -90,13 +91,13 @@ class GitNoteRepository implements NoteRepository { try { await _gitRepo.pull(); } on GitException catch (ex) { - print(ex); + Fimber.d(ex.toString()); } try { await _gitRepo.push(); } on GitException catch (ex) { - print(ex); + Fimber.d(ex.toString()); rethrow; } diff --git a/lib/storage/serializers.dart b/lib/storage/serializers.dart index 13620d0c..d569685a 100644 --- a/lib/storage/serializers.dart +++ b/lib/storage/serializers.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:fimber/fimber.dart'; import 'package:journal/note.dart'; import 'package:yaml/yaml.dart'; @@ -37,7 +38,7 @@ class MarkdownYAMLSerializer implements NoteSerializer { }); } } catch (err) { - print( + Fimber.d( 'MarkdownYAMLSerializer::decode("$yamlText") -> ${err.toString()}'); } map['body'] = parts[2].trimLeft(); diff --git a/lib/utils.dart b/lib/utils.dart index a13d6139..51a0046e 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -1,3 +1,4 @@ +import 'package:fimber/fimber.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:package_info/package_info.dart'; @@ -26,7 +27,7 @@ Future shouldEnableAnalytics() async { final bool result = await _platform.invokeMethod('shouldEnableAnalytics'); return result; } on MissingPluginException catch (e) { - print("shouldEnableAnalytics: $e"); + Fimber.d("shouldEnableAnalytics: $e"); return false; } } @@ -49,7 +50,7 @@ SnackBar buildUndoDeleteSnackbar( action: SnackBarAction( label: "Undo", onPressed: () { - print("Undoing delete"); + Fimber.d("Undoing delete"); var stateContainer = StateContainer.of(context); stateContainer.undoRemoveNote(deletedNote, deletedNoteIndex); }, diff --git a/pubspec.lock b/pubspec.lock index c7411ceb..c84f8171 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -106,6 +106,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.0.7" + fimber: + dependency: "direct main" + description: + name: fimber + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.0" firebase_analytics: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 42d8ebfe..3793d359 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -24,6 +24,7 @@ dependencies: flutter_email_sender: ^2.0.2 function_types: ^0.0.2 auto_size_text: ^2.0.1 + fimber: ^0.3.0 dev_dependencies: flutter_launcher_icons: "^0.7.2"