fix(llc): when removing current user from channel check for null in the callback
Closes #1753
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
update message with `type: reply`.
|
||||
- [[#1724]](https://github.com/GetStream/stream-chat-flutter/issues/1724) Fixed sendFile error
|
||||
on `AttachmentFile` with `bytes` and no `name`.
|
||||
- [[#1753]](https://github.com/GetStream/stream-chat-flutter/issues/1753) Fixed Unhandled null
|
||||
check operator exception when user is removed from a channel.
|
||||
|
||||
## 6.8.0
|
||||
|
||||
|
||||
@@ -1658,7 +1658,7 @@ class ClientState {
|
||||
)
|
||||
.listen((event) async {
|
||||
final isCurrentUser = event.user!.id == currentUser!.id;
|
||||
if (isCurrentUser) {
|
||||
if (isCurrentUser && event.channel != null) {
|
||||
final eventChannel = event.channel!;
|
||||
await _client.chatPersistenceClient
|
||||
?.deleteChannels([eventChannel.cid]);
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
// ignore_for_file: public_member_api_docs
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||
|
||||
import 'package:stream_chat_flutter_example/debug/error_dialog.dart';
|
||||
|
||||
class DebugAddUser extends StatelessWidget {
|
||||
const DebugAddUser({
|
||||
super.key,
|
||||
required this.client,
|
||||
required this.channel,
|
||||
});
|
||||
|
||||
final StreamChatClient client;
|
||||
final Channel channel;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(8),
|
||||
child: TextField(
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Add User',
|
||||
hintText: 'User Id',
|
||||
isDense: true,
|
||||
border: OutlineInputBorder(),
|
||||
),
|
||||
onSubmitted: (value) async {
|
||||
final userId = value.trim();
|
||||
try {
|
||||
debugPrint('[addUser] userId: $userId');
|
||||
final result = await client.addChannelMembers(
|
||||
channel.id!,
|
||||
channel.type,
|
||||
[userId],
|
||||
);
|
||||
debugPrint('[addUser] result: $result');
|
||||
} catch (e) {
|
||||
debugPrint('[addUser] failed: $e');
|
||||
showErrorDialog(context, e, 'Add User');
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
// ignore_for_file: public_member_api_docs
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||
|
||||
import 'package:stream_chat_flutter_example/debug/error_dialog.dart';
|
||||
|
||||
class DebugRemoveUser extends StatelessWidget {
|
||||
const DebugRemoveUser({
|
||||
super.key,
|
||||
required this.client,
|
||||
required this.channel,
|
||||
});
|
||||
|
||||
final StreamChatClient client;
|
||||
final Channel channel;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(8),
|
||||
child: TextField(
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Remove User',
|
||||
hintText: 'User Id',
|
||||
isDense: true,
|
||||
border: OutlineInputBorder(),
|
||||
),
|
||||
onSubmitted: (value) async {
|
||||
final userId = value.trim();
|
||||
try {
|
||||
debugPrint('[removeUser] userId: $userId');
|
||||
final result = await client.removeChannelMembers(
|
||||
channel.id!,
|
||||
channel.type,
|
||||
[userId],
|
||||
);
|
||||
debugPrint('[removeUser] result: $result');
|
||||
} catch (e) {
|
||||
debugPrint('[removeUser] failed: $e');
|
||||
showErrorDialog(context, e, 'Remove User');
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -4,9 +4,11 @@ import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||
import 'package:stream_chat_flutter_example/debug/actions/add_user.dart';
|
||||
import 'package:stream_chat_flutter_example/debug/actions/ban_user.dart';
|
||||
import 'package:stream_chat_flutter_example/debug/actions/mute_user.dart';
|
||||
import 'package:stream_chat_flutter_example/debug/actions/remove_shadow_ban.dart';
|
||||
import 'package:stream_chat_flutter_example/debug/actions/remove_user.dart';
|
||||
import 'package:stream_chat_flutter_example/debug/actions/shadow_ban.dart';
|
||||
import 'package:stream_chat_flutter_example/debug/actions/unban_user.dart';
|
||||
import 'package:stream_chat_flutter_example/debug/actions/unmute_user.dart';
|
||||
@@ -82,6 +84,10 @@ class _DebugChannelPageState extends State<DebugChannelPage> {
|
||||
DebugShadowBan(client: _channel.client),
|
||||
const SizedBox(height: 8),
|
||||
DebugRemoveShadowBan(client: _channel.client),
|
||||
const SizedBox(height: 8),
|
||||
DebugAddUser(client: _channel.client, channel: _channel),
|
||||
const SizedBox(height: 8),
|
||||
DebugRemoveUser(client: _channel.client, channel: _channel),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user