use new logging system

This commit is contained in:
otsmr 2025-05-31 16:22:53 +02:00
parent a18c58430a
commit 7997bc2fa0
22 changed files with 71 additions and 97 deletions

View file

@ -1,8 +1,8 @@
import 'dart:convert';
import 'package:drift/drift.dart';
import 'package:logging/logging.dart';
import 'package:twonly/src/database/tables/media_download_table.dart';
import 'package:twonly/src/database/twonly_database.dart';
import 'package:twonly/src/utils/log.dart';
part 'media_downloads_dao.g.dart';
@ -21,8 +21,7 @@ class MediaDownloadsDao extends DatabaseAccessor<TwonlyDatabase>
try {
return await into(mediaDownloads).insert(values);
} catch (e) {
Logger("media_downloads_dao.dart")
.shout("Error while inserting media upload: $e");
Log.error("Error while inserting media upload: $e");
return null;
}
}

View file

@ -1,7 +1,7 @@
import 'package:drift/drift.dart';
import 'package:logging/logging.dart';
import 'package:twonly/src/database/tables/media_uploads_table.dart';
import 'package:twonly/src/database/twonly_database.dart';
import 'package:twonly/src/utils/log.dart';
part 'media_uploads_dao.g.dart';
@ -28,8 +28,7 @@ class MediaUploadsDao extends DatabaseAccessor<TwonlyDatabase>
try {
return await into(mediaUploads).insert(values);
} catch (e) {
Logger("media_uploads_dao.dart")
.shout("Error while inserting media upload: $e");
Log.error("Error while inserting media upload: $e");
return null;
}
}

View file

@ -1,8 +1,8 @@
import 'package:drift/drift.dart';
import 'package:logging/logging.dart';
import 'package:twonly/src/database/tables/contacts_table.dart';
import 'package:twonly/src/database/tables/messages_table.dart';
import 'package:twonly/src/database/twonly_database.dart';
import 'package:twonly/src/utils/log.dart';
part 'messages_dao.g.dart';
@ -170,7 +170,7 @@ class MessagesDao extends DatabaseAccessor<TwonlyDatabase>
return await into(messages).insert(message);
} catch (e) {
Logger("twonlyDatabase").shout("Error while inserting message: $e");
Log.error("Error while inserting message: $e");
return null;
}
}

View file

@ -1,5 +1,4 @@
import 'package:drift/drift.dart';
import 'package:logging/logging.dart';
import 'package:twonly/globals.dart';
import 'package:libsignal_protocol_dart/libsignal_protocol_dart.dart';
import 'package:twonly/src/database/twonly_database.dart';
@ -62,7 +61,7 @@ class ConnectPreKeyStore extends PreKeyStore {
try {
await twonlyDB.into(twonlyDB.signalPreKeyStores).insert(preKeyCompanion);
} catch (e) {
Logger("pre_key_store").shout("$e");
Log.error("$e");
}
}
}

View file

@ -12,7 +12,6 @@ import 'package:http/http.dart' as http;
// import 'package:twonly/src/providers/api/api_utils.dart';
import 'package:twonly/src/services/api/media_send.dart';
import 'package:cryptography_plus/cryptography_plus.dart';
import 'package:logging/logging.dart';
import 'package:twonly/src/model/protobuf/api/client_to_server.pb.dart'
as client;
import 'package:twonly/src/utils/log.dart';
@ -82,7 +81,7 @@ Future startDownloadMedia(Message message, bool force) async {
DateTime started = downloadStartedForMediaReceived[message.messageId]!;
Duration elapsed = DateTime.now().difference(started);
if (elapsed <= Duration(seconds: 60)) {
Logger("media_received.dart").shout("Download already started...");
Log.error("Download already started...");
return;
}
}
@ -151,7 +150,7 @@ Future startDownloadMedia(Message message, bool force) async {
downloaded += chunk.length;
}, onDone: () async {
if (r.statusCode != 200) {
Logger("media_received.dart").shout("Download error: $r");
Log.error("Download error: $r");
await twonlyDB.messagesDao.updateMessageByMessageId(
message.messageId,
MessagesCompanion(
@ -184,8 +183,7 @@ Future handleEncryptedFile(Message msg, {Uint8List? encryptedBytesTmp}) async {
encryptedBytesTmp ?? await readMediaFile(msg.messageId, "encrypted");
if (encryptedBytes == null) {
Logger("media_received.dart")
.shout("encrypted bytes are not found for ${msg.messageId}");
Log.error("encrypted bytes are not found for ${msg.messageId}");
}
MediaMessageContent content =
@ -213,7 +211,7 @@ Future handleEncryptedFile(Message msg, {Uint8List? encryptedBytesTmp}) async {
await writeMediaFile(msg.messageId, "png", imageBytes);
} catch (e) {
Logger("media_received.dart").info("Decryption error: $e");
Log.error("Decryption error: $e");
await twonlyDB.messagesDao.updateMessageByMessageId(
msg.messageId,
MessagesCompanion(
@ -275,7 +273,7 @@ Future<void> deleteMediaFile(int mediaId, String type) async {
await file.delete();
}
} catch (e) {
Logger("media_received.dart").shout("Error deleting: $e");
Log.error("Error deleting: $e");
}
}
@ -334,7 +332,7 @@ Future<void> purgeMediaFiles(Directory directory) async {
}
}
} catch (e) {
Logger("media_received.dart").shout("$e");
Log.error("$e");
}
}
}

View file

@ -7,7 +7,6 @@ import 'dart:typed_data';
import 'package:cryptography_plus/cryptography_plus.dart';
import 'package:drift/drift.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:logging/logging.dart';
import 'package:mutex/mutex.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
@ -22,6 +21,7 @@ import 'package:twonly/src/services/api/messages.dart';
import 'package:twonly/src/services/api/utils.dart';
import 'package:twonly/src/services/api/media_received.dart';
import 'package:twonly/src/services/notification.service.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/utils/misc.dart';
import 'package:twonly/src/utils/storage.dart';
import 'package:video_compress/video_compress.dart';
@ -78,7 +78,7 @@ Future retryMediaUpload({int maxRetries = 3}) async {
}
await twonlyDB.mediaUploadsDao
.deleteMediaUpload(mediaFile.mediaUploadId);
Logger("media_send.dart").shout(
Log.info(
"upload can be removed, the finalized function was never called...");
continue;
}
@ -123,7 +123,7 @@ Future<Uint8List> addOrModifyImageToUpload(
}
await writeMediaFile(mediaUploadId, "png", imageBytesCompressed);
} catch (e) {
Logger("media_send.dart").shout("$e");
Log.error("$e");
// as a fall back use the original image
await writeMediaFile(mediaUploadId, "png", imageBytes);
imageBytesCompressed = imageBytes;
@ -203,12 +203,6 @@ Future encryptAndPreUploadMediaFiles(
await handleNextMediaUploadSteps(mediaUploadId);
}
Future cancelSendMediaFile(int mediaUploadId) async {
await twonlyDB.mediaUploadsDao.deleteMediaUpload(mediaUploadId);
/// server should purge the uploads... when it did not receive a
}
Future finalizeUpload(int mediaUploadId, List<int> contactIds,
bool isRealTwonly, bool isVideo, bool mirrorVideo, int maxShowTime) async {
MediaUploadMetadata metadata = MediaUploadMetadata();
@ -251,8 +245,7 @@ Future finalizeUpload(int mediaUploadId, List<int> contactIds,
if (messageId != null) {
messageIds.add(messageId);
} else {
Logger("media_send.dart")
.shout("Error inserting media upload message in database.");
Log.error("Error inserting media upload message in database.");
}
}
@ -306,8 +299,7 @@ Future handleNextMediaUploadSteps(int mediaUploadId) async {
// download tokens are known so send the media file to the receivers
await handleNotifyReceiver(mediaUpload);
} catch (e) {
Logger("media_send.dart")
.shout("Non recoverable error while sending media file: $e");
Log.error("Non recoverable error while sending media file: $e");
await handleUploadError(mediaUpload);
}
return false;
@ -350,8 +342,7 @@ Future<bool> handleUploadDone(MediaUpload media) async {
throw Exception("PlanLimitReached");
}
}
Logger("media_send.dart")
.info("Upload done will be tried again when reconnected to server!");
Log.error("Upload done will be tried again when reconnected to server!");
return false;
}
@ -375,7 +366,7 @@ Future<bool> handleMediaUpload(int mediaUploadId) async {
final storage = FlutterSecureStorage();
String? apiAuthToken = await storage.read(key: "api_auth_token");
if (apiAuthToken == null) {
Logger("media_send.dart").shout("api auth token not defined.");
Log.error("api auth token not defined.");
return false;
}
@ -402,7 +393,7 @@ Future<bool> handleMediaUpload(int mediaUploadId) async {
if (response.statusCode == 200) {
if (response.body.length != 64) {
Logger("media_send.dart").info("Got invalid upload token.");
Log.error("Got invalid upload token.");
return false;
}
@ -421,7 +412,7 @@ Future<bool> handleMediaUpload(int mediaUploadId) async {
return true;
}
} catch (e) {
Logger("media_send.dart").shout("Exception during upload: $e");
Log.error("Exception during upload: $e");
}
return false;
}
@ -527,11 +518,11 @@ Future<bool> compressVideoIfExists(int mediaUploadId) async {
);
}
} catch (e) {
Logger("media_send.dart").shout("Video compression: $e");
Log.error("during video compression: $e");
}
if (mediaInfo == null) {
Logger("media_send.dart").shout("Error compressing video.");
Log.error("could not compress video.");
// as a fall back use the non compressed version
await videoOriginalFile.copy(videoCompressedFile.path);
await videoOriginalFile.delete();

View file

@ -2,7 +2,6 @@ import 'dart:convert';
import 'dart:math';
import 'package:drift/drift.dart';
import 'package:hive/hive.dart';
import 'package:logging/logging.dart';
import 'package:mutex/mutex.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/database/twonly_database.dart';
@ -13,6 +12,7 @@ import 'package:twonly/src/services/api/utils.dart';
import 'package:twonly/src/services/signal/encryption.signal.dart';
import 'package:twonly/src/utils/hive.dart';
import 'package:twonly/src/services/notification.service.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/utils/storage.dart';
final lockSendingMessages = Mutex();
@ -23,7 +23,7 @@ Future tryTransmitMessages() async {
if (retransmit.isEmpty) return;
Logger("api.dart").info("try sending messages: ${retransmit.length}");
Log.info("try sending messages: ${retransmit.length}");
Map<String, dynamic> failed = {};
@ -102,7 +102,7 @@ Future<Map<String, dynamic>> getAllMessagesForRetransmitting() async {
try {
retransmit = jsonDecode(retransmitJson);
} catch (e) {
Logger("api.dart").shout("Could not decode the retransmit messages: $e");
Log.error("Could not decode the retransmit messages: $e");
await box.delete("messages-to-retransmit");
}
}
@ -140,7 +140,7 @@ Future<(String, RetransmitMessage)?> encryptMessage(
Uint8List? bytes = await signalEncryptMessage(userId, msg);
if (bytes == null) {
Logger("api.dart").shout("Error encryption message!");
Log.error("Error encryption message!");
return null;
}

View file

@ -2,7 +2,6 @@ import 'dart:convert';
import 'package:drift/drift.dart';
import 'package:fixnum/fixnum.dart';
import 'package:libsignal_protocol_dart/libsignal_protocol_dart.dart';
import 'package:logging/logging.dart';
import 'package:mutex/mutex.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/database/twonly_database.dart';
@ -20,6 +19,7 @@ import 'package:twonly/src/services/api/media_received.dart';
import 'package:twonly/src/services/notification.service.dart';
import 'package:twonly/src/services/signal/encryption.signal.dart';
import 'package:twonly/src/services/signal/identity.signal.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/utils/misc.dart';
final lockHandleServerMessage = Mutex();
@ -36,8 +36,7 @@ Future handleServerMessage(server.ServerToClient msg) async {
int fromUserId = msg.v0.newMessage.fromUserId.toInt();
response = await handleNewMessage(fromUserId, body);
} else {
Logger("handleServerMessage")
.shout("Got a new message from the server: $msg");
Log.error("Got a new message from the server: $msg");
response = client.Response()..error = ErrorCode.InternalError;
}
} catch (e) {
@ -55,8 +54,7 @@ Future handleServerMessage(server.ServerToClient msg) async {
Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
MessageJson? message = await signalDecryptMessage(fromUserId, body);
if (message == null) {
Logger("server_messages")
.info("Got invalid cipher text from $fromUserId. Deleting it.");
Log.info("Got invalid cipher text from $fromUserId. Deleting it.");
// Message is not valid, so server can delete it
var ok = client.Response_Ok()..none = true;
return client.Response()..ok = ok;
@ -154,11 +152,9 @@ Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
message.kind != MessageKind.media &&
message.kind != MessageKind.storedMediaFile &&
message.kind != MessageKind.reopenedMedia) {
Logger("handleServerMessages")
.shout("Got unknown MessageKind $message");
Log.error("Got unknown MessageKind $message");
} else if (message.content == null || message.messageId == null) {
Logger("handleServerMessages")
.shout("Content or messageid not defined $message");
Log.error("Content or messageid not defined $message");
} else {
final content = message.content!;

View file

@ -1,7 +1,6 @@
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:logging/logging.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/app.dart';
import 'package:twonly/src/database/twonly_database.dart';
@ -22,7 +21,7 @@ Future initFCMAfterAuthenticated() async {
try {
final fcmToken = await FirebaseMessaging.instance.getToken();
if (fcmToken == null) {
Logger("init_fcm_service").shout("Error getting fcmToken");
Log.error("Error getting fcmToken");
return;
}
@ -35,10 +34,10 @@ Future initFCMAfterAuthenticated() async {
await apiService.updateFCMToken(fcmToken);
await storage.write(key: "google_fcm", value: fcmToken);
}).onError((err) {
// Logger("init_fcm_service").shout("Error getting fcmToken");
Log.error("could not listen on token refresh");
});
} catch (e) {
Logger("fcm_service").shout("Error loading fcmToken: $e");
Log.error("could not load fcm token: $e");
}
}
@ -79,8 +78,7 @@ Future initFCMService() async {
@pragma('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
initLogger();
Logger("firebase-background")
.info('Handling a background message: ${message.messageId}');
Log.info('Handling a background message: ${message.messageId}');
twonlyDB = TwonlyDatabase();
await handleRemoteMessage(message);
@ -90,7 +88,7 @@ Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
Future handleRemoteMessage(RemoteMessage message) async {
if (!Platform.isAndroid) {
Logger("firebase-notification").shout("Got message in Dart while on iOS");
Log.error("Got message in Dart while on iOS");
}
if (message.notification != null) {

View file

@ -8,7 +8,6 @@ import 'package:flutter/services.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:flutter_svg/svg.dart';
import 'package:logging/logging.dart';
import 'package:path_provider/path_provider.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/database/daos/contacts_dao.dart';
@ -254,16 +253,14 @@ Future<List<int>?> getPushData(int toUserId, PushKind kind) async {
kind != PushKind.testNotification) {
// this will be enforced after every app uses this system... :/
// return null;
Logger("notification_service").shout(
"Using insecure key as the receiver does not send a push key!");
Log.error("Using insecure key as the receiver does not send a push key!");
}
} else {
try {
key = pushKeys[toUserId]!.keys.last.key;
keyId = pushKeys[toUserId]!.keys.last.id;
} catch (e) {
Logger("notification_service")
.shout("No push notification key found for user $toUserId");
Log.error("No push notification key found for user $toUserId");
return null;
}
}
@ -303,7 +300,6 @@ Future<PushKind?> tryDecryptMessage(
return PushKindExtension.fromString(plaintextString);
} catch (e) {
// this error is allowed to happen...
// Logger("notification-service").shout(e);
return null;
}
}
@ -348,7 +344,7 @@ Future handlePushData(String pushDataJson) async {
}
}
} catch (e) {
Logger("notification-service").shout(e);
Log.error(e);
}
}
@ -473,8 +469,7 @@ Future showLocalPushNotification(
title = getContactDisplayName(user);
body = getPushNotificationText(pushKind);
if (body == "") {
Logger("localPushNotificationNewMessage")
.shout("No push notification type defined!");
Log.error("No push notification type defined!");
}
FilePathAndroidBitmap? styleInformation;
@ -513,8 +508,7 @@ Future showLocalPushNotificationWithoutUserId(
body = getPushNotificationTextWithoutUserId(pushKind);
if (body == "") {
Logger("localPushNotificationNewMessage")
.shout("No push notification type defined!");
Log.error("No push notification type defined!");
}
AndroidNotificationDetails androidNotificationDetails =

View file

@ -1,9 +1,9 @@
import 'dart:convert';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:hive/hive.dart';
import 'package:logging/logging.dart';
import 'package:path_provider/path_provider.dart';
import 'package:twonly/src/services/notification.service.dart';
import 'package:twonly/src/utils/log.dart';
Future initMediaStorage() async {
final storage = FlutterSecureStorage();
@ -35,7 +35,7 @@ Future<Box> getMediaStorage() async {
} catch (e) {
await customLocalPushNotification("Secure Storage Error",
"Settings > Apps > twonly > Storage and Cache > Press clear on both");
Logger("hive.dart").shout(e);
Log.error(e);
throw Exception(e);
}
}

View file

@ -1,8 +1,8 @@
import 'dart:convert';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:logging/logging.dart';
import 'package:path_provider/path_provider.dart';
import 'package:twonly/src/model/json/userdata.dart';
import 'package:twonly/src/utils/log.dart';
Future<bool> isUserCreated() async {
UserData? user = await getUser();
@ -23,7 +23,7 @@ Future<UserData?> getUser() async {
final user = UserData.fromJson(userMap);
return user;
} catch (e) {
Logger("get_user").shout("Error getting user: $e");
Log.error("Error getting user: $e");
return null;
}
}

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:twonly/src/utils/log.dart';
class PermissionHandlerView extends StatefulWidget {
const PermissionHandlerView({super.key, required this.onSuccess});
@ -79,7 +79,7 @@ class PermissionHandlerViewState extends State<PermissionHandlerView> {
widget.onSuccess();
}
} catch (e) {
Logger("permissions_view").shout(e);
Log.error(e);
}
},
),

View file

@ -5,10 +5,10 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:image_picker/image_picker.dart';
import 'package:logging/logging.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:screenshot/screenshot.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/views/camera/camera_preview_components/send_to.dart';
import 'package:twonly/src/views/camera/camera_preview_components/video_recording_time.dart';
import 'package:twonly/src/views/camera/camera_preview_components/zoom_selector.dart';
@ -65,7 +65,7 @@ Future<(SelectedCameraDetails, CameraController)?> initializeCameraController(
details.cameraLoaded = true;
details.cameraId = sCameraId;
}).catchError((Object e) {
Logger("camera_preview.dart").shout("$e");
Log.error("$e");
});
return (details, cameraController);
}
@ -429,7 +429,7 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
}
void _showCameraException(dynamic e) {
Logger("ui.camera").shout("$e");
Log.error("$e");
try {
if (context.mounted) {
// ignore: use_build_context_synchronously

View file

@ -3,10 +3,10 @@ import 'dart:io';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:logging/logging.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/model/protobuf/api/error.pb.dart' show ErrorCode;
import 'package:twonly/src/services/api/media_send.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/views/camera/camera_preview_components/save_to_gallery.dart';
import 'package:twonly/src/views/camera/image_editor/action_button.dart';
import 'package:twonly/src/views/components/alert_dialog.dart';
@ -85,7 +85,7 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
videoController!.play();
setState(() {});
}).catchError((Object error) {
Logger("ui.share_image_editor").shout(error);
Log.error(error);
});
}
}

View file

@ -4,11 +4,11 @@ import 'dart:io';
import 'package:drift/drift.dart' hide Column;
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:logging/logging.dart';
import 'package:lottie/lottie.dart';
import 'package:no_screenshot/no_screenshot.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/database/daos/contacts_dao.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/views/camera/share_image_editor_view.dart';
import 'package:twonly/src/views/components/animate_icon.dart';
import 'package:twonly/src/views/components/media_view_sizing.dart';
@ -129,7 +129,7 @@ class _MediaViewerViewState extends State<MediaViewerView> {
await deleteMediaFile(allMediaFiles.first.messageId, "png");
}
} catch (e) {
Logger("media_viewer_view.dart").shout("$e");
Log.error("$e");
}
}
if (allMediaFiles.isEmpty || allMediaFiles.length == 1) {
@ -243,7 +243,7 @@ class _MediaViewerViewState extends State<MediaViewerView> {
videoPath = videoPathTmp.path;
});
}).catchError((Object error) {
Logger("media_viewer_view.dart").shout(error);
Log.error(error);
});
}
}

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/gestures.dart';
import 'package:logging/logging.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:url_launcher/url_launcher.dart';
class BetterText extends StatelessWidget {
@ -38,7 +38,7 @@ class BetterText extends StatelessWidget {
try {
await launchUrl(lUrl);
} catch (e) {
Logger("launchUrl").shout("Could not launch $e");
Log.error("Could not launch $e");
}
},
));

View file

@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:logging/logging.dart';
import 'package:twonly/src/database/daos/contacts_dao.dart';
import 'package:twonly/src/database/twonly_database.dart';
import 'package:twonly/src/model/json/userdata.dart';
import 'package:twonly/src/utils/log.dart';
class ContactAvatar extends StatelessWidget {
final Contact? contact;
@ -48,7 +48,7 @@ class ContactAvatar extends StatelessWidget {
child: SvgPicture.string(
avatarSvg,
errorBuilder: (context, error, stackTrace) {
Logger("ui.avater").shout("$error");
Log.error("$error");
return Container();
},
),

View file

@ -1,11 +1,11 @@
import 'dart:async';
import 'dart:convert';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:logging/logging.dart';
import 'package:twonly/globals.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:twonly/src/services/signal/identity.signal.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/views/components/alert_dialog.dart';
import 'package:twonly/src/model/json/userdata.dart';
import 'package:twonly/src/utils/misc.dart';
@ -42,7 +42,7 @@ class _RegisterViewState extends State<RegisterView> {
});
if (res.isSuccess) {
Logger("create_new_user").info("Got user_id ${res.value} from server");
Log.info("Got user_id ${res.value} from server");
final userData = UserData(
userId: res.value.userid.toInt(),
username: username,

View file

@ -1,7 +1,7 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:logging/logging.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/utils/misc.dart';
import 'package:url_launcher/url_launcher.dart';
@ -35,11 +35,11 @@ class _FaqViewState extends State<FaqView> {
noInternet = false;
});
} else {
Logger("faq.dart").shout("FAQ got ${response.statusCode}");
Log.error("FAQ got ${response.statusCode}");
// throw Exception('Failed to load FAQ data');
}
} catch (e) {
Logger("faq.dart").shout(e);
Log.error(e);
setState(() {
noInternet = true;
});
@ -101,7 +101,7 @@ class _FaqViewState extends State<FaqView> {
try {
await launchUrl(Uri.parse("$domain$path"));
} catch (e) {
Logger("launchUrl").shout("Could not launch $e");
Log.error("Could not launch $e");
}
}
}

View file

@ -3,11 +3,11 @@ import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:logging/logging.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/database/daos/contacts_dao.dart';
import 'package:twonly/src/model/protobuf/api/server_to_client.pb.dart';
import 'package:twonly/src/services/api/utils.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/utils/misc.dart';
import 'package:twonly/src/utils/storage.dart';
import 'package:twonly/src/views/components/alert_dialog.dart';
@ -28,7 +28,7 @@ Future<List<Response_AddAccountsInvite>?> loadAdditionalUserInvites() async {
ballance =
decoded.map((x) => Response_AddAccountsInvite.fromJson(x)).toList();
} catch (e) {
Logger("additional_users_view.dart").shout("from json: $e");
Log.error("from json: $e");
}
}
return ballance;

View file

@ -2,7 +2,6 @@ import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:intl/intl.dart';
import 'package:logging/logging.dart';
import 'package:provider/provider.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/database/daos/contacts_dao.dart';
@ -10,6 +9,7 @@ import 'package:twonly/src/database/twonly_database.dart';
import 'package:twonly/src/model/protobuf/api/error.pb.dart';
import 'package:twonly/src/model/protobuf/api/server_to_client.pb.dart';
import 'package:twonly/src/providers/connection.provider.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/utils/misc.dart';
import 'package:twonly/src/utils/storage.dart';
import 'package:twonly/src/views/components/better_list_title.dart';
@ -49,7 +49,7 @@ Future<Response_PlanBallance?> loadPlanBallance() async {
user.lastPlanBallance!,
);
} catch (e) {
Logger("subscription_view.dart").shout("from json: $e");
Log.error("from json: $e");
}
}
return ballance;