🐛 Bug fixes on channel member cache

This commit is contained in:
LittleSheep 2025-03-04 23:39:55 +08:00
parent d40a6ca1c4
commit e075804782

View File

@ -59,6 +59,7 @@ class _ChannelDetailScreenState extends State<ChannelDetailScreen> {
try { try {
final ct = context.read<ChatChannelProvider>(); final ct = context.read<ChatChannelProvider>();
final resp = await ct.getChannelProfile(_channel!); final resp = await ct.getChannelProfile(_channel!);
_profile = resp;
_notifyLevel = resp.notify; _notifyLevel = resp.notify;
if (!mounted) return; if (!mounted) return;
final ud = context.read<UserDirectoryProvider>(); final ud = context.read<UserDirectoryProvider>();
@ -132,10 +133,11 @@ class _ChannelDetailScreenState extends State<ChannelDetailScreen> {
try { try {
final ct = context.read<ChatChannelProvider>(); final ct = context.read<ChatChannelProvider>();
final sn = context.read<SnNetworkProvider>(); final sn = context.read<SnNetworkProvider>();
await sn.client.put( final resp = await sn.client.put(
'/cgi/im/channels/${_channel!.keyPath}/members/me/notify', '/cgi/im/channels/${_channel!.keyPath}/members/me/notify',
data: {'notify_level': value}, data: {'notify_level': value},
); );
_profile = SnChannelMember.fromJson(resp.data);
_notifyLevel = value; _notifyLevel = value;
await ct.updateChannelProfile(_profile!); await ct.updateChannelProfile(_profile!);
if (!mounted) return; if (!mounted) return;
@ -409,11 +411,14 @@ class _ChannelProfileDetailDialogState
setState(() => _isBusy = true); setState(() => _isBusy = true);
try { try {
final ct = context.read<ChatChannelProvider>();
final sn = context.read<SnNetworkProvider>(); final sn = context.read<SnNetworkProvider>();
await sn.client.put( final resp = await sn.client.put(
'/cgi/im/channels/${widget.channel.keyPath}/members/me', '/cgi/im/channels/${widget.channel.keyPath}/members/me',
data: {'nick': _nickController.text}, data: {'nick': _nickController.text},
); );
final out = SnChannelMember.fromJson(resp.data);
await ct.updateChannelProfile(out);
if (!mounted) return; if (!mounted) return;
Navigator.pop(context, true); Navigator.pop(context, true);
} catch (err) { } catch (err) {