fix: don't dispose new word overlay animation early (#4168)

This commit is contained in:
ggurdin 2025-09-29 10:10:30 -04:00 committed by GitHub
parent 951d8ef626
commit 783085d44c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 12 additions and 14 deletions

View file

@ -517,9 +517,6 @@ class MessageOverlayController extends State<MessageSelectionOverlay>
void onSelectNewToken(PangeaToken token) {
if (!isNewToken(token)) return;
final future =
MatrixState.pangeaController.getAnalytics.analyticsStream.stream.first;
MatrixState.pangeaController.putAnalytics.setState(
AnalyticsStream(
eventId: event.eventId,
@ -542,13 +539,6 @@ class MessageOverlayController extends State<MessageSelectionOverlay>
targetID: "word-zoom-card-${token.text.uniqueKey}",
),
);
future.then((_) {
TokensUtil.clearNewTokenCache();
if (mounted) {
setState(() {});
}
});
}
/// Whether the given token is currently selected or highlighted

View file

@ -123,6 +123,8 @@ class ReadingAssistanceContentState extends State<ReadingAssistanceContent> {
onClose: () => widget.overlayController.updateSelectedSpan(null),
langCode: widget
.overlayController.pangeaMessageEvent.messageDisplayLangCode,
onDismissNewWordOverlay: () =>
widget.overlayController.setState(() {}),
);
}
}

View file

@ -5,16 +5,19 @@ import 'package:flutter/material.dart';
import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/pangea/common/utils/overlay.dart';
import 'package:fluffychat/pangea/constructs/construct_level_enum.dart';
import 'package:fluffychat/pangea/message_token_text/tokens_util.dart';
import 'package:fluffychat/widgets/matrix.dart';
class NewWordOverlay extends StatefulWidget {
final Color overlayColor;
final String transformTargetId;
final VoidCallback? onDismiss;
const NewWordOverlay({
super.key,
required this.overlayColor,
required this.transformTargetId,
this.onDismiss,
});
@override
@ -57,7 +60,10 @@ class _NewWordOverlayState extends State<NewWordOverlay>
WidgetsBinding.instance.addPostFrameCallback((_) {
columnMode = FluffyThemes.isColumnMode(context);
_showFlyingWidget();
_controller?.forward();
_controller?.forward().then((_) {
TokensUtil.clearNewTokenCache();
widget.onDismiss?.call();
});
});
}
@ -80,9 +86,6 @@ class _NewWordOverlayState extends State<NewWordOverlay>
context: context,
closePrevOverlay: false,
ignorePointer: true,
// onDismiss: () {
// MatrixState.pAnyState.closeOverlay(widget.transformTargetId);
// },
offset: const Offset(0, 65),
targetAnchor: Alignment.center,
overlayKey: widget.transformTargetId,

View file

@ -27,6 +27,7 @@ class WordZoomWidget extends StatelessWidget {
final VoidCallback onClose;
final bool wordIsNew;
final VoidCallback? onDismissNewWordOverlay;
final Event? event;
const WordZoomWidget({
@ -36,6 +37,7 @@ class WordZoomWidget extends StatelessWidget {
required this.langCode,
required this.onClose,
this.wordIsNew = false,
this.onDismissNewWordOverlay,
this.event,
});
@ -261,6 +263,7 @@ class WordZoomWidget extends StatelessWidget {
key: ValueKey(transformTargetId),
overlayColor: overlayColor,
transformTargetId: transformTargetId,
onDismiss: onDismissNewWordOverlay,
)
: const SizedBox.shrink(),
],