feat: Extracted visible_footnote.dart, corrected default filter
This commit is contained in:
@@ -2,6 +2,7 @@ import 'package:cached_network_image/cached_network_image.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:shimmer/shimmer.dart';
|
import 'package:shimmer/shimmer.dart';
|
||||||
import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart';
|
import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart';
|
||||||
|
import 'package:stream_chat_flutter/src/visible_footnote.dart';
|
||||||
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||||
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
|
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
|
||||||
|
|
||||||
@@ -216,36 +217,11 @@ class GiphyAttachment extends AttachmentWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 4),
|
const SizedBox(height: 4),
|
||||||
Align(
|
const Align(
|
||||||
alignment: Alignment.centerRight,
|
alignment: Alignment.centerRight,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
|
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4),
|
||||||
child: Row(
|
child: VisibleFootnote(),
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
StreamSvgIcon.eye(
|
|
||||||
color: StreamChatTheme.of(context)
|
|
||||||
.colorTheme
|
|
||||||
.textHighEmphasis
|
|
||||||
.withOpacity(0.5),
|
|
||||||
size: 16,
|
|
||||||
),
|
|
||||||
const SizedBox(
|
|
||||||
width: 8,
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'Only visible to you',
|
|
||||||
style: StreamChatTheme.of(context)
|
|
||||||
.textTheme
|
|
||||||
.footnote
|
|
||||||
.copyWith(
|
|
||||||
color: StreamChatTheme.of(context)
|
|
||||||
.colorTheme
|
|
||||||
.textHighEmphasis
|
|
||||||
.withOpacity(0.5)),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import 'package:stream_chat_flutter/src/message_reactions_modal.dart';
|
|||||||
import 'package:stream_chat_flutter/src/quoted_message_widget.dart';
|
import 'package:stream_chat_flutter/src/quoted_message_widget.dart';
|
||||||
import 'package:stream_chat_flutter/src/reaction_bubble.dart';
|
import 'package:stream_chat_flutter/src/reaction_bubble.dart';
|
||||||
import 'package:stream_chat_flutter/src/url_attachment.dart';
|
import 'package:stream_chat_flutter/src/url_attachment.dart';
|
||||||
|
import 'package:stream_chat_flutter/src/visible_footnote.dart';
|
||||||
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||||
|
|
||||||
/// Widget builder for building attachments
|
/// Widget builder for building attachments
|
||||||
@@ -92,6 +93,7 @@ class MessageWidget extends StatefulWidget {
|
|||||||
this.userAvatarBuilder,
|
this.userAvatarBuilder,
|
||||||
this.editMessageInputBuilder,
|
this.editMessageInputBuilder,
|
||||||
this.textBuilder,
|
this.textBuilder,
|
||||||
|
this.bottomRowBuilder,
|
||||||
this.onReturnAction,
|
this.onReturnAction,
|
||||||
Map<String, AttachmentBuilder>? customAttachmentBuilders,
|
Map<String, AttachmentBuilder>? customAttachmentBuilders,
|
||||||
this.readList,
|
this.readList,
|
||||||
@@ -275,6 +277,9 @@ class MessageWidget extends StatefulWidget {
|
|||||||
/// Function called on long press
|
/// Function called on long press
|
||||||
final void Function(BuildContext, Message)? onMessageActions;
|
final void Function(BuildContext, Message)? onMessageActions;
|
||||||
|
|
||||||
|
/// Widget builder for building a bottom row below the message
|
||||||
|
final Widget Function(BuildContext, Message)? bottomRowBuilder;
|
||||||
|
|
||||||
/// Widget builder for building user avatar
|
/// Widget builder for building user avatar
|
||||||
final Widget Function(BuildContext, User)? userAvatarBuilder;
|
final Widget Function(BuildContext, User)? userAvatarBuilder;
|
||||||
|
|
||||||
@@ -782,7 +787,11 @@ class _MessageWidgetState extends State<MessageWidget>
|
|||||||
bottom:
|
bottom:
|
||||||
isPinned && widget.showPinHighlight ? 6.0 : 0.0,
|
isPinned && widget.showPinHighlight ? 6.0 : 0.0,
|
||||||
),
|
),
|
||||||
child: _bottomRow,
|
child: widget.bottomRowBuilder?.call(
|
||||||
|
context,
|
||||||
|
widget.message,
|
||||||
|
) ??
|
||||||
|
_bottomRow,
|
||||||
),
|
),
|
||||||
if (isFailedState)
|
if (isFailedState)
|
||||||
Positioned(
|
Positioned(
|
||||||
@@ -830,22 +839,7 @@ class _MessageWidgetState extends State<MessageWidget>
|
|||||||
|
|
||||||
Widget get _bottomRow {
|
Widget get _bottomRow {
|
||||||
if (isDeleted) {
|
if (isDeleted) {
|
||||||
final chatThemeData = _streamChatTheme;
|
return const VisibleFootnote();
|
||||||
return Row(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
StreamSvgIcon.eye(
|
|
||||||
color: chatThemeData.colorTheme.textLowEmphasis,
|
|
||||||
size: 16,
|
|
||||||
),
|
|
||||||
const SizedBox(width: 8),
|
|
||||||
Text(
|
|
||||||
'Only visible to you',
|
|
||||||
style: chatThemeData.textTheme.footnote
|
|
||||||
.copyWith(color: chatThemeData.colorTheme.textLowEmphasis),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final children = <Widget>[];
|
final children = <Widget>[];
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:stream_chat_flutter/src/stream_chat_theme.dart';
|
||||||
|
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||||
|
|
||||||
|
/// Widget for displaying a footnote
|
||||||
|
class VisibleFootnote extends StatelessWidget {
|
||||||
|
/// Constructor for creating a [VisibleFootnote]
|
||||||
|
const VisibleFootnote({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final chatThemeData = StreamChatTheme.of(context);
|
||||||
|
return Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
StreamSvgIcon.eye(
|
||||||
|
color: chatThemeData.colorTheme.textLowEmphasis,
|
||||||
|
size: 16,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
Text(
|
||||||
|
'Only visible to you',
|
||||||
|
style: chatThemeData.textTheme.footnote
|
||||||
|
.copyWith(color: chatThemeData.colorTheme.textLowEmphasis),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -134,8 +134,7 @@ class MessageListCoreState extends State<MessageListCore> {
|
|||||||
|
|
||||||
bool defaultFilter(Message m) {
|
bool defaultFilter(Message m) {
|
||||||
final isMyMessage = m.user?.id == _currentUser?.id;
|
final isMyMessage = m.user?.id == _currentUser?.id;
|
||||||
final isDeletedOrShadowed = m.isDeleted == true || m.shadowed == true;
|
if (m.shadowed && !isMyMessage) return false;
|
||||||
if (isDeletedOrShadowed && !isMyMessage) return false;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user