import 'package:flutter/rendering.dart';
import 'package:flutter/material.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';

enum ErrorLevel {ERROR, WARNING, DEBUG}

class Logger {

  static bool get isInDebugMode {
    bool inDebugMode = false;

    assert(inDebugMode = true);

    return inDebugMode;
  }

  static void p(data) {
    print(data);
  }

  static void e(dynamic message, {dynamic stacktrace, bool skipCrashlytics: false}) {
    _writeToLog(ErrorLevel.ERROR, message.toString(), stacktrace, skipCrashlytics);
  }

  static void w(String message) {
    _writeToLog(ErrorLevel.WARNING, message, null, true);
  }

  static void d(String message) {
    _writeToLog(ErrorLevel.DEBUG, message, null, true);
  }

  static void _writeToLog(ErrorLevel level, String message, dynamic stacktrace, bool skipCrashlytics) {
    if (isInDebugMode) {
      debugPrint('$message');
      if (stacktrace != null) {
        debugPrint('$stacktrace');
      }
    } else if (!skipCrashlytics) {
      Crashlytics.instance.recordError('$message', stacktrace);
    }
  }

}