show error on channel loading

This commit is contained in:
Salvatore Giordano
2020-03-13 14:34:01 +01:00
parent 721e4f37c1
commit 031f85edf6
6 changed files with 35 additions and 27 deletions
+9 -12
View File
@@ -2,18 +2,15 @@ import 'package:flutter/material.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final client = Client(
's2dxdhpxd94g',
logLevel: Level.INFO,
);
await client
.setUser(
User(id: 'super-band-9'),
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoic3VwZXItYmFuZC05In0.0L6lGoeLwkz0aZRUcpZKsvaXtNEDHBcezVTZ0oPq40A',
)
.catchError((e) {});
await client.setUser(
User(id: 'super-band-9'),
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoic3VwZXItYmFuZC05In0.0L6lGoeLwkz0aZRUcpZKsvaXtNEDHBcezVTZ0oPq40A',
);
runApp(MyApp(client));
}
@@ -44,11 +41,11 @@ class ChannelListPage extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
body: ChannelListView(
filter: {
'members': {
'\$in': [StreamChat.of(context).user.id],
}
},
// filter: {
// 'members': {
// '\$in': [StreamChat.of(context).user.id],
// }
// },
sort: [SortOption('last_message_at')],
pagination: PaginationParams(
limit: 20,
+4 -7
View File
@@ -25,18 +25,15 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart';
///
/// If you now run the simulator you will see a single channel UI.
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final client = Client(
'b67pax5b2wdq',
logLevel: Level.INFO,
);
await client
.setUser(
User(id: 'falling-mountain-7'),
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZmFsbGluZy1tb3VudGFpbi03In0.AKgRXHMQQMz6vJAKszXdY8zMFfsAgkoUeZHlI-Szz9E',
)
.catchError((e) {});
await client.setUser(
User(id: 'falling-mountain-7'),
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZmFsbGluZy1tb3VudGFpbi03In0.AKgRXHMQQMz6vJAKszXdY8zMFfsAgkoUeZHlI-Szz9E',
);
final channel = client.channel('messaging', id: 'godevs');
+12 -1
View File
@@ -125,7 +125,7 @@ class _ChannelListViewState extends State<ChannelListView> {
return widget.errorBuilder(snapshot.error);
}
String message = snapshot.error.toString();
var message = snapshot.error.toString();
if (snapshot.error is DioError) {
final dioError = snapshot.error as DioError;
if (dioError.type == DioErrorType.RESPONSE) {
@@ -287,6 +287,17 @@ class _ChannelListViewState extends State<ChannelListView> {
stream: streamChat.queryChannelsLoading,
initialData: false,
builder: (context, snapshot) {
if (snapshot.hasError) {
return Container(
color: Color(0xffd0021B).withAlpha(26),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0),
child: Center(
child: Text('Error loading messages'),
),
),
);
}
return Container(
height: 100,
padding: EdgeInsets.all(32),
+1 -1
View File
@@ -118,7 +118,7 @@ class ChannelPreview extends StatelessWidget {
return SizedBox();
}
String text = lastMessage.text;
var text = lastMessage.text;
if (lastMessage.isDeleted) {
text = 'This message was deleted.';
} else if (lastMessage.attachments != null) {
+3 -3
View File
@@ -95,7 +95,7 @@ class _MessageWidgetState extends State<MessageWidget>
final alignment =
_isMyMessage ? Alignment.centerRight : Alignment.centerLeft;
List<Widget> row = <Widget>[
var row = List<Widget>.from([
Column(
crossAxisAlignment:
_isMyMessage ? CrossAxisAlignment.end : CrossAxisAlignment.start,
@@ -113,7 +113,7 @@ class _MessageWidgetState extends State<MessageWidget>
width: 40,
)
: _buildUserAvatar(),
];
]);
if (!_isMyMessage) {
row = row.reversed.toList();
@@ -309,7 +309,7 @@ class _MessageWidgetState extends State<MessageWidget>
[]);
if (widget.message.text.trim().isNotEmpty) {
String text = widget.message.text;
var text = widget.message.text;
text = _replaceMentions(text);
column.addAll(
+6 -3
View File
@@ -197,20 +197,23 @@ class StreamChatState extends State<StreamChat> {
PaginationParams paginationParams,
Map<String, dynamic> options,
}) async {
if (_queryChannelsLoadingController.value) {
if (_queryChannelsLoadingController.value == true) {
return;
}
_queryChannelsLoadingController.sink.add(true);
try {
widget.client.queryChannels(
await widget.client.queryChannels(
filter: filter,
sort: sortOptions,
options: options,
paginationParams: paginationParams,
);
} finally {
_queryChannelsLoadingController.sink.add(false);
} catch (err, stackTrace) {
_queryChannelsLoadingController.addError(err, stackTrace);
} finally {
// _queryChannelsLoadingController.sink.add(false);
}
}