feat(ai-scribe): Fix the English locale file `(intl_en.arb)` is missing all three AI Scribe keys
feat(ai-scribe): Fix async function declared without proper return type annotation. feat(ai-scribe): Fix Async operations not properly awaited. feat(ai-scribe): Fix inconsistent capitalization between button labels. feat(ai-scribe): Fix GenerateAITextFailure check will never match. feat(ai-scribe): Fix consider validating text input for predefined actions. feat(ai-scribe): Using a subshell for directory isolation. feat(ai-scribe): Fix verify the mock usage or document intent. feat(ai-scribe): Using a more conventional import for Offset. feat(ai-scribe): Adding error handling for consistency feat(ai-scribe): Remove `fromJson` and `toJson` of AIResponse feat(ai-scribe): Using constants for role values. feat(ai-scribe): Using a more specific import. feat(ai-scribe): Using Timer for cleaner lifecycle management feat(ai-scribe): Adding error handling to fromMap() for consistency. feat(ai-scribe): Disposing the ValueNotifier feat(ai-scribe): Redundant null check after assignment feat(ai-scribe): Fix calling `registerSelectionChangeListener` multiple times may be inefficient. feat(ai-scribe): Safer type handling for JavaScript callback args feat(ai-scribe): Fix async callbacks not awaited in switch statement. feat(ai-scribe): Fix binding lifecycle mismatch for GetAIScribeConfigInteractor feat(ai-scribe): Fix ai prompts feat(ai-scribe): Fix unawaited async call to `_setupSelectionListener` feat(ai-scribe): Fix switch cases use top-origin coordinates while `PositionedDirectional(bottom:)`` expects bottom-origin coordinates. feat(ai-scribe): Adding error handling for selection listener setup.
This commit is contained in:
@@ -92,6 +92,7 @@ class _WebEditorState extends State<WebEditorWidget> with TextSelectionMixin {
|
||||
bool _signatureTooltipReady = false;
|
||||
|
||||
late String _createdViewId;
|
||||
late WebScript _selectionChangeScript;
|
||||
|
||||
@override
|
||||
void Function(TextSelectionData?)? get onSelectionChanged => widget.onTextSelectionChanged;
|
||||
@@ -103,7 +104,11 @@ class _WebEditorState extends State<WebEditorWidget> with TextSelectionMixin {
|
||||
_editorController = widget.editorController;
|
||||
|
||||
final registerSelectionChange =
|
||||
HtmlUtils.registerSelectionChangeListener(_createdViewId);
|
||||
HtmlUtils.registerSelectionChangeListener(_createdViewId);
|
||||
_selectionChangeScript = WebScript(
|
||||
name: registerSelectionChange.name,
|
||||
script: registerSelectionChange.script,
|
||||
);
|
||||
|
||||
_editorListener = (event) {
|
||||
try {
|
||||
@@ -112,7 +117,7 @@ class _WebEditorState extends State<WebEditorWidget> with TextSelectionMixin {
|
||||
|
||||
if (data['name'] == HtmlUtils.registerDropListener.name) {
|
||||
_editorController.evaluateJavascriptWeb(HtmlUtils.removeLineHeight1px.name);
|
||||
} else if (data['name'] == registerSelectionChange.name
|
||||
} else if (data['name'] == _selectionChangeScript.name
|
||||
&& data['viewId'] == _createdViewId) {
|
||||
handleSelectionChange(data);
|
||||
}
|
||||
@@ -123,9 +128,8 @@ class _WebEditorState extends State<WebEditorWidget> with TextSelectionMixin {
|
||||
);
|
||||
}
|
||||
};
|
||||
if (_editorListener != null) {
|
||||
window.addEventListener("message", _editorListener!);
|
||||
}
|
||||
|
||||
window.addEventListener("message", _editorListener!);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -189,8 +193,8 @@ class _WebEditorState extends State<WebEditorWidget> with TextSelectionMixin {
|
||||
script: HtmlUtils.unregisterDropListener.script,
|
||||
),
|
||||
WebScript(
|
||||
name: HtmlUtils.registerSelectionChangeListener(_createdViewId).name,
|
||||
script: HtmlUtils.registerSelectionChangeListener(_createdViewId).script,
|
||||
name: _selectionChangeScript.name,
|
||||
script: _selectionChangeScript.script,
|
||||
),
|
||||
WebScript(
|
||||
name: HtmlUtils.collapseSelectionToEnd.name,
|
||||
|
||||
Reference in New Issue
Block a user