mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-26 14:59:22 +00:00
Display conversation
This commit is contained in:
parent
782e6bc978
commit
6cbe34379e
@ -1,4 +1,6 @@
|
|||||||
|
import 'package:comunic/helpers/conversations_helper.dart';
|
||||||
import 'package:comunic/models/conversation.dart';
|
import 'package:comunic/models/conversation.dart';
|
||||||
|
import 'package:comunic/ui/screens/conversation_screen.dart';
|
||||||
import 'package:comunic/ui/widgets/safe_state.dart';
|
import 'package:comunic/ui/widgets/safe_state.dart';
|
||||||
import 'package:comunic/ui/widgets/tablet_mode/conversations/conversation_window_container.dart';
|
import 'package:comunic/ui/widgets/tablet_mode/conversations/conversation_window_container.dart';
|
||||||
import 'package:comunic/utils/intl_utils.dart';
|
import 'package:comunic/utils/intl_utils.dart';
|
||||||
@ -28,13 +30,71 @@ class ConversationWindow extends StatefulWidget {
|
|||||||
class _ConversationWindowState extends SafeState<ConversationWindow> {
|
class _ConversationWindowState extends SafeState<ConversationWindow> {
|
||||||
Conversation _conversation;
|
Conversation _conversation;
|
||||||
String _convTitle;
|
String _convTitle;
|
||||||
|
bool _error = false;
|
||||||
|
|
||||||
|
int get _convID => widget.convID;
|
||||||
|
|
||||||
|
void _setError(bool e) => setState(() => _error = e);
|
||||||
|
|
||||||
|
Future<void> _refresh() async {
|
||||||
|
try {
|
||||||
|
_setError(false);
|
||||||
|
|
||||||
|
final conversation =
|
||||||
|
await ConversationsHelper().getSingle(_convID, force: true);
|
||||||
|
assert(conversation != null);
|
||||||
|
final name =
|
||||||
|
await ConversationsHelper.getConversationNameAsync(conversation);
|
||||||
|
assert(name != null);
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
_conversation = conversation;
|
||||||
|
_convTitle = name;
|
||||||
|
});
|
||||||
|
} catch (e, s) {
|
||||||
|
_setError(true);
|
||||||
|
print("Could not refresh the list of conversations! $e\n$s");
|
||||||
|
showSimpleSnack(context, tr("Could not load conversation information!"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_refresh();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
// In case of error
|
||||||
|
if (_error)
|
||||||
|
return ConversationWindowContainer(
|
||||||
|
title: Text(tr("Error")),
|
||||||
|
onClose: widget.onClose,
|
||||||
|
body: buildErrorCard(tr("Could not load conversation information!"),
|
||||||
|
actions: [
|
||||||
|
FlatButton(
|
||||||
|
textColor: Colors.white,
|
||||||
|
onPressed: _refresh,
|
||||||
|
child: Text(tr("Try again").toUpperCase()),
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
|
||||||
|
// If it is still loading
|
||||||
|
if (_conversation == null)
|
||||||
return ConversationWindowContainer(
|
return ConversationWindowContainer(
|
||||||
title: Text(tr("Loading...")),
|
title: Text(tr("Loading...")),
|
||||||
onClose: widget.onClose,
|
onClose: widget.onClose,
|
||||||
body: buildCenteredProgressBar(),
|
body: buildCenteredProgressBar(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return ConversationWindowContainer(
|
||||||
|
title: Text(_convTitle),
|
||||||
|
onClose: widget.onClose,
|
||||||
|
body: ConversationScreen(
|
||||||
|
conversationID: _convID,
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user