Merge pull request 'reduce blinking when loading messages' (#83) from erinnfixes into trunk
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
Reviewed-on: #83
This commit is contained in:
commit
a0a0a8db99
|
@ -370,6 +370,7 @@ class MessageState extends ChangeNotifier {
|
||||||
this.contactHandle,
|
this.contactHandle,
|
||||||
this.messageIndex,
|
this.messageIndex,
|
||||||
}) {
|
}) {
|
||||||
|
this._senderOnion = profileOnion;
|
||||||
tryLoad(context);
|
tryLoad(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -400,9 +401,8 @@ class MessageState extends ChangeNotifier {
|
||||||
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);
|
||||||
if (messageWrapper['Message'] == null || messageWrapper['Message'] == '' || messageWrapper['Message'] == '{}') {
|
if (messageWrapper['Message'] == null || messageWrapper['Message'] == '' || messageWrapper['Message'] == '{}') {
|
||||||
this._senderOnion = profileOnion;
|
|
||||||
//todo: remove once sent group messages are prestored
|
//todo: remove once sent group messages are prestored
|
||||||
Future.delayed(const Duration(milliseconds: 200), () {
|
Future.delayed(const Duration(milliseconds: 2), () {
|
||||||
tryLoad(context);
|
tryLoad(context);
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -11,84 +11,8 @@ class MessageLoadingBubble extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class MessageLoadingBubbleState extends State<MessageLoadingBubble> {
|
class MessageLoadingBubbleState extends State<MessageLoadingBubble> {
|
||||||
FocusNode _focus = FocusNode();
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var fromMe = Provider.of<MessageState>(context).senderOnion == Provider.of<ProfileInfoState>(context).onion;
|
return Center(child:Row(children:[SizedBox(width:40, height:100, child: Text(""))]));
|
||||||
var prettyDate = "";
|
|
||||||
var borderRadiousEh = 15.0;
|
|
||||||
var myKey = Provider.of<MessageState>(context).profileOnion + "::" + Provider.of<MessageState>(context).contactHandle + "::" + Provider.of<MessageState>(context).messageIndex.toString();
|
|
||||||
|
|
||||||
if (Provider.of<MessageState>(context).timestamp != null) {
|
|
||||||
// user-configurable timestamps prolly ideal? #todo
|
|
||||||
prettyDate = DateFormat.yMd().add_jm().format(Provider.of<MessageState>(context).timestamp);
|
|
||||||
}
|
|
||||||
|
|
||||||
var senderDisplayStr = "";
|
|
||||||
if (Provider.of<MessageState>(context).senderOnion != null) {
|
|
||||||
var contact = Provider.of<ProfileInfoState>(context).contactList.getContact(Provider.of<MessageState>(context).senderOnion);
|
|
||||||
if (contact == null) {
|
|
||||||
senderDisplayStr = Provider.of<MessageState>(context).senderOnion;
|
|
||||||
} else {
|
|
||||||
senderDisplayStr = contact.nickname ?? contact.onion;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var wdgSender = SelectableText(senderDisplayStr,
|
|
||||||
style: TextStyle(fontSize: 9.0, color: fromMe ? Provider.of<Settings>(context).theme.messageFromMeTextColor() : Provider.of<Settings>(context).theme.messageFromOtherTextColor()));
|
|
||||||
|
|
||||||
var wdgMessage = SelectableText(
|
|
||||||
"loading" + '\u202F',
|
|
||||||
key: Key(myKey),
|
|
||||||
focusNode: _focus,
|
|
||||||
style: TextStyle(
|
|
||||||
color: fromMe ? Provider.of<Settings>(context).theme.messageFromMeTextColor() : Provider.of<Settings>(context).theme.messageFromOtherTextColor(),
|
|
||||||
),
|
|
||||||
textAlign: TextAlign.left,
|
|
||||||
textWidthBasis: TextWidthBasis.longestLine,
|
|
||||||
);
|
|
||||||
|
|
||||||
var wdgDecorations = Center(
|
|
||||||
widthFactor: 1.0,
|
|
||||||
child: Row(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
Text(prettyDate,
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 9.0,
|
|
||||||
color: fromMe ? Provider.of<Settings>(context).theme.messageFromMeTextColor() : Provider.of<Settings>(context).theme.messageFromOtherTextColor(),
|
|
||||||
),
|
|
||||||
textAlign: fromMe ? TextAlign.right : TextAlign.left),
|
|
||||||
!fromMe
|
|
||||||
? SizedBox(width: 1, height: 1)
|
|
||||||
: Provider.of<MessageState>(context).ackd
|
|
||||||
? 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)
|
|
||||||
],
|
|
||||||
));
|
|
||||||
|
|
||||||
return LayoutBuilder(builder: (context, constraints) {
|
|
||||||
//print(constraints.toString()+", "+constraints.maxWidth.toString());
|
|
||||||
return Container(
|
|
||||||
child: Container(
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: fromMe ? Provider.of<Settings>(context).theme.messageFromMeBackgroundColor() : Provider.of<Settings>(context).theme.messageFromOtherBackgroundColor(),
|
|
||||||
border:
|
|
||||||
Border.all(color: fromMe ? Provider.of<Settings>(context).theme.messageFromMeBackgroundColor() : Provider.of<Settings>(context).theme.messageFromOtherBackgroundColor(), width: 1),
|
|
||||||
borderRadius: BorderRadius.only(
|
|
||||||
topLeft: Radius.circular(borderRadiousEh),
|
|
||||||
topRight: Radius.circular(borderRadiousEh),
|
|
||||||
bottomLeft: fromMe ? Radius.circular(borderRadiousEh) : Radius.zero,
|
|
||||||
bottomRight: fromMe ? Radius.zero : Radius.circular(borderRadiousEh),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.all(9.0),
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: fromMe ? CrossAxisAlignment.end : CrossAxisAlignment.start,
|
|
||||||
mainAxisAlignment: fromMe ? MainAxisAlignment.end : MainAxisAlignment.start,
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: fromMe ? [wdgMessage, wdgDecorations] : [wdgSender, wdgMessage, wdgDecorations]))));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue