Abstract out the logging

This way moving away from Fimber will be much easier.
This commit is contained in:
Vishesh Handa
2020-04-04 11:24:28 +02:00
parent 56dcb1cb2e
commit bb0e574495
20 changed files with 140 additions and 102 deletions

View File

@ -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");
}

View File

@ -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<String> _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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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);

View File

@ -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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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);

View File

@ -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) {

View File

@ -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 {

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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 {

View File

@ -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<String>();
} catch (ex, st) {
Fimber.e("Exception - $ex for contents: $contents");
Log.e("Exception - $ex for contents: $contents");
await FlutterCrashlytics().logException(ex, st);
return [];
}

View File

@ -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 =

View File

@ -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);

View File

@ -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();

View File

@ -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)

View File

@ -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<GitRemoteSettingsScreen> {
generateSSHKeys(comment: comment).then((String publicKey) {
setState(() {
this.publicKey = publicKey;
Fimber.d("PublicKey: " + publicKey);
Log.d("PublicKey: " + publicKey);
_copyKeyToClipboard(context);
});
});

View File

@ -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<GitHostSetupAutoConfigure> {
}
void _startAutoConfigure() async {
Fimber.d("Starting autoconfigure");
Log.d("Starting autoconfigure");
setState(() {
_configuringStarted = true;
});
@ -53,7 +53,7 @@ class GitHostSetupAutoConfigureState extends State<GitHostSetupAutoConfigure> {
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<GitHostSetupAutoConfigure> {
}
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(

View File

@ -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<void> 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: <String, dynamic>{

View File

@ -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<GitHostSetupScreen> {
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<GitHostSetupScreen> {
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<GitHostSetupScreen> {
}
} 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<GitHostSetupScreen> {
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<GitHostSetupScreen> {
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();
}

View File

@ -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<void> 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();

View File

@ -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<String> 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<StateContainer>(context, listen: false);

32
lib/utils/logger.dart Normal file
View File

@ -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);
}
}