feat: added util in choreographer to response to pasting in the input… (#2021)

* feat: added util in choreographer to response to pasting in the input bar
pull/1688/head
ggurdin 8 months ago committed by GitHub
parent 50c5fac8dc
commit c9dbbe73b8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -32,6 +32,7 @@ import 'package:fluffychat/pangea/analytics_misc/level_up.dart';
import 'package:fluffychat/pangea/analytics_misc/put_analytics_controller.dart'; import 'package:fluffychat/pangea/analytics_misc/put_analytics_controller.dart';
import 'package:fluffychat/pangea/chat/widgets/event_too_large_dialog.dart'; import 'package:fluffychat/pangea/chat/widgets/event_too_large_dialog.dart';
import 'package:fluffychat/pangea/choreographer/controllers/choreographer.dart'; import 'package:fluffychat/pangea/choreographer/controllers/choreographer.dart';
import 'package:fluffychat/pangea/choreographer/enums/edit_type.dart';
import 'package:fluffychat/pangea/choreographer/models/choreo_record.dart'; import 'package:fluffychat/pangea/choreographer/models/choreo_record.dart';
import 'package:fluffychat/pangea/choreographer/widgets/igc/pangea_text_controller.dart'; import 'package:fluffychat/pangea/choreographer/widgets/igc/pangea_text_controller.dart';
import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart';
@ -269,7 +270,10 @@ class ChatController extends State<ChatPageWithRoom>
final prefs = await SharedPreferences.getInstance(); final prefs = await SharedPreferences.getInstance();
final draft = prefs.getString('draft_$roomId'); final draft = prefs.getString('draft_$roomId');
if (draft != null && draft.isNotEmpty) { if (draft != null && draft.isNotEmpty) {
sendController.text = draft; // #Pangea
// sendController.text = draft;
sendController.setSystemText(draft, EditType.other);
// Pangea#
} }
} }
@ -820,7 +824,10 @@ class ChatController extends State<ChatPageWithRoom>
); );
setState(() { setState(() {
sendController.text = pendingText; // #Pangea
// sendController.text = pendingText;
sendController.setSystemText(pendingText, EditType.other);
// Pangea#
_inputTextIsEmpty = pendingText.isEmpty; _inputTextIsEmpty = pendingText.isEmpty;
replyEvent = null; replyEvent = null;
editEvent = null; editEvent = null;
@ -1755,7 +1762,10 @@ class ChatController extends State<ChatPageWithRoom>
void cancelReplyEventAction() => setState(() { void cancelReplyEventAction() => setState(() {
if (editEvent != null) { if (editEvent != null) {
sendController.text = pendingText; // #Pangea
// sendController.text = pendingText;
sendController.setSystemText(pendingText, EditType.other);
// Pangea#
pendingText = ''; pendingText = '';
} }
replyEvent = null; replyEvent = null;

@ -14,6 +14,7 @@ import 'package:fluffychat/pangea/choreographer/enums/edit_type.dart';
import 'package:fluffychat/pangea/choreographer/models/choreo_record.dart'; import 'package:fluffychat/pangea/choreographer/models/choreo_record.dart';
import 'package:fluffychat/pangea/choreographer/models/it_step.dart'; import 'package:fluffychat/pangea/choreographer/models/it_step.dart';
import 'package:fluffychat/pangea/choreographer/models/pangea_match_model.dart'; import 'package:fluffychat/pangea/choreographer/models/pangea_match_model.dart';
import 'package:fluffychat/pangea/choreographer/utils/input_paste_listener.dart';
import 'package:fluffychat/pangea/choreographer/widgets/igc/pangea_text_controller.dart'; import 'package:fluffychat/pangea/choreographer/widgets/igc/pangea_text_controller.dart';
import 'package:fluffychat/pangea/choreographer/widgets/igc/paywall_card.dart'; import 'package:fluffychat/pangea/choreographer/widgets/igc/paywall_card.dart';
import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart';
@ -62,6 +63,11 @@ class Choreographer {
} }
_initialize() { _initialize() {
_textController = PangeaTextController(choreographer: this); _textController = PangeaTextController(choreographer: this);
InputPasteListener(
_textController,
// TODO, do something on paste
() {},
);
itController = ITController(this); itController = ITController(this);
igc = IgcController(this); igc = IgcController(this);
errorService = ErrorService(this); errorService = ErrorService(this);

@ -72,8 +72,10 @@ class ITController {
void closeIT() { void closeIT() {
// if the user hasn't gone through any IT steps, reset the text // if the user hasn't gone through any IT steps, reset the text
if (completedITSteps.isEmpty && sourceText != null) { if (completedITSteps.isEmpty && sourceText != null) {
choreographer.textController.editType = EditType.itDismissed; choreographer.textController.setSystemText(
choreographer.textController.text = sourceText!; sourceText!,
EditType.itDismissed,
);
} }
clear(); clear();
dismissed = true; dismissed = true;
@ -273,7 +275,10 @@ class ITController {
); );
} finally { } finally {
choreographer.stopLoading(); choreographer.stopLoading();
choreographer.textController.text = ""; choreographer.textController.setSystemText(
"",
EditType.other,
);
} }
} }

@ -6,4 +6,5 @@ enum EditType {
itGold, itGold,
itStart, itStart,
itDismissed, itDismissed,
other,
} }

@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
import 'package:fluffychat/pangea/choreographer/enums/edit_type.dart';
import 'package:fluffychat/pangea/choreographer/widgets/igc/pangea_text_controller.dart';
class InputPasteListener {
final PangeaTextController controller;
final VoidCallback onPaste;
String _currentText = '';
InputPasteListener(
this.controller,
this.onPaste,
) {
controller.addListener(() {
if (controller.editType != EditType.keyboard) return;
final difference =
controller.text.characters.length - _currentText.characters.length;
if (difference.abs() > 1) onPaste();
_currentText = controller.text;
});
}
}

@ -68,12 +68,11 @@ class ITFeedbackCardController extends State<ITFeedbackCard> {
); );
}) })
.catchError((e) => error = e) .catchError((e) => error = e)
.whenComplete( .whenComplete(() {
() => setState(() { if (mounted) {
// isTranslating = false; setState(() => isLoadingFeedback = false);
isLoadingFeedback = false; }
}), });
);
} }
@override @override

Loading…
Cancel
Save