diff --git a/lib/apis/git_migration.dart b/lib/apis/git_migration.dart index b50aec61..3a8ebe48 100644 --- a/lib/apis/git_migration.dart +++ b/lib/apis/git_migration.dart @@ -1,11 +1,11 @@ import 'dart:async'; import 'dart:io'; -import 'package:fimber/fimber.dart'; import 'package:flutter/foundation.dart'; import 'package:git_bindings/git_bindings.dart'; import 'package:gitjournal/settings.dart'; +import 'package:gitjournal/utils/logger.dart'; import 'package:path/path.dart' as p; // @@ -16,10 +16,10 @@ Future migrateGitRepo({ @required String fromGitBasePath, @required String toGitBaseFolder, }) async { - Fimber.d("migrateGitRepo $fromGitBasePath $toGitBaseFolder"); + Log.d("migrateGitRepo $fromGitBasePath $toGitBaseFolder"); var fromBasePath = p.join(gitBasePath, fromGitBasePath); var toGitRepoPath = p.join(gitBasePath, toGitBaseFolder); - Fimber.d("toGitRemotePath $toGitRepoPath"); + Log.d("toGitRemotePath $toGitRepoPath"); final dir = Directory(fromBasePath); var lister = dir.list(recursive: false); @@ -31,7 +31,7 @@ Future migrateGitRepo({ var fileName = p.basename(file.path); var toPath = p.join(toGitRepoPath, fileName); - Fimber.d("Migrating " + file.path + " --> " + toPath); + Log.d("Migrating " + file.path + " --> " + toPath); await file.copy(toPath); @@ -43,5 +43,5 @@ Future migrateGitRepo({ await gitRepo.add(fileName); await gitRepo.commit(message: "Added Note"); } - Fimber.d("migrateGitRepo: Done"); + Log.d("migrateGitRepo: Done"); } diff --git a/lib/apis/github.dart b/lib/apis/github.dart index 18ab4f08..587ef306 100644 --- a/lib/apis/github.dart +++ b/lib/apis/github.dart @@ -2,11 +2,11 @@ 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'; +import 'package:gitjournal/utils/logger.dart'; import 'githost.dart'; class GitHub implements GitHost { @@ -20,24 +20,24 @@ class GitHub implements GitHost { void init(OAuthCallback callback) { Future _handleMessages(MethodCall call) async { if (call.method != "onURL") { - Fimber.d("GitHub Unknown Call: " + call.method); + Log.d("GitHub Unknown Call: " + call.method); return; } closeWebView(); - Fimber.d("GitHub: Called onUrl with " + call.arguments.toString()); + Log.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) { - Fimber.d("GitHub: Missing auth code. Now what?"); + Log.d("GitHub: Missing auth code. Now what?"); callback(GitHostException.OAuthFailed); } _accessCode = await _getAccessCode(authCode); if (_accessCode == null || _accessCode.isEmpty) { - Fimber.d("GitHub: AccessCode is invalid: " + _accessCode); + Log.d("GitHub: AccessCode is invalid: " + _accessCode); callback(GitHostException.OAuthFailed); } @@ -45,7 +45,7 @@ class GitHub implements GitHost { } _platform.setMethodCallHandler(_handleMessages); - Fimber.d("GitHub: Installed Handler"); + Log.d("GitHub: Installed Handler"); } Future _getAccessCode(String authCode) async { @@ -54,13 +54,13 @@ class GitHub implements GitHost { var response = await http.post(url); if (response.statusCode != 200) { - Fimber.d("Github getAccessCode: Invalid response " + + Log.d("Github getAccessCode: Invalid response " + response.statusCode.toString() + ": " + response.body); throw GitHostException.OAuthFailed; } - Fimber.d("GithubResponse: " + response.body); + Log.d("GithubResponse: " + response.body); var map = Uri.splitQueryString(response.body); return map["access_token"]; @@ -89,7 +89,7 @@ class GitHub implements GitHost { var response = await http.get(url, headers: headers); if (response.statusCode != 200) { - Fimber.d("Github listRepos: Invalid response " + + Log.d("Github listRepos: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -128,7 +128,7 @@ class GitHub implements GitHost { var response = await http.post(url, headers: headers, body: json.encode(data)); if (response.statusCode != 201) { - Fimber.d("Github createRepo: Invalid response " + + Log.d("Github createRepo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -142,7 +142,7 @@ class GitHub implements GitHost { throw GitHostException.CreateRepoFailed; } - Fimber.d("GitHub createRepo: " + response.body); + Log.d("GitHub createRepo: " + response.body); Map map = json.decode(response.body); return _repoFromJson(map); } @@ -163,7 +163,7 @@ class GitHub implements GitHost { var response = await http.get(url, headers: headers); if (response.statusCode != 200) { - Fimber.d("Github getRepo: Invalid response " + + Log.d("Github getRepo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -171,7 +171,7 @@ class GitHub implements GitHost { throw GitHostException.GetRepoFailed; } - Fimber.d("GitHub getRepo: " + response.body); + Log.d("GitHub getRepo: " + response.body); Map map = json.decode(response.body); return _repoFromJson(map); } @@ -198,14 +198,14 @@ class GitHub implements GitHost { var response = await http.post(url, headers: headers, body: json.encode(data)); if (response.statusCode != 201) { - Fimber.d("Github addDeployKey: Invalid response " + + Log.d("Github addDeployKey: Invalid response " + response.statusCode.toString() + ": " + response.body); throw GitHostException.DeployKeyFailed; } - Fimber.d("GitHub addDeployKey: " + response.body); + Log.d("GitHub addDeployKey: " + response.body); return json.decode(response.body); } @@ -230,7 +230,7 @@ class GitHub implements GitHost { var response = await http.get(url, headers: headers); if (response.statusCode != 200) { - Fimber.d("Github getUserInfo: Invalid response " + + Log.d("Github getUserInfo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -239,7 +239,7 @@ class GitHub implements GitHost { Map map = jsonDecode(response.body); if (map == null || map.isEmpty) { - Fimber.d("Github getUserInfo: jsonDecode Failed " + + Log.d("Github getUserInfo: jsonDecode Failed " + response.statusCode.toString() + ": " + response.body); diff --git a/lib/apis/gitlab.dart b/lib/apis/gitlab.dart index 66c3b3af..1e0d1cbb 100644 --- a/lib/apis/gitlab.dart +++ b/lib/apis/gitlab.dart @@ -3,11 +3,11 @@ 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'; +import 'package:gitjournal/utils/logger.dart'; import 'githost.dart'; class GitLab implements GitHost { @@ -22,12 +22,12 @@ class GitLab implements GitHost { void init(OAuthCallback callback) { Future _handleMessages(MethodCall call) async { if (call.method != "onURL") { - Fimber.d("GitLab Unknown Call: " + call.method); + Log.d("GitLab Unknown Call: " + call.method); return; } closeWebView(); - Fimber.d("GitLab: Called onUrl with " + call.arguments.toString()); + Log.d("GitLab: Called onUrl with " + call.arguments.toString()); String url = call.arguments["URL"]; var queryParamters = url.substring(url.indexOf('#') + 1); @@ -35,9 +35,9 @@ class GitLab implements GitHost { var state = map['state']; if (state != _stateOAuth) { - Fimber.d("GitLab: OAuth State incorrect"); - Fimber.d("Required State: " + _stateOAuth); - Fimber.d("Actual State: " + state); + Log.d("GitLab: OAuth State incorrect"); + Log.d("Required State: " + _stateOAuth); + Log.d("Actual State: " + state); callback(GitHostException.OAuthFailed); return; } @@ -52,7 +52,7 @@ class GitLab implements GitHost { } _platform.setMethodCallHandler(_handleMessages); - Fimber.d("GitLab: Installed Handler"); + Log.d("GitLab: Installed Handler"); } @override @@ -76,7 +76,7 @@ class GitLab implements GitHost { var response = await http.get(url); if (response.statusCode != 200) { - Fimber.d("GitLab listRepos: Invalid response " + + Log.d("GitLab listRepos: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -114,7 +114,7 @@ class GitLab implements GitHost { var response = await http.post(url, headers: headers, body: json.encode(data)); if (response.statusCode != 201) { - Fimber.d("GitLab createRepo: Invalid response " + + Log.d("GitLab createRepo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -128,7 +128,7 @@ class GitLab implements GitHost { throw GitHostException.CreateRepoFailed; } - Fimber.d("GitLab createRepo: " + response.body); + Log.d("GitLab createRepo: " + response.body); Map map = json.decode(response.body); return _repoFromJson(map); } @@ -146,7 +146,7 @@ class GitLab implements GitHost { var response = await http.get(url); if (response.statusCode != 200) { - Fimber.d("GitLab getRepo: Invalid response " + + Log.d("GitLab getRepo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -154,7 +154,7 @@ class GitLab implements GitHost { throw GitHostException.GetRepoFailed; } - Fimber.d("GitLab getRepo: " + response.body); + Log.d("GitLab getRepo: " + response.body); Map map = json.decode(response.body); return _repoFromJson(map); } @@ -182,14 +182,14 @@ class GitLab implements GitHost { var response = await http.post(url, headers: headers, body: json.encode(data)); if (response.statusCode != 201) { - Fimber.d("GitLab addDeployKey: Invalid response " + + Log.d("GitLab addDeployKey: Invalid response " + response.statusCode.toString() + ": " + response.body); throw GitHostException.DeployKeyFailed; } - Fimber.d("GitLab addDeployKey: " + response.body); + Log.d("GitLab addDeployKey: " + response.body); return json.decode(response.body); } @@ -210,7 +210,7 @@ class GitLab implements GitHost { var response = await http.get(url); if (response.statusCode != 200) { - Fimber.d("GitLab getUserInfo: Invalid response " + + Log.d("GitLab getUserInfo: Invalid response " + response.statusCode.toString() + ": " + response.body); @@ -219,7 +219,7 @@ class GitLab implements GitHost { Map map = jsonDecode(response.body); if (map == null || map.isEmpty) { - Fimber.d("GitLab getUserInfo: jsonDecode Failed " + + Log.d("GitLab getUserInfo: jsonDecode Failed " + response.statusCode.toString() + ": " + response.body); diff --git a/lib/app.dart b/lib/app.dart index 64f0a218..4988055c 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -1,10 +1,10 @@ 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'; +import 'package:gitjournal/utils/logger.dart'; import 'package:provider/provider.dart'; import 'package:path/path.dart' as p; import 'package:flutter_runtime_env/flutter_runtime_env.dart' as runtime_env; @@ -27,7 +27,7 @@ import 'setup/screens.dart'; class JournalApp extends StatelessWidget { static Future main(SharedPreferences pref) async { - Fimber.plantTree(DebugTree.elapsed(useColors: true)); + Log.init(); var appState = AppState(pref); appState.dumpToLog(); @@ -72,13 +72,13 @@ class JournalApp extends StatelessWidget { if (Platform.isAndroid) { var info = await deviceInfo.androidInfo; isPhysicalDevice = info.isPhysicalDevice; - Fimber.d("Device Fingerprint: " + info.fingerprint); + Log.d("Device Fingerprint: " + info.fingerprint); } else if (Platform.isIOS) { var info = await deviceInfo.iosInfo; isPhysicalDevice = info.isPhysicalDevice; } } catch (e) { - Fimber.d(e); + Log.d(e); } if (isPhysicalDevice == false) { @@ -88,7 +88,7 @@ class JournalApp extends StatelessWidget { bool inFireBaseTestLab = await runtime_env.inFirebaseTestLab(); bool enabled = !JournalApp.isInDebugMode && !inFireBaseTestLab; - Fimber.d("Analytics Collection: $enabled"); + Log.d("Analytics Collection: $enabled"); JournalApp.analytics.setAnalyticsCollectionEnabled(enabled); if (enabled) { diff --git a/lib/appstate.dart b/lib/appstate.dart index c97f3d94..4b91d08a 100644 --- a/lib/appstate.dart +++ b/lib/appstate.dart @@ -1,7 +1,7 @@ import 'package:shared_preferences/shared_preferences.dart'; -import 'package:fimber/fimber.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; +import 'package:gitjournal/utils/logger.dart'; enum SyncStatus { Unknown, @@ -47,13 +47,13 @@ class AppState { } void dumpToLog() { - Fimber.d(" ---- Settings ---- "); - Fimber.d("localGitRepoConfigured: $localGitRepoConfigured"); - Fimber.d("remoteGitRepoConfigured: $remoteGitRepoConfigured"); - Fimber.d("localGitRepoFolderName: $localGitRepoFolderName"); - Fimber.d("remoteGitRepoFolderName: $remoteGitRepoFolderName"); - Fimber.d("onBoardingCompleted: $onBoardingCompleted"); - Fimber.d(" ------------------ "); + Log.d(" ---- Settings ---- "); + Log.d("localGitRepoConfigured: $localGitRepoConfigured"); + Log.d("remoteGitRepoConfigured: $remoteGitRepoConfigured"); + Log.d("localGitRepoFolderName: $localGitRepoFolderName"); + Log.d("remoteGitRepoFolderName: $remoteGitRepoFolderName"); + Log.d("onBoardingCompleted: $onBoardingCompleted"); + Log.d(" ------------------ "); } Future save(SharedPreferences pref) async { diff --git a/lib/core/git_repo.dart b/lib/core/git_repo.dart index dcd599e5..2d07c70a 100644 --- a/lib/core/git_repo.dart +++ b/lib/core/git_repo.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'dart:io'; import 'package:flutter/foundation.dart'; -import 'package:fimber/fimber.dart'; import 'package:git_bindings/git_bindings.dart'; @@ -10,6 +9,7 @@ import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/settings.dart'; +import 'package:gitjournal/utils/logger.dart'; class NoteRepoResult { bool error; @@ -143,7 +143,7 @@ class GitNoteRepository { try { await _gitRepo.pull(); } on GitException catch (ex) { - Fimber.d(ex.toString()); + Log.d(ex.toString()); } } @@ -155,7 +155,7 @@ class GitNoteRepository { await pull(); return push(); } - Fimber.d(ex.toString()); + Log.d(ex.toString()); rethrow; } } diff --git a/lib/core/md_yaml_doc_codec.dart b/lib/core/md_yaml_doc_codec.dart index 22424ef7..5c76e5ca 100644 --- a/lib/core/md_yaml_doc_codec.dart +++ b/lib/core/md_yaml_doc_codec.dart @@ -1,8 +1,8 @@ import 'dart:collection'; -import 'package:fimber/fimber.dart'; import 'package:yaml/yaml.dart'; import 'package:yaml_serializer/yaml_serializer.dart'; +import 'package:gitjournal/utils/logger.dart'; import 'md_yaml_doc.dart'; @@ -71,8 +71,7 @@ class MarkdownYAMLCodec { map[key] = value; }); } catch (err) { - Fimber.d( - 'MarkdownYAMLSerializer::decode("$yamlText") -> ${err.toString()}'); + Log.d('MarkdownYAMLSerializer::decode("$yamlText") -> ${err.toString()}'); } return map; diff --git a/lib/core/note.dart b/lib/core/note.dart index f64e3bc0..dc1face8 100644 --- a/lib/core/note.dart +++ b/lib/core/note.dart @@ -1,11 +1,12 @@ import 'dart:io'; -import 'package:fimber/fimber.dart'; import 'package:gitjournal/core/md_yaml_doc_loader.dart'; import 'package:gitjournal/core/note_notifier.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/settings.dart'; import 'package:gitjournal/utils/markdown.dart'; +import 'package:gitjournal/utils/logger.dart'; + import 'package:path/path.dart' as p; import 'md_yaml_doc.dart'; @@ -168,7 +169,7 @@ class Note with NotesNotifier { if (this.fileLastModified == fileLastModified) { return _loadState; } - Fimber.d("Note modified: $_filePath"); + Log.d("Note modified: $_filePath"); } try { diff --git a/lib/core/notes_cache.dart b/lib/core/notes_cache.dart index a58ef4f4..2b41ba28 100644 --- a/lib/core/notes_cache.dart +++ b/lib/core/notes_cache.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'dart:io'; -import 'package:fimber/fimber.dart'; import 'package:flutter/material.dart'; import 'package:flutter_crashlytics/flutter_crashlytics.dart'; import 'package:path/path.dart' as p; @@ -10,6 +9,7 @@ import 'package:collection/collection.dart'; import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/core/sorting_mode.dart'; +import 'package:gitjournal/utils/logger.dart'; class NotesCache { final String filePath; @@ -109,7 +109,7 @@ class NotesCache { try { return json.decode(contents).cast(); } catch (ex, st) { - Fimber.e("Exception - $ex for contents: $contents"); + Log.e("Exception - $ex for contents: $contents"); await FlutterCrashlytics().logException(ex, st); return []; } diff --git a/lib/core/notes_folder_config.dart b/lib/core/notes_folder_config.dart index dc13a40b..cb8a6662 100644 --- a/lib/core/notes_folder_config.dart +++ b/lib/core/notes_folder_config.dart @@ -1,12 +1,13 @@ import 'dart:io'; -import 'package:fimber/fimber.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/core/sorting_mode.dart'; import 'package:gitjournal/folder_views/common.dart'; import 'package:gitjournal/folder_views/standard_view.dart'; import 'package:gitjournal/screens/note_editor.dart'; import 'package:gitjournal/settings.dart'; +import 'package:gitjournal/utils/logger.dart'; + import 'package:meta/meta.dart'; import 'package:path/path.dart' as p; @@ -127,7 +128,7 @@ class NotesFolderConfig extends Equatable { map[key] = value; }); } catch (err) { - Fimber.d('NotesFolderConfig::decode("$contents") -> ${err.toString()}'); + Log.d('NotesFolderConfig::decode("$contents") -> ${err.toString()}'); } var sortingMode = diff --git a/lib/core/notes_folder_fs.dart b/lib/core/notes_folder_fs.dart index b1a836ac..202db79c 100644 --- a/lib/core/notes_folder_fs.dart +++ b/lib/core/notes_folder_fs.dart @@ -1,7 +1,8 @@ import 'dart:io'; -import 'package:fimber/fimber.dart'; import 'package:gitjournal/features.dart'; +import 'package:gitjournal/utils/logger.dart'; + import 'package:path/path.dart' as p; import 'package:path/path.dart'; import 'package:synchronized/synchronized.dart'; @@ -171,7 +172,7 @@ class NotesFolderFS with NotesFolderNotifier implements NotesFolder { } if (fsEntity is Directory) { - //Fimber.d("Found directory ${fsEntity.path}"); + //Log.d("Found directory ${fsEntity.path}"); var subFolder = NotesFolderFS(this, fsEntity.path); if (subFolder.name.startsWith('.')) { continue; @@ -188,10 +189,10 @@ class NotesFolderFS with NotesFolderNotifier implements NotesFolder { var note = Note(this, fsEntity.path); if (!note.filePath.toLowerCase().endsWith('.md')) { - //Fimber.d("Ignoring file ${fsEntity.path}"); + //Log.d("Ignoring file ${fsEntity.path}"); continue; } - //Fimber.d("Found file ${fsEntity.path}"); + //Log.d("Found file ${fsEntity.path}"); note.addModifiedListener(_noteModified); _notes.add(note); @@ -210,7 +211,7 @@ class NotesFolderFS with NotesFolderNotifier implements NotesFolder { _entityMap.remove(path); if (e is Note) { - Fimber.d("File $path was no longer found"); + Log.d("File $path was no longer found"); e.removeModifiedListener(_noteModified); var i = _notes.indexWhere((n) => n.filePath == path); assert(i != -1); @@ -218,7 +219,7 @@ class NotesFolderFS with NotesFolderNotifier implements NotesFolder { _notes.removeAt(i); notifyNoteRemoved(i, note); } else { - Fimber.d("Folder $path was no longer found"); + Log.d("Folder $path was no longer found"); e.removeListener(_entityChanged); var i = _folders.indexWhere((f) => f.folderPath == path); assert(i != -1); diff --git a/lib/core/sorted_notes_folder.dart b/lib/core/sorted_notes_folder.dart index 85655c98..b220d0a1 100644 --- a/lib/core/sorted_notes_folder.dart +++ b/lib/core/sorted_notes_folder.dart @@ -1,8 +1,8 @@ import 'dart:math'; -import 'package:fimber/fimber.dart'; import 'package:flutter/material.dart'; import 'package:gitjournal/core/sorting_mode.dart'; +import 'package:gitjournal/utils/logger.dart'; import 'note.dart'; import 'notes_folder.dart'; @@ -141,7 +141,7 @@ class SortedNotesFolder with NotesFolderNotifier implements NotesFolder { bool get isEmpty => folder.isEmpty; void changeSortingMode(SortingMode sm) { - Fimber.d("Setting sorting to me ${sm.toInternalString()}"); + Log.d("Setting sorting to me ${sm.toInternalString()}"); _sortingMode = sm; _sortFunc = _sortingMode.sortingFunction(); diff --git a/lib/folder_views/common.dart b/lib/folder_views/common.dart index b8cc19d1..37819e5b 100644 --- a/lib/folder_views/common.dart +++ b/lib/folder_views/common.dart @@ -1,5 +1,5 @@ -import 'package:fimber/fimber.dart'; import 'package:flutter/material.dart'; + import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/folder_views/card_view.dart'; @@ -7,6 +7,7 @@ import 'package:gitjournal/folder_views/grid_view.dart'; import 'package:gitjournal/folder_views/journal_view.dart'; import 'package:gitjournal/screens/note_editor.dart'; import 'package:gitjournal/utils.dart'; +import 'package:gitjournal/utils/logger.dart'; import 'standard_view.dart'; @@ -66,7 +67,7 @@ void openNoteEditor(BuildContext context, Note note) async { ); var showUndoSnackBar = await Navigator.of(context).push(route); if (showUndoSnackBar != null) { - Fimber.d("Showing an undo snackbar"); + Log.d("Showing an undo snackbar"); var snackBar = buildUndoDeleteSnackbar(context, note); Scaffold.of(context) diff --git a/lib/screens/settings_git_remote.dart b/lib/screens/settings_git_remote.dart index d9c4a96e..afae0da1 100644 --- a/lib/screens/settings_git_remote.dart +++ b/lib/screens/settings_git_remote.dart @@ -2,13 +2,13 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:fimber/fimber.dart'; import 'package:git_bindings/git_bindings.dart'; import 'package:gitjournal/setup/sshkey.dart'; import 'package:gitjournal/screens/settings_widgets.dart'; import 'package:gitjournal/settings.dart'; import 'package:gitjournal/utils.dart'; +import 'package:gitjournal/utils/logger.dart'; class GitRemoteSettingsScreen extends StatefulWidget { @override @@ -105,7 +105,7 @@ class _GitRemoteSettingsScreenState extends State { generateSSHKeys(comment: comment).then((String publicKey) { setState(() { this.publicKey = publicKey; - Fimber.d("PublicKey: " + publicKey); + Log.d("PublicKey: " + publicKey); _copyKeyToClipboard(context); }); }); diff --git a/lib/setup/autoconfigure.dart b/lib/setup/autoconfigure.dart index dd97bfd9..e496800f 100644 --- a/lib/setup/autoconfigure.dart +++ b/lib/setup/autoconfigure.dart @@ -1,4 +1,3 @@ -import 'package:fimber/fimber.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:function_types/function_types.dart'; @@ -9,6 +8,7 @@ import 'package:flutter_crashlytics/flutter_crashlytics.dart'; import 'package:gitjournal/analytics.dart'; import 'package:gitjournal/apis/githost_factory.dart'; import 'package:gitjournal/settings.dart'; +import 'package:gitjournal/utils/logger.dart'; import 'button.dart'; import 'error.dart'; @@ -42,7 +42,7 @@ class GitHostSetupAutoConfigureState extends State { } void _startAutoConfigure() async { - Fimber.d("Starting autoconfigure"); + Log.d("Starting autoconfigure"); setState(() { _configuringStarted = true; }); @@ -53,7 +53,7 @@ class GitHostSetupAutoConfigureState extends State { if (error != null) { throw error; } - Fimber.d("GitHost Initalized: " + widget.gitHostType.toString()); + Log.d("GitHost Initalized: " + widget.gitHostType.toString()); GitHostRepo repo; try { @@ -112,7 +112,7 @@ class GitHostSetupAutoConfigureState extends State { } void _handleGitHostException(Exception e, StackTrace stacktrace) { - Fimber.d("GitHostSetupAutoConfigure: " + e.toString()); + Log.d("GitHostSetupAutoConfigure: " + e.toString()); setState(() { errorMessage = widget.gitHostType.toString() + ": " + e.toString(); getAnalytics().logEvent( diff --git a/lib/setup/button.dart b/lib/setup/button.dart index 9035bfe6..6532cada 100644 --- a/lib/setup/button.dart +++ b/lib/setup/button.dart @@ -1,7 +1,7 @@ -import 'package:fimber/fimber.dart'; import 'package:flutter/material.dart'; import 'package:function_types/function_types.dart'; import 'package:gitjournal/analytics.dart'; +import 'package:gitjournal/utils/logger.dart'; class GitHostSetupButton extends StatelessWidget { final Func0 onPressed; @@ -47,7 +47,7 @@ class GitHostSetupButton extends StatelessWidget { } void _onPressedWithAnalytics() { - Fimber.d("githostsetup_button_click " + text); + Log.d("githostsetup_button_click " + text); getAnalytics().logEvent( name: "githostsetup_button_click", parameters: { diff --git a/lib/setup/screens.dart b/lib/setup/screens.dart index 0da1b817..a1b6b4db 100644 --- a/lib/setup/screens.dart +++ b/lib/setup/screens.dart @@ -1,7 +1,6 @@ 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'; @@ -13,6 +12,8 @@ import 'package:gitjournal/apis/githost_factory.dart'; import 'package:gitjournal/state_container.dart'; import 'package:gitjournal/utils.dart'; import 'package:gitjournal/settings.dart'; +import 'package:gitjournal/utils/logger.dart'; + import 'package:path/path.dart' as p; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -372,7 +373,7 @@ class GitHostSetupScreenState extends State { generateSSHKeys(comment: comment).then((String publicKey) { setState(() { this.publicKey = publicKey; - Fimber.d("PublicKey: " + publicKey); + Log.d("PublicKey: " + publicKey); _copyKeyToClipboard(context); }); }); @@ -410,8 +411,8 @@ class GitHostSetupScreenState extends State { await launch(gitLabUrl); } } catch (err, stack) { - Fimber.d('_launchDeployKeyPage: ' + err.toString()); - Fimber.d(stack.toString()); + Log.d('_launchDeployKeyPage: ' + err.toString()); + Log.d(stack.toString()); } } @@ -426,8 +427,8 @@ class GitHostSetupScreenState extends State { } } catch (err, stack) { // FIXME: Error handling? - Fimber.d("_launchCreateRepoPage: " + err.toString()); - Fimber.d(stack.toString()); + Log.d("_launchCreateRepoPage: " + err.toString()); + Log.d(stack.toString()); } } @@ -446,7 +447,7 @@ class GitHostSetupScreenState extends State { String repoPath = p.join(basePath, "journal"); String error; try { - Fimber.d("Cloning " + _gitCloneUrl); + Log.d("Cloning " + _gitCloneUrl); await GitRepo.clone(repoPath, _gitCloneUrl); } on GitException catch (e) { error = e.cause; @@ -520,7 +521,7 @@ class GitHostSetupScreenState extends State { var dotGitDir = Directory(p.join(baseDir.path, ".git")); bool exists = dotGitDir.existsSync(); if (exists) { - Fimber.d("Removing " + baseDir.path); + Log.d("Removing " + baseDir.path); await baseDir.delete(recursive: true); await baseDir.create(); } diff --git a/lib/state_container.dart b/lib/state_container.dart index d9fcf375..4194fe09 100644 --- a/lib/state_container.dart +++ b/lib/state_container.dart @@ -1,9 +1,9 @@ import 'dart:async'; import 'dart:io'; -import 'package:fimber/fimber.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; + import 'package:gitjournal/apis/git_migration.dart'; import 'package:gitjournal/appstate.dart'; import 'package:gitjournal/core/note.dart'; @@ -13,6 +13,8 @@ import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/core/git_repo.dart'; import 'package:gitjournal/features.dart'; import 'package:gitjournal/settings.dart'; +import 'package:gitjournal/utils/logger.dart'; + import 'package:path/path.dart' as p; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_crashlytics/flutter_crashlytics.dart'; @@ -61,10 +63,10 @@ class StateContainer with ChangeNotifier { void _loadFromCache() async { await _notesCache.load(appState.notesFolder); - Fimber.i("Finished loading the notes cache"); + Log.i("Finished loading the notes cache"); await _loadNotes(); - Fimber.i("Finished loading all the notes"); + Log.i("Finished loading all the notes"); } void removeExistingRemoteClone() async { @@ -86,7 +88,7 @@ class StateContainer with ChangeNotifier { Future syncNotes({bool doNotThrow = false}) async { if (!appState.remoteGitRepoConfigured) { - Fimber.d("Not syncing because RemoteRepo not configured"); + Log.d("Not syncing because RemoteRepo not configured"); return true; } @@ -104,11 +106,11 @@ class StateContainer with ChangeNotifier { await _gitRepo.push(); - Fimber.d("Synced!"); + Log.d("Synced!"); appState.syncStatus = SyncStatus.Done; notifyListeners(); } catch (e, stacktrace) { - Fimber.d("Failed to Sync"); + Log.d("Failed to Sync"); appState.syncStatus = SyncStatus.Error; notifyListeners(); if (shouldLogGitException(e)) { @@ -134,7 +136,7 @@ class StateContainer with ChangeNotifier { var newFolder = NotesFolderFS(parent, newFolderPath); newFolder.create(); - Fimber.d("Created New Folder: " + newFolderPath); + Log.d("Created New Folder: " + newFolderPath); parent.addFolder(newFolder); _gitRepo.addFolder(newFolder).then((NoteRepoResult _) { @@ -145,7 +147,7 @@ class StateContainer with ChangeNotifier { void removeFolder(NotesFolderFS folder) async { return _opLock.synchronized(() async { - Fimber.d("Removing Folder: " + folder.folderPath); + Log.d("Removing Folder: " + folder.folderPath); folder.parentFS.removeFolder(folder); _gitRepo.removeFolder(folder).then((NoteRepoResult _) { @@ -194,7 +196,7 @@ class StateContainer with ChangeNotifier { void addNote(Note note) async { return _opLock.synchronized(() async { - Fimber.d("State Container addNote"); + Log.d("State Container addNote"); note.parent.insert(0, note); note.updateModified(); _gitRepo.addNote(note).then((NoteRepoResult _) { @@ -229,7 +231,7 @@ class StateContainer with ChangeNotifier { void updateNote(Note note) async { return _opLock.synchronized(() async { - Fimber.d("State Container updateNote"); + Log.d("State Container updateNote"); note.updateModified(); _gitRepo.updateNote(note).then((NoteRepoResult _) { _syncNotes(); @@ -243,7 +245,7 @@ class StateContainer with ChangeNotifier { } return _opLock.synchronized(() async { - Fimber.d("State Container saveFolderConfig"); + Log.d("State Container saveFolderConfig"); await config.saveToFS(); _gitRepo.addFolderConfig(config).then((NoteRepoResult _) { _syncNotes(); diff --git a/lib/utils.dart b/lib/utils.dart index f3ae83cc..25f2a49a 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -1,4 +1,3 @@ -import 'package:fimber/fimber.dart'; import 'package:flutter/material.dart'; import 'package:package_info/package_info.dart'; import 'package:provider/provider.dart'; @@ -6,6 +5,7 @@ import 'package:provider/provider.dart'; import 'app.dart'; import 'core/note.dart'; import 'state_container.dart'; +import 'utils/logger.dart'; Future getVersionString() async { var info = await PackageInfo.fromPlatform(); @@ -27,7 +27,7 @@ SnackBar buildUndoDeleteSnackbar(BuildContext context, Note deletedNote) { action: SnackBarAction( label: "Undo", onPressed: () { - Fimber.d("Undoing delete"); + Log.d("Undoing delete"); var stateContainer = Provider.of(context, listen: false); diff --git a/lib/utils/logger.dart b/lib/utils/logger.dart new file mode 100644 index 00000000..0311c0fc --- /dev/null +++ b/lib/utils/logger.dart @@ -0,0 +1,32 @@ +import 'package:fimber/fimber.dart'; +import 'package:flutter/foundation.dart' as foundation; + +class Log { + static void init() { + if (foundation.kDebugMode) { + Fimber.plantTree(DebugTree.elapsed(useColors: true)); + } else { + Fimber.plantTree(DebugTree.elapsed(useColors: false)); + } + } + + static void v(String msg, {dynamic ex, StackTrace stacktrace}) { + Fimber.v(msg, ex: ex, stacktrace: stacktrace); + } + + static void d(String msg, {dynamic ex, StackTrace stacktrace}) { + Fimber.d(msg, ex: ex, stacktrace: stacktrace); + } + + static void i(String msg, {dynamic ex, StackTrace stacktrace}) { + Fimber.i(msg, ex: ex, stacktrace: stacktrace); + } + + static void e(String msg, {dynamic ex, StackTrace stacktrace}) { + Fimber.e(msg, ex: ex, stacktrace: stacktrace); + } + + static void w(String msg, {dynamic ex, StackTrace stacktrace}) { + Fimber.w(msg, ex: ex, stacktrace: stacktrace); + } +}