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; 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": case "AppError":
print("New App Error: $data"); print("New App Error: $data");
error.handleUpdate(data["Data"]); error.handleUpdate(data["Data"]);
@ -148,11 +162,11 @@ class CwtchNotifier {
print("server state change: $data"); print("server state change: $data");
profileCN.getProfile(data["ProfileOnion"]).contactList.contacts.forEach((contact) { profileCN.getProfile(data["ProfileOnion"]).contactList.contacts.forEach((contact) {
if (contact.isGroup == true && contact.server == data["GroupServer"]) { if (contact.isGroup == true && contact.server == data["GroupServer"]) {
print("server state change: $data " + contact.server);
contact.status = data["ConnectionState"]; contact.status = data["ConnectionState"];
} }
}); });
break; break;
default: default:
print("unhandled event: $type"); print("unhandled event: $type");
} }

View File

@ -358,6 +358,7 @@ class MessageState extends ChangeNotifier {
String _senderImage; String _senderImage;
String _signature = ""; String _signature = "";
bool _ackd = false; bool _ackd = false;
bool _error = false;
bool _loaded = false; bool _loaded = false;
MessageState({ MessageState({
@ -372,6 +373,7 @@ class MessageState extends ChangeNotifier {
get message => this._message; get message => this._message;
get timestamp => this._timestamp; get timestamp => this._timestamp;
get ackd => this._ackd; get ackd => this._ackd;
get error => this._error;
get senderOnion => this._senderOnion; get senderOnion => this._senderOnion;
get senderImage => this._senderImage; get senderImage => this._senderImage;
get loaded => this._loaded; get loaded => this._loaded;
@ -382,6 +384,11 @@ class MessageState extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
set error(bool newVal) {
this._error = newVal;
notifyListeners();
}
void tryLoad(BuildContext context) { void tryLoad(BuildContext context) {
Provider.of<FlwtchState>(context, listen: false).cwtch.GetMessage(profileOnion, contactHandle, messageIndex).then((jsonMessage) { Provider.of<FlwtchState>(context, listen: false).cwtch.GetMessage(profileOnion, contactHandle, messageIndex).then((jsonMessage) {
dynamic messageWrapper = jsonDecode(jsonMessage); dynamic messageWrapper = jsonDecode(jsonMessage);
@ -406,8 +413,12 @@ class MessageState extends ChangeNotifier {
} }
this._loaded = true; 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), textAlign: fromMe ? TextAlign.right : TextAlign.left),
!fromMe !fromMe
? SizedBox(width: 1, height: 1) ? 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.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))
], ],
)); ));