Skip to content

Commit 7cdd215

Browse files
author
Ke, Mingze
committed
await for youtube
1 parent 94c22b1 commit 7cdd215

2 files changed

Lines changed: 20 additions & 44 deletions

File tree

generators/tutorials.js

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -279,13 +279,12 @@ Blockly.JavaScript['tutorial_youtube'] = function (block) {
279279
var value_name_ = Blockly.JavaScript.valueToCode(block, 'name_', Blockly.JavaScript.ORDER_ATOMIC);
280280
var text_id_ = block.getFieldValue('id_');
281281
var code =
282-
'(function () {\n' +
282+
'await new Promise(function (resolve) {\n' +
283283
' var tag = document.createElement("script");\n' +
284284
' tag.src = "https://www.youtube.com/iframe_api";\n' +
285285
' var scptTag = document.getElementsByTagName("script")[0];\n' +
286286
' scptTag.parentNode.insertBefore(tag, scptTag);\n' +
287-
' window.onYouTubeIframeAPIReady = playVideo;\n\n' +
288-
' function playVideo() {\n' +
287+
' window.onYouTubeIframeAPIReady = function () {\n' +
289288
' ' + value_name_ + ' = new YT.Player("player", {\n' +
290289
' height: "240",\n' +
291290
' width: "96%",\n' +
@@ -296,12 +295,12 @@ Blockly.JavaScript['tutorial_youtube'] = function (block) {
296295
' },\n' +
297296
' events: {\n' +
298297
' onReady: function (evt) {\n' +
299-
' ' + value_name_ + '.playerReady = true;\n' +
298+
' resolve();\n' +
300299
' }\n' +
301300
' }\n' +
302301
' });\n' +
303-
' }\n' +
304-
'}());\n\n';
302+
' };\n' +
303+
'});\n';
305304
return code;
306305
};
307306

@@ -314,19 +313,15 @@ Blockly.JavaScript['tutorial_youtube_volume'] = function (block) {
314313
'if (' + varA + ' >= 100) {\n' +
315314
' ' + varA + ' = 100;\n' +
316315
'}\n' +
317-
'if (' + variable_name_ + '.playerReady) {\n' +
318-
' ' + variable_name_ + '.setVolume(' + varA + ');\n' +
319-
'}\n';
316+
variable_name_ + '.setVolume(' + varA + ');\n';
320317
return code;
321318
};
322319

323320

324321
Blockly.JavaScript['tutorial_youtube_speed'] = function (block) {
325322
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
326323
var dropdown_speed_ = block.getFieldValue('speed_');
327-
var code = 'if (' + variable_name_ + '.playerReady) {\n' +
328-
' ' + variable_name_ + '.setPlaybackRate(' + dropdown_speed_ + ');\n' +
329-
'}\n';
324+
var code = variable_name_ + '.setPlaybackRate(' + dropdown_speed_ + ');\n';
330325
return code;
331326
};
332327

@@ -335,18 +330,11 @@ Blockly.JavaScript['tutorial_youtube_control'] = function (block) {
335330
var dropdown_status_ = block.getFieldValue('status_');
336331
var code;
337332
if (dropdown_status_ == '1') {
338-
code = 'if (' + variable_name_ + '.playerReady) {\n' +
339-
' ' + variable_name_ + '.playVideo();\n' +
340-
'}\n';
333+
code = variable_name_ + '.playVideo();\n';
341334
} else if (dropdown_status_ == '2') {
342-
code = 'if (' + variable_name_ + '.playerReady) {\n' +
343-
' ' + variable_name_ + '.pauseVideo();\n' +
344-
'}\n';
335+
code = variable_name_ + '.pauseVideo();\n';
345336
} else if (dropdown_status_ == '0') {
346-
code = 'if (' + variable_name_ + '.playerReady) {\n' +
347-
' ' + variable_name_ + '.seekTo(0);\n' +
348-
' ' + variable_name_ + '.stopVideo();\n' +
349-
'}\n';
337+
code = variable_name_ + '.seekTo(0);\n' + variable_name_ + '.stopVideo();\n';
350338
}
351339
return code;
352340
};

generators/webduino.js

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -207,13 +207,12 @@ Blockly.JavaScript['demo_youtube'] = function (block) {
207207
var value_name_ = Blockly.JavaScript.valueToCode(block, 'name_', Blockly.JavaScript.ORDER_ATOMIC);
208208
var text_id_ = block.getFieldValue('id_');
209209
var code =
210-
'(function () {\n' +
210+
'await new Promise(function (resolve) {\n' +
211211
' var tag = document.createElement("script");\n' +
212212
' tag.src = "https://www.youtube.com/iframe_api";\n' +
213213
' var scptTag = document.getElementsByTagName("script")[0];\n' +
214214
' scptTag.parentNode.insertBefore(tag, scptTag);\n' +
215-
' window.onYouTubeIframeAPIReady = playVideo;\n\n' +
216-
' function playVideo() {\n' +
215+
' window.onYouTubeIframeAPIReady = function () {\n' +
217216
' ' + value_name_ + ' = new YT.Player("player", {\n' +
218217
' height: "240",\n' +
219218
' width: "96%",\n' +
@@ -224,12 +223,12 @@ Blockly.JavaScript['demo_youtube'] = function (block) {
224223
' },\n' +
225224
' events: {\n' +
226225
' onReady: function (evt) {\n' +
227-
' ' + value_name_ + '.playerReady = true;\n' +
226+
' resolve();\n' +
228227
' }\n' +
229228
' }\n' +
230229
' });\n' +
231-
' }\n' +
232-
'}());\n\n';
230+
' };\n' +
231+
'});\n';
233232
return code;
234233
};
235234

@@ -243,19 +242,15 @@ Blockly.JavaScript['demo_youtube_volume'] = function (block) {
243242
'if (' + varA + ' >= 100) {\n' +
244243
' ' + varA + ' = 100;\n' +
245244
'}\n' +
246-
'if (' + variable_name_ + '.playerReady) {\n' +
247-
' ' + variable_name_ + '.setVolume(' + varA + ');\n' +
248-
'}\n';
245+
variable_name_ + '.setVolume(' + varA + ');\n';
249246
return code;
250247
};
251248

252249

253250
Blockly.JavaScript['demo_youtube_speed'] = function (block) {
254251
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
255252
var dropdown_speed_ = block.getFieldValue('speed_');
256-
var code = 'if (' + variable_name_ + '.playerReady) {\n' +
257-
' ' + variable_name_ + '.setPlaybackRate(' + dropdown_speed_ + ');\n' +
258-
'}\n';
253+
var code = variable_name_ + '.setPlaybackRate(' + dropdown_speed_ + ');\n';
259254
return code;
260255
};
261256

@@ -265,18 +260,11 @@ Blockly.JavaScript['demo_youtube_control'] = function (block) {
265260
var dropdown_status_ = block.getFieldValue('status_');
266261
var code;
267262
if (dropdown_status_ == '1') {
268-
code = 'if (' + variable_name_ + '.playerReady) {\n' +
269-
' ' + variable_name_ + '.playVideo();\n' +
270-
'}\n';
263+
code = variable_name_ + '.playVideo();\n';
271264
} else if (dropdown_status_ == '2') {
272-
code = 'if (' + variable_name_ + '.playerReady) {\n' +
273-
' ' + variable_name_ + '.pauseVideo();\n' +
274-
'}\n';
265+
code = variable_name_ + '.pauseVideo();\n';
275266
} else if (dropdown_status_ == '0') {
276-
code = 'if (' + variable_name_ + '.playerReady) {\n' +
277-
' ' + variable_name_ + '.seekTo(0);\n' +
278-
' ' + variable_name_ + '.stopVideo();\n' +
279-
'}\n';
267+
code = variable_name_ + '.seekTo(0);\n' + variable_name_ + '.stopVideo();\n';
280268
}
281269
return code;
282270
};

0 commit comments

Comments
 (0)