mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 14:08:40 +00:00
use new logging system
This commit is contained in:
parent
a18c58430a
commit
7997bc2fa0
22 changed files with 71 additions and 97 deletions
|
|
@ -1,8 +1,8 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:drift/drift.dart';
|
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/tables/media_download_table.dart';
|
||||||
import 'package:twonly/src/database/twonly_database.dart';
|
import 'package:twonly/src/database/twonly_database.dart';
|
||||||
|
import 'package:twonly/src/utils/log.dart';
|
||||||
|
|
||||||
part 'media_downloads_dao.g.dart';
|
part 'media_downloads_dao.g.dart';
|
||||||
|
|
||||||
|
|
@ -21,8 +21,7 @@ class MediaDownloadsDao extends DatabaseAccessor<TwonlyDatabase>
|
||||||
try {
|
try {
|
||||||
return await into(mediaDownloads).insert(values);
|
return await into(mediaDownloads).insert(values);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("media_downloads_dao.dart")
|
Log.error("Error while inserting media upload: $e");
|
||||||
.shout("Error while inserting media upload: $e");
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:drift/drift.dart';
|
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/tables/media_uploads_table.dart';
|
||||||
import 'package:twonly/src/database/twonly_database.dart';
|
import 'package:twonly/src/database/twonly_database.dart';
|
||||||
|
import 'package:twonly/src/utils/log.dart';
|
||||||
|
|
||||||
part 'media_uploads_dao.g.dart';
|
part 'media_uploads_dao.g.dart';
|
||||||
|
|
||||||
|
|
@ -28,8 +28,7 @@ class MediaUploadsDao extends DatabaseAccessor<TwonlyDatabase>
|
||||||
try {
|
try {
|
||||||
return await into(mediaUploads).insert(values);
|
return await into(mediaUploads).insert(values);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("media_uploads_dao.dart")
|
Log.error("Error while inserting media upload: $e");
|
||||||
.shout("Error while inserting media upload: $e");
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import 'package:drift/drift.dart';
|
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/contacts_table.dart';
|
||||||
import 'package:twonly/src/database/tables/messages_table.dart';
|
import 'package:twonly/src/database/tables/messages_table.dart';
|
||||||
import 'package:twonly/src/database/twonly_database.dart';
|
import 'package:twonly/src/database/twonly_database.dart';
|
||||||
|
import 'package:twonly/src/utils/log.dart';
|
||||||
|
|
||||||
part 'messages_dao.g.dart';
|
part 'messages_dao.g.dart';
|
||||||
|
|
||||||
|
|
@ -170,7 +170,7 @@ class MessagesDao extends DatabaseAccessor<TwonlyDatabase>
|
||||||
|
|
||||||
return await into(messages).insert(message);
|
return await into(messages).insert(message);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("twonlyDatabase").shout("Error while inserting message: $e");
|
Log.error("Error while inserting message: $e");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:libsignal_protocol_dart/libsignal_protocol_dart.dart';
|
import 'package:libsignal_protocol_dart/libsignal_protocol_dart.dart';
|
||||||
import 'package:twonly/src/database/twonly_database.dart';
|
import 'package:twonly/src/database/twonly_database.dart';
|
||||||
|
|
@ -62,7 +61,7 @@ class ConnectPreKeyStore extends PreKeyStore {
|
||||||
try {
|
try {
|
||||||
await twonlyDB.into(twonlyDB.signalPreKeyStores).insert(preKeyCompanion);
|
await twonlyDB.into(twonlyDB.signalPreKeyStores).insert(preKeyCompanion);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("pre_key_store").shout("$e");
|
Log.error("$e");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import 'package:http/http.dart' as http;
|
||||||
// import 'package:twonly/src/providers/api/api_utils.dart';
|
// import 'package:twonly/src/providers/api/api_utils.dart';
|
||||||
import 'package:twonly/src/services/api/media_send.dart';
|
import 'package:twonly/src/services/api/media_send.dart';
|
||||||
import 'package:cryptography_plus/cryptography_plus.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'
|
import 'package:twonly/src/model/protobuf/api/client_to_server.pb.dart'
|
||||||
as client;
|
as client;
|
||||||
import 'package:twonly/src/utils/log.dart';
|
import 'package:twonly/src/utils/log.dart';
|
||||||
|
|
@ -82,7 +81,7 @@ Future startDownloadMedia(Message message, bool force) async {
|
||||||
DateTime started = downloadStartedForMediaReceived[message.messageId]!;
|
DateTime started = downloadStartedForMediaReceived[message.messageId]!;
|
||||||
Duration elapsed = DateTime.now().difference(started);
|
Duration elapsed = DateTime.now().difference(started);
|
||||||
if (elapsed <= Duration(seconds: 60)) {
|
if (elapsed <= Duration(seconds: 60)) {
|
||||||
Logger("media_received.dart").shout("Download already started...");
|
Log.error("Download already started...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -151,7 +150,7 @@ Future startDownloadMedia(Message message, bool force) async {
|
||||||
downloaded += chunk.length;
|
downloaded += chunk.length;
|
||||||
}, onDone: () async {
|
}, onDone: () async {
|
||||||
if (r.statusCode != 200) {
|
if (r.statusCode != 200) {
|
||||||
Logger("media_received.dart").shout("Download error: $r");
|
Log.error("Download error: $r");
|
||||||
await twonlyDB.messagesDao.updateMessageByMessageId(
|
await twonlyDB.messagesDao.updateMessageByMessageId(
|
||||||
message.messageId,
|
message.messageId,
|
||||||
MessagesCompanion(
|
MessagesCompanion(
|
||||||
|
|
@ -184,8 +183,7 @@ Future handleEncryptedFile(Message msg, {Uint8List? encryptedBytesTmp}) async {
|
||||||
encryptedBytesTmp ?? await readMediaFile(msg.messageId, "encrypted");
|
encryptedBytesTmp ?? await readMediaFile(msg.messageId, "encrypted");
|
||||||
|
|
||||||
if (encryptedBytes == null) {
|
if (encryptedBytes == null) {
|
||||||
Logger("media_received.dart")
|
Log.error("encrypted bytes are not found for ${msg.messageId}");
|
||||||
.shout("encrypted bytes are not found for ${msg.messageId}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MediaMessageContent content =
|
MediaMessageContent content =
|
||||||
|
|
@ -213,7 +211,7 @@ Future handleEncryptedFile(Message msg, {Uint8List? encryptedBytesTmp}) async {
|
||||||
|
|
||||||
await writeMediaFile(msg.messageId, "png", imageBytes);
|
await writeMediaFile(msg.messageId, "png", imageBytes);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("media_received.dart").info("Decryption error: $e");
|
Log.error("Decryption error: $e");
|
||||||
await twonlyDB.messagesDao.updateMessageByMessageId(
|
await twonlyDB.messagesDao.updateMessageByMessageId(
|
||||||
msg.messageId,
|
msg.messageId,
|
||||||
MessagesCompanion(
|
MessagesCompanion(
|
||||||
|
|
@ -275,7 +273,7 @@ Future<void> deleteMediaFile(int mediaId, String type) async {
|
||||||
await file.delete();
|
await file.delete();
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} 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) {
|
} catch (e) {
|
||||||
Logger("media_received.dart").shout("$e");
|
Log.error("$e");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ import 'dart:typed_data';
|
||||||
import 'package:cryptography_plus/cryptography_plus.dart';
|
import 'package:cryptography_plus/cryptography_plus.dart';
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:flutter_image_compress/flutter_image_compress.dart';
|
import 'package:flutter_image_compress/flutter_image_compress.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:mutex/mutex.dart';
|
import 'package:mutex/mutex.dart';
|
||||||
import 'package:path/path.dart';
|
import 'package:path/path.dart';
|
||||||
import 'package:path_provider/path_provider.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/utils.dart';
|
||||||
import 'package:twonly/src/services/api/media_received.dart';
|
import 'package:twonly/src/services/api/media_received.dart';
|
||||||
import 'package:twonly/src/services/notification.service.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/misc.dart';
|
||||||
import 'package:twonly/src/utils/storage.dart';
|
import 'package:twonly/src/utils/storage.dart';
|
||||||
import 'package:video_compress/video_compress.dart';
|
import 'package:video_compress/video_compress.dart';
|
||||||
|
|
@ -78,7 +78,7 @@ Future retryMediaUpload({int maxRetries = 3}) async {
|
||||||
}
|
}
|
||||||
await twonlyDB.mediaUploadsDao
|
await twonlyDB.mediaUploadsDao
|
||||||
.deleteMediaUpload(mediaFile.mediaUploadId);
|
.deleteMediaUpload(mediaFile.mediaUploadId);
|
||||||
Logger("media_send.dart").shout(
|
Log.info(
|
||||||
"upload can be removed, the finalized function was never called...");
|
"upload can be removed, the finalized function was never called...");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -123,7 +123,7 @@ Future<Uint8List> addOrModifyImageToUpload(
|
||||||
}
|
}
|
||||||
await writeMediaFile(mediaUploadId, "png", imageBytesCompressed);
|
await writeMediaFile(mediaUploadId, "png", imageBytesCompressed);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("media_send.dart").shout("$e");
|
Log.error("$e");
|
||||||
// as a fall back use the original image
|
// as a fall back use the original image
|
||||||
await writeMediaFile(mediaUploadId, "png", imageBytes);
|
await writeMediaFile(mediaUploadId, "png", imageBytes);
|
||||||
imageBytesCompressed = imageBytes;
|
imageBytesCompressed = imageBytes;
|
||||||
|
|
@ -203,12 +203,6 @@ Future encryptAndPreUploadMediaFiles(
|
||||||
await handleNextMediaUploadSteps(mediaUploadId);
|
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,
|
Future finalizeUpload(int mediaUploadId, List<int> contactIds,
|
||||||
bool isRealTwonly, bool isVideo, bool mirrorVideo, int maxShowTime) async {
|
bool isRealTwonly, bool isVideo, bool mirrorVideo, int maxShowTime) async {
|
||||||
MediaUploadMetadata metadata = MediaUploadMetadata();
|
MediaUploadMetadata metadata = MediaUploadMetadata();
|
||||||
|
|
@ -251,8 +245,7 @@ Future finalizeUpload(int mediaUploadId, List<int> contactIds,
|
||||||
if (messageId != null) {
|
if (messageId != null) {
|
||||||
messageIds.add(messageId);
|
messageIds.add(messageId);
|
||||||
} else {
|
} else {
|
||||||
Logger("media_send.dart")
|
Log.error("Error inserting media upload message in database.");
|
||||||
.shout("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
|
// download tokens are known so send the media file to the receivers
|
||||||
await handleNotifyReceiver(mediaUpload);
|
await handleNotifyReceiver(mediaUpload);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("media_send.dart")
|
Log.error("Non recoverable error while sending media file: $e");
|
||||||
.shout("Non recoverable error while sending media file: $e");
|
|
||||||
await handleUploadError(mediaUpload);
|
await handleUploadError(mediaUpload);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -350,8 +342,7 @@ Future<bool> handleUploadDone(MediaUpload media) async {
|
||||||
throw Exception("PlanLimitReached");
|
throw Exception("PlanLimitReached");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Logger("media_send.dart")
|
Log.error("Upload done will be tried again when reconnected to server!");
|
||||||
.info("Upload done will be tried again when reconnected to server!");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -375,7 +366,7 @@ Future<bool> handleMediaUpload(int mediaUploadId) async {
|
||||||
final storage = FlutterSecureStorage();
|
final storage = FlutterSecureStorage();
|
||||||
String? apiAuthToken = await storage.read(key: "api_auth_token");
|
String? apiAuthToken = await storage.read(key: "api_auth_token");
|
||||||
if (apiAuthToken == null) {
|
if (apiAuthToken == null) {
|
||||||
Logger("media_send.dart").shout("api auth token not defined.");
|
Log.error("api auth token not defined.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -402,7 +393,7 @@ Future<bool> handleMediaUpload(int mediaUploadId) async {
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
if (response.body.length != 64) {
|
if (response.body.length != 64) {
|
||||||
Logger("media_send.dart").info("Got invalid upload token.");
|
Log.error("Got invalid upload token.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -421,7 +412,7 @@ Future<bool> handleMediaUpload(int mediaUploadId) async {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("media_send.dart").shout("Exception during upload: $e");
|
Log.error("Exception during upload: $e");
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -527,11 +518,11 @@ Future<bool> compressVideoIfExists(int mediaUploadId) async {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("media_send.dart").shout("Video compression: $e");
|
Log.error("during video compression: $e");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mediaInfo == null) {
|
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
|
// as a fall back use the non compressed version
|
||||||
await videoOriginalFile.copy(videoCompressedFile.path);
|
await videoOriginalFile.copy(videoCompressedFile.path);
|
||||||
await videoOriginalFile.delete();
|
await videoOriginalFile.delete();
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ import 'dart:convert';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:mutex/mutex.dart';
|
import 'package:mutex/mutex.dart';
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/src/database/twonly_database.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/services/signal/encryption.signal.dart';
|
||||||
import 'package:twonly/src/utils/hive.dart';
|
import 'package:twonly/src/utils/hive.dart';
|
||||||
import 'package:twonly/src/services/notification.service.dart';
|
import 'package:twonly/src/services/notification.service.dart';
|
||||||
|
import 'package:twonly/src/utils/log.dart';
|
||||||
import 'package:twonly/src/utils/storage.dart';
|
import 'package:twonly/src/utils/storage.dart';
|
||||||
|
|
||||||
final lockSendingMessages = Mutex();
|
final lockSendingMessages = Mutex();
|
||||||
|
|
@ -23,7 +23,7 @@ Future tryTransmitMessages() async {
|
||||||
|
|
||||||
if (retransmit.isEmpty) return;
|
if (retransmit.isEmpty) return;
|
||||||
|
|
||||||
Logger("api.dart").info("try sending messages: ${retransmit.length}");
|
Log.info("try sending messages: ${retransmit.length}");
|
||||||
|
|
||||||
Map<String, dynamic> failed = {};
|
Map<String, dynamic> failed = {};
|
||||||
|
|
||||||
|
|
@ -102,7 +102,7 @@ Future<Map<String, dynamic>> getAllMessagesForRetransmitting() async {
|
||||||
try {
|
try {
|
||||||
retransmit = jsonDecode(retransmitJson);
|
retransmit = jsonDecode(retransmitJson);
|
||||||
} catch (e) {
|
} 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");
|
await box.delete("messages-to-retransmit");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -140,7 +140,7 @@ Future<(String, RetransmitMessage)?> encryptMessage(
|
||||||
Uint8List? bytes = await signalEncryptMessage(userId, msg);
|
Uint8List? bytes = await signalEncryptMessage(userId, msg);
|
||||||
|
|
||||||
if (bytes == null) {
|
if (bytes == null) {
|
||||||
Logger("api.dart").shout("Error encryption message!");
|
Log.error("Error encryption message!");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ import 'dart:convert';
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:fixnum/fixnum.dart';
|
import 'package:fixnum/fixnum.dart';
|
||||||
import 'package:libsignal_protocol_dart/libsignal_protocol_dart.dart';
|
import 'package:libsignal_protocol_dart/libsignal_protocol_dart.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:mutex/mutex.dart';
|
import 'package:mutex/mutex.dart';
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/src/database/twonly_database.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/notification.service.dart';
|
||||||
import 'package:twonly/src/services/signal/encryption.signal.dart';
|
import 'package:twonly/src/services/signal/encryption.signal.dart';
|
||||||
import 'package:twonly/src/services/signal/identity.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';
|
import 'package:twonly/src/utils/misc.dart';
|
||||||
|
|
||||||
final lockHandleServerMessage = Mutex();
|
final lockHandleServerMessage = Mutex();
|
||||||
|
|
@ -36,8 +36,7 @@ Future handleServerMessage(server.ServerToClient msg) async {
|
||||||
int fromUserId = msg.v0.newMessage.fromUserId.toInt();
|
int fromUserId = msg.v0.newMessage.fromUserId.toInt();
|
||||||
response = await handleNewMessage(fromUserId, body);
|
response = await handleNewMessage(fromUserId, body);
|
||||||
} else {
|
} else {
|
||||||
Logger("handleServerMessage")
|
Log.error("Got a new message from the server: $msg");
|
||||||
.shout("Got a new message from the server: $msg");
|
|
||||||
response = client.Response()..error = ErrorCode.InternalError;
|
response = client.Response()..error = ErrorCode.InternalError;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
@ -55,8 +54,7 @@ Future handleServerMessage(server.ServerToClient msg) async {
|
||||||
Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
|
Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
|
||||||
MessageJson? message = await signalDecryptMessage(fromUserId, body);
|
MessageJson? message = await signalDecryptMessage(fromUserId, body);
|
||||||
if (message == null) {
|
if (message == null) {
|
||||||
Logger("server_messages")
|
Log.info("Got invalid cipher text from $fromUserId. Deleting it.");
|
||||||
.info("Got invalid cipher text from $fromUserId. Deleting it.");
|
|
||||||
// Message is not valid, so server can delete it
|
// Message is not valid, so server can delete it
|
||||||
var ok = client.Response_Ok()..none = true;
|
var ok = client.Response_Ok()..none = true;
|
||||||
return client.Response()..ok = ok;
|
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.media &&
|
||||||
message.kind != MessageKind.storedMediaFile &&
|
message.kind != MessageKind.storedMediaFile &&
|
||||||
message.kind != MessageKind.reopenedMedia) {
|
message.kind != MessageKind.reopenedMedia) {
|
||||||
Logger("handleServerMessages")
|
Log.error("Got unknown MessageKind $message");
|
||||||
.shout("Got unknown MessageKind $message");
|
|
||||||
} else if (message.content == null || message.messageId == null) {
|
} else if (message.content == null || message.messageId == null) {
|
||||||
Logger("handleServerMessages")
|
Log.error("Content or messageid not defined $message");
|
||||||
.shout("Content or messageid not defined $message");
|
|
||||||
} else {
|
} else {
|
||||||
final content = message.content!;
|
final content = message.content!;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import 'package:firebase_core/firebase_core.dart';
|
import 'package:firebase_core/firebase_core.dart';
|
||||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/app.dart';
|
import 'package:twonly/app.dart';
|
||||||
import 'package:twonly/src/database/twonly_database.dart';
|
import 'package:twonly/src/database/twonly_database.dart';
|
||||||
|
|
@ -22,7 +21,7 @@ Future initFCMAfterAuthenticated() async {
|
||||||
try {
|
try {
|
||||||
final fcmToken = await FirebaseMessaging.instance.getToken();
|
final fcmToken = await FirebaseMessaging.instance.getToken();
|
||||||
if (fcmToken == null) {
|
if (fcmToken == null) {
|
||||||
Logger("init_fcm_service").shout("Error getting fcmToken");
|
Log.error("Error getting fcmToken");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -35,10 +34,10 @@ Future initFCMAfterAuthenticated() async {
|
||||||
await apiService.updateFCMToken(fcmToken);
|
await apiService.updateFCMToken(fcmToken);
|
||||||
await storage.write(key: "google_fcm", value: fcmToken);
|
await storage.write(key: "google_fcm", value: fcmToken);
|
||||||
}).onError((err) {
|
}).onError((err) {
|
||||||
// Logger("init_fcm_service").shout("Error getting fcmToken");
|
Log.error("could not listen on token refresh");
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} 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')
|
@pragma('vm:entry-point')
|
||||||
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
|
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
|
||||||
initLogger();
|
initLogger();
|
||||||
Logger("firebase-background")
|
Log.info('Handling a background message: ${message.messageId}');
|
||||||
.info('Handling a background message: ${message.messageId}');
|
|
||||||
twonlyDB = TwonlyDatabase();
|
twonlyDB = TwonlyDatabase();
|
||||||
await handleRemoteMessage(message);
|
await handleRemoteMessage(message);
|
||||||
|
|
||||||
|
|
@ -90,7 +88,7 @@ Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
|
||||||
|
|
||||||
Future handleRemoteMessage(RemoteMessage message) async {
|
Future handleRemoteMessage(RemoteMessage message) async {
|
||||||
if (!Platform.isAndroid) {
|
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) {
|
if (message.notification != null) {
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:flutter_svg/svg.dart';
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/src/database/daos/contacts_dao.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) {
|
kind != PushKind.testNotification) {
|
||||||
// this will be enforced after every app uses this system... :/
|
// this will be enforced after every app uses this system... :/
|
||||||
// return null;
|
// return null;
|
||||||
Logger("notification_service").shout(
|
Log.error("Using insecure key as the receiver does not send a push key!");
|
||||||
"Using insecure key as the receiver does not send a push key!");
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
key = pushKeys[toUserId]!.keys.last.key;
|
key = pushKeys[toUserId]!.keys.last.key;
|
||||||
keyId = pushKeys[toUserId]!.keys.last.id;
|
keyId = pushKeys[toUserId]!.keys.last.id;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("notification_service")
|
Log.error("No push notification key found for user $toUserId");
|
||||||
.shout("No push notification key found for user $toUserId");
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -303,7 +300,6 @@ Future<PushKind?> tryDecryptMessage(
|
||||||
return PushKindExtension.fromString(plaintextString);
|
return PushKindExtension.fromString(plaintextString);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// this error is allowed to happen...
|
// this error is allowed to happen...
|
||||||
// Logger("notification-service").shout(e);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -348,7 +344,7 @@ Future handlePushData(String pushDataJson) async {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("notification-service").shout(e);
|
Log.error(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -473,8 +469,7 @@ Future showLocalPushNotification(
|
||||||
title = getContactDisplayName(user);
|
title = getContactDisplayName(user);
|
||||||
body = getPushNotificationText(pushKind);
|
body = getPushNotificationText(pushKind);
|
||||||
if (body == "") {
|
if (body == "") {
|
||||||
Logger("localPushNotificationNewMessage")
|
Log.error("No push notification type defined!");
|
||||||
.shout("No push notification type defined!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePathAndroidBitmap? styleInformation;
|
FilePathAndroidBitmap? styleInformation;
|
||||||
|
|
@ -513,8 +508,7 @@ Future showLocalPushNotificationWithoutUserId(
|
||||||
|
|
||||||
body = getPushNotificationTextWithoutUserId(pushKind);
|
body = getPushNotificationTextWithoutUserId(pushKind);
|
||||||
if (body == "") {
|
if (body == "") {
|
||||||
Logger("localPushNotificationNewMessage")
|
Log.error("No push notification type defined!");
|
||||||
.shout("No push notification type defined!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AndroidNotificationDetails androidNotificationDetails =
|
AndroidNotificationDetails androidNotificationDetails =
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:twonly/src/services/notification.service.dart';
|
import 'package:twonly/src/services/notification.service.dart';
|
||||||
|
import 'package:twonly/src/utils/log.dart';
|
||||||
|
|
||||||
Future initMediaStorage() async {
|
Future initMediaStorage() async {
|
||||||
final storage = FlutterSecureStorage();
|
final storage = FlutterSecureStorage();
|
||||||
|
|
@ -35,7 +35,7 @@ Future<Box> getMediaStorage() async {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
await customLocalPushNotification("Secure Storage Error",
|
await customLocalPushNotification("Secure Storage Error",
|
||||||
"Settings > Apps > twonly > Storage and Cache > Press clear on both");
|
"Settings > Apps > twonly > Storage and Cache > Press clear on both");
|
||||||
Logger("hive.dart").shout(e);
|
Log.error(e);
|
||||||
throw Exception(e);
|
throw Exception(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:twonly/src/model/json/userdata.dart';
|
import 'package:twonly/src/model/json/userdata.dart';
|
||||||
|
import 'package:twonly/src/utils/log.dart';
|
||||||
|
|
||||||
Future<bool> isUserCreated() async {
|
Future<bool> isUserCreated() async {
|
||||||
UserData? user = await getUser();
|
UserData? user = await getUser();
|
||||||
|
|
@ -23,7 +23,7 @@ Future<UserData?> getUser() async {
|
||||||
final user = UserData.fromJson(userMap);
|
final user = UserData.fromJson(userMap);
|
||||||
return user;
|
return user;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("get_user").shout("Error getting user: $e");
|
Log.error("Error getting user: $e");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
|
import 'package:twonly/src/utils/log.dart';
|
||||||
|
|
||||||
class PermissionHandlerView extends StatefulWidget {
|
class PermissionHandlerView extends StatefulWidget {
|
||||||
const PermissionHandlerView({super.key, required this.onSuccess});
|
const PermissionHandlerView({super.key, required this.onSuccess});
|
||||||
|
|
@ -79,7 +79,7 @@ class PermissionHandlerViewState extends State<PermissionHandlerView> {
|
||||||
widget.onSuccess();
|
widget.onSuccess();
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("permissions_view").shout(e);
|
Log.error(e);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:image_picker/image_picker.dart';
|
import 'package:image_picker/image_picker.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
import 'package:screenshot/screenshot.dart';
|
import 'package:screenshot/screenshot.dart';
|
||||||
import 'package:twonly/globals.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/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/video_recording_time.dart';
|
||||||
import 'package:twonly/src/views/camera/camera_preview_components/zoom_selector.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.cameraLoaded = true;
|
||||||
details.cameraId = sCameraId;
|
details.cameraId = sCameraId;
|
||||||
}).catchError((Object e) {
|
}).catchError((Object e) {
|
||||||
Logger("camera_preview.dart").shout("$e");
|
Log.error("$e");
|
||||||
});
|
});
|
||||||
return (details, cameraController);
|
return (details, cameraController);
|
||||||
}
|
}
|
||||||
|
|
@ -429,7 +429,7 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
|
||||||
}
|
}
|
||||||
|
|
||||||
void _showCameraException(dynamic e) {
|
void _showCameraException(dynamic e) {
|
||||||
Logger("ui.camera").shout("$e");
|
Log.error("$e");
|
||||||
try {
|
try {
|
||||||
if (context.mounted) {
|
if (context.mounted) {
|
||||||
// ignore: use_build_context_synchronously
|
// ignore: use_build_context_synchronously
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import 'dart:io';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/src/model/protobuf/api/error.pb.dart' show ErrorCode;
|
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/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/camera_preview_components/save_to_gallery.dart';
|
||||||
import 'package:twonly/src/views/camera/image_editor/action_button.dart';
|
import 'package:twonly/src/views/camera/image_editor/action_button.dart';
|
||||||
import 'package:twonly/src/views/components/alert_dialog.dart';
|
import 'package:twonly/src/views/components/alert_dialog.dart';
|
||||||
|
|
@ -85,7 +85,7 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
|
||||||
videoController!.play();
|
videoController!.play();
|
||||||
setState(() {});
|
setState(() {});
|
||||||
}).catchError((Object error) {
|
}).catchError((Object error) {
|
||||||
Logger("ui.share_image_editor").shout(error);
|
Log.error(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ import 'dart:io';
|
||||||
import 'package:drift/drift.dart' hide Column;
|
import 'package:drift/drift.dart' hide Column;
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
import 'package:no_screenshot/no_screenshot.dart';
|
import 'package:no_screenshot/no_screenshot.dart';
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/src/database/daos/contacts_dao.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/camera/share_image_editor_view.dart';
|
||||||
import 'package:twonly/src/views/components/animate_icon.dart';
|
import 'package:twonly/src/views/components/animate_icon.dart';
|
||||||
import 'package:twonly/src/views/components/media_view_sizing.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");
|
await deleteMediaFile(allMediaFiles.first.messageId, "png");
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("media_viewer_view.dart").shout("$e");
|
Log.error("$e");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (allMediaFiles.isEmpty || allMediaFiles.length == 1) {
|
if (allMediaFiles.isEmpty || allMediaFiles.length == 1) {
|
||||||
|
|
@ -243,7 +243,7 @@ class _MediaViewerViewState extends State<MediaViewerView> {
|
||||||
videoPath = videoPathTmp.path;
|
videoPath = videoPathTmp.path;
|
||||||
});
|
});
|
||||||
}).catchError((Object error) {
|
}).catchError((Object error) {
|
||||||
Logger("media_viewer_view.dart").shout(error);
|
Log.error(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/gestures.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';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
class BetterText extends StatelessWidget {
|
class BetterText extends StatelessWidget {
|
||||||
|
|
@ -38,7 +38,7 @@ class BetterText extends StatelessWidget {
|
||||||
try {
|
try {
|
||||||
await launchUrl(lUrl);
|
await launchUrl(lUrl);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("launchUrl").shout("Could not launch $e");
|
Log.error("Could not launch $e");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/svg.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/daos/contacts_dao.dart';
|
||||||
import 'package:twonly/src/database/twonly_database.dart';
|
import 'package:twonly/src/database/twonly_database.dart';
|
||||||
import 'package:twonly/src/model/json/userdata.dart';
|
import 'package:twonly/src/model/json/userdata.dart';
|
||||||
|
import 'package:twonly/src/utils/log.dart';
|
||||||
|
|
||||||
class ContactAvatar extends StatelessWidget {
|
class ContactAvatar extends StatelessWidget {
|
||||||
final Contact? contact;
|
final Contact? contact;
|
||||||
|
|
@ -48,7 +48,7 @@ class ContactAvatar extends StatelessWidget {
|
||||||
child: SvgPicture.string(
|
child: SvgPicture.string(
|
||||||
avatarSvg,
|
avatarSvg,
|
||||||
errorBuilder: (context, error, stackTrace) {
|
errorBuilder: (context, error, stackTrace) {
|
||||||
Logger("ui.avater").shout("$error");
|
Log.error("$error");
|
||||||
return Container();
|
return Container();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:twonly/src/services/signal/identity.signal.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/views/components/alert_dialog.dart';
|
||||||
import 'package:twonly/src/model/json/userdata.dart';
|
import 'package:twonly/src/model/json/userdata.dart';
|
||||||
import 'package:twonly/src/utils/misc.dart';
|
import 'package:twonly/src/utils/misc.dart';
|
||||||
|
|
@ -42,7 +42,7 @@ class _RegisterViewState extends State<RegisterView> {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res.isSuccess) {
|
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(
|
final userData = UserData(
|
||||||
userId: res.value.userid.toInt(),
|
userId: res.value.userid.toInt(),
|
||||||
username: username,
|
username: username,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:http/http.dart' as http;
|
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:twonly/src/utils/misc.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
|
|
@ -35,11 +35,11 @@ class _FaqViewState extends State<FaqView> {
|
||||||
noInternet = false;
|
noInternet = false;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Logger("faq.dart").shout("FAQ got ${response.statusCode}");
|
Log.error("FAQ got ${response.statusCode}");
|
||||||
// throw Exception('Failed to load FAQ data');
|
// throw Exception('Failed to load FAQ data');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("faq.dart").shout(e);
|
Log.error(e);
|
||||||
setState(() {
|
setState(() {
|
||||||
noInternet = true;
|
noInternet = true;
|
||||||
});
|
});
|
||||||
|
|
@ -101,7 +101,7 @@ class _FaqViewState extends State<FaqView> {
|
||||||
try {
|
try {
|
||||||
await launchUrl(Uri.parse("$domain$path"));
|
await launchUrl(Uri.parse("$domain$path"));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("launchUrl").shout("Could not launch $e");
|
Log.error("Could not launch $e");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ import 'dart:convert';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/src/database/daos/contacts_dao.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/model/protobuf/api/server_to_client.pb.dart';
|
||||||
import 'package:twonly/src/services/api/utils.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/misc.dart';
|
||||||
import 'package:twonly/src/utils/storage.dart';
|
import 'package:twonly/src/utils/storage.dart';
|
||||||
import 'package:twonly/src/views/components/alert_dialog.dart';
|
import 'package:twonly/src/views/components/alert_dialog.dart';
|
||||||
|
|
@ -28,7 +28,7 @@ Future<List<Response_AddAccountsInvite>?> loadAdditionalUserInvites() async {
|
||||||
ballance =
|
ballance =
|
||||||
decoded.map((x) => Response_AddAccountsInvite.fromJson(x)).toList();
|
decoded.map((x) => Response_AddAccountsInvite.fromJson(x)).toList();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("additional_users_view.dart").shout("from json: $e");
|
Log.error("from json: $e");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ballance;
|
return ballance;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ import 'package:collection/collection.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/src/database/daos/contacts_dao.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/error.pb.dart';
|
||||||
import 'package:twonly/src/model/protobuf/api/server_to_client.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/providers/connection.provider.dart';
|
||||||
|
import 'package:twonly/src/utils/log.dart';
|
||||||
import 'package:twonly/src/utils/misc.dart';
|
import 'package:twonly/src/utils/misc.dart';
|
||||||
import 'package:twonly/src/utils/storage.dart';
|
import 'package:twonly/src/utils/storage.dart';
|
||||||
import 'package:twonly/src/views/components/better_list_title.dart';
|
import 'package:twonly/src/views/components/better_list_title.dart';
|
||||||
|
|
@ -49,7 +49,7 @@ Future<Response_PlanBallance?> loadPlanBallance() async {
|
||||||
user.lastPlanBallance!,
|
user.lastPlanBallance!,
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("subscription_view.dart").shout("from json: $e");
|
Log.error("from json: $e");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ballance;
|
return ballance;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue