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`.
|
update message with `type: reply`.
|
||||||
- [[#1724]](https://github.com/GetStream/stream-chat-flutter/issues/1724) Fixed sendFile error
|
- [[#1724]](https://github.com/GetStream/stream-chat-flutter/issues/1724) Fixed sendFile error
|
||||||
on `AttachmentFile` with `bytes` and no `name`.
|
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
|
## 6.8.0
|
||||||
|
|
||||||
|
|||||||
@@ -1658,7 +1658,7 @@ class ClientState {
|
|||||||
)
|
)
|
||||||
.listen((event) async {
|
.listen((event) async {
|
||||||
final isCurrentUser = event.user!.id == currentUser!.id;
|
final isCurrentUser = event.user!.id == currentUser!.id;
|
||||||
if (isCurrentUser) {
|
if (isCurrentUser && event.channel != null) {
|
||||||
final eventChannel = event.channel!;
|
final eventChannel = event.channel!;
|
||||||
await _client.chatPersistenceClient
|
await _client.chatPersistenceClient
|
||||||
?.deleteChannels([eventChannel.cid]);
|
?.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:flutter/material.dart';
|
||||||
import 'package:stream_chat_flutter/stream_chat_flutter.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/ban_user.dart';
|
||||||
import 'package:stream_chat_flutter_example/debug/actions/mute_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_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/shadow_ban.dart';
|
||||||
import 'package:stream_chat_flutter_example/debug/actions/unban_user.dart';
|
import 'package:stream_chat_flutter_example/debug/actions/unban_user.dart';
|
||||||
import 'package:stream_chat_flutter_example/debug/actions/unmute_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),
|
DebugShadowBan(client: _channel.client),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
DebugRemoveShadowBan(client: _channel.client),
|
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