[go: nahoru, domu]

Skip to content

Commit

Permalink
Send embed ready message later (#2917)
Browse files Browse the repository at this point in the history
* Send embed ready message later

* Send message even later
  • Loading branch information
parlough committed Mar 28, 2024
1 parent 48f06ec commit 4d7b092
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 17 deletions.
4 changes: 0 additions & 4 deletions pkgs/sketch_pad/lib/editor/editor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import 'package:dartpad_shared/services.dart' as services;
import 'package:flutter/material.dart';
import 'package:web/web.dart' as web;

import '../embed.dart';
import '../model.dart';
import 'codemirror.dart';

Expand Down Expand Up @@ -163,9 +162,6 @@ class _EditorWidgetState extends State<EditorWidget> implements EditorService {
final contents = appModel.sourceCodeController.text;
codeMirror!.getDoc().setValue(contents);

// Start listening for inject code messages.
handleEmbedMessage(appModel);

// darkmode
_updateCodemirrorMode(darkMode);

Expand Down
22 changes: 9 additions & 13 deletions pkgs/sketch_pad/lib/embed.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,10 @@ void handleEmbedMessage(AppModel model) {

web.window.addEventListener(
'message',
(web.Event event) {
if (event is web.MessageEvent) {
final data = event.data.dartify() as Map<Object?, Object?>?;
if (data == null || data['sender'] == 'frame') {
return;
}

if ((data['type'] as String?) != 'sourceCode') {
return;
}

final sourceCode = data['sourceCode'];
if (sourceCode is String && sourceCode.isNotEmpty) {
(web.MessageEvent event) {
if (event.data case _SourceCodeMessage(:final type?, :final sourceCode?)
when type == 'sourceCode') {
if (sourceCode.isNotEmpty) {
model.sourceCodeController.text = sourceCode;
}
}
Expand All @@ -36,3 +27,8 @@ void handleEmbedMessage(AppModel model) {
'*'.toJS,
);
}

extension type _SourceCodeMessage._(JSObject _) {
external String? get sourceCode;
external String? get type;
}
3 changes: 3 additions & 0 deletions pkgs/sketch_pad/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import 'package:vtable/vtable.dart';

import 'console.dart';
import 'editor/editor.dart';
import 'embed.dart';
import 'execution/execution.dart';
import 'extensions.dart';
import 'keys.dart' as keys;
Expand Down Expand Up @@ -282,6 +283,8 @@ class _DartPadMainPageState extends State<DartPadMainPage>
channel: widget.initialChannel,
fallbackSnippet: Samples.getDefault(type: 'dart'))
.then((value) {
// Start listening for inject code messages.
handleEmbedMessage(appModel);
if (widget.runOnLoad) {
_performCompileAndRun();
}
Expand Down

0 comments on commit 4d7b092

Please sign in to comment.