SendMessageToGroupError + Cwtch Version Bump #76

Merged
erinn merged 4 commits from groups into trunk 2021-05-11 00:46:57 +00:00
4 changed files with 33 additions and 6 deletions

View File

@ -1 +1 @@
v0.0.2-20-g7ad9c25-2021-05-07-23-49
v0.0.2-24-ga1095b7-2021-05-11-00-13

View File

@ -100,6 +100,20 @@ class CwtchNotifier {
}
}
break;
case "SendMessageToGroupError":
// from me (already displayed - do not update counter)
print("SendMessageToGroupError: $data");
var idx = data["Signature"];
var key = profileCN.getProfile(data["ProfileOnion"]).contactList.getContact(data["GroupID"]).getMessageKey(idx);
if (key == null) break;
try {
var message = Provider.of<MessageState>(key.currentContext, listen: false);
if (message == null) break;
message.error = true;
} catch (e) {
// ignore, we likely have an old key that has been replaced with an actual signature
}
break;
case "AppError":
print("New App Error: $data");
error.handleUpdate(data["Data"]);
@ -148,11 +162,11 @@ class CwtchNotifier {
print("server state change: $data");
profileCN.getProfile(data["ProfileOnion"]).contactList.contacts.forEach((contact) {
if (contact.isGroup == true && contact.server == data["GroupServer"]) {
print("server state change: $data " + contact.server);
contact.status = data["ConnectionState"];
}
});
break;
default:
print("unhandled event: $type");
}

View File

@ -358,6 +358,7 @@ class MessageState extends ChangeNotifier {
String _senderImage;
String _signature = "";
bool _ackd = false;
bool _error = false;
bool _loaded = false;
MessageState({
@ -372,6 +373,7 @@ class MessageState extends ChangeNotifier {
get message => this._message;
get timestamp => this._timestamp;
get ackd => this._ackd;
get error => this._error;
get senderOnion => this._senderOnion;
get senderImage => this._senderImage;
get loaded => this._loaded;
@ -382,6 +384,11 @@ class MessageState extends ChangeNotifier {
notifyListeners();
}
set error(bool newVal) {
this._error = newVal;
notifyListeners();
}
void tryLoad(BuildContext context) {
Provider.of<FlwtchState>(context, listen: false).cwtch.GetMessage(profileOnion, contactHandle, messageIndex).then((jsonMessage) {
dynamic messageWrapper = jsonDecode(jsonMessage);
@ -406,8 +413,12 @@ class MessageState extends ChangeNotifier {
}
this._loaded = true;
//update ackd last as it's changenotified
this._ackd = messageWrapper['Acknowledged'];
//update ackd and error last as they are changenotified
this.ackd = messageWrapper['Acknowledged'];
if (messageWrapper['Error'] != null) {
this.error = true;
}
});
}
}

View File

@ -61,9 +61,11 @@ class MessageBubbleState extends State<MessageBubble> {
textAlign: fromMe ? TextAlign.right : TextAlign.left),
!fromMe
? SizedBox(width: 1, height: 1)
: Provider.of<MessageState>(context).ackd
: Provider.of<MessageState>(context).ackd == true
? Icon(Icons.check_circle_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 12)
: Icon(Icons.hourglass_bottom_outlined, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 12)
: (Provider.of<MessageState>(context).error == true
? Icon(Icons.error_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 12)
: Icon(Icons.hourglass_bottom_outlined, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 12))
],
));