From c74319cfe008caa8be0b7abb44c12956f726afd0 Mon Sep 17 00:00:00 2001 From: Yueyu Date: Sat, 9 Oct 2021 19:25:14 +0800 Subject: [PATCH] register assetLibraryVersion to native --- .../scratchjr/android/JavaScriptDirectInterface.java | 3 ++- .../java/org/scratchjr/android/ScratchJrActivity.java | 2 ++ ios/ScratchJr/src/JsBridge.m | 3 ++- ios/ScratchJr/src/ScratchJr.h | 2 ++ ios/ScratchJr/src/ScratchJr.m | 10 ++++++++++ src/entry/app.js | 2 +- src/tablet/Android.js | 4 ++-- src/tablet/OS.js | 4 ++-- src/tablet/iOS.js | 4 ++-- 9 files changed, 25 insertions(+), 9 deletions(-) diff --git a/android/ScratchJr/app/src/main/java/org/scratchjr/android/JavaScriptDirectInterface.java b/android/ScratchJr/app/src/main/java/org/scratchjr/android/JavaScriptDirectInterface.java index 56cc90c..d8d3959 100644 --- a/android/ScratchJr/app/src/main/java/org/scratchjr/android/JavaScriptDirectInterface.java +++ b/android/ScratchJr/app/src/main/java/org/scratchjr/android/JavaScriptDirectInterface.java @@ -662,7 +662,8 @@ public class JavaScriptDirectInterface { } @JavascriptInterface - public void registerLibraryAssets(String assets) { + public void registerLibraryAssets(int version, String assets) { + _activity.assetLibraryVersion = version; _activity.registerLibraryAssets(assets.split(",")); } diff --git a/android/ScratchJr/app/src/main/java/org/scratchjr/android/ScratchJrActivity.java b/android/ScratchJr/app/src/main/java/org/scratchjr/android/ScratchJrActivity.java index 59ce749..a639fa9 100644 --- a/android/ScratchJr/app/src/main/java/org/scratchjr/android/ScratchJrActivity.java +++ b/android/ScratchJr/app/src/main/java/org/scratchjr/android/ScratchJrActivity.java @@ -120,6 +120,8 @@ public class ScratchJrActivity */ private final HashSet assetList = new HashSet<>(200); + public int assetLibraryVersion = 0; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/ios/ScratchJr/src/JsBridge.m b/ios/ScratchJr/src/JsBridge.m index f156ad2..4aaf06e 100644 --- a/ios/ScratchJr/src/JsBridge.m +++ b/ios/ScratchJr/src/JsBridge.m @@ -208,7 +208,8 @@ } - (void) registerLibraryAssets: (JsRequest *) request { - NSString *assets = request.params[0]; + ScratchJr.assetLibraryVersion = (NSInteger) request.params[0]; + NSString *assets = request.params[1]; [ScratchJr registerLibraryAssets: [assets componentsSeparatedByString:@","]]; [request callback:@"1"]; } diff --git a/ios/ScratchJr/src/ScratchJr.h b/ios/ScratchJr/src/ScratchJr.h index fea87f5..fb2c21a 100644 --- a/ios/ScratchJr/src/ScratchJr.h +++ b/ios/ScratchJr/src/ScratchJr.h @@ -155,6 +155,8 @@ @interface ScratchJr : NSObject +@property (class, nonatomic, assign) NSInteger assetLibraryVersion; + + (void)sendBase64Image:(NSData *)imagedata; + (void)reportImageError; + (void)cameraInit; diff --git a/ios/ScratchJr/src/ScratchJr.m b/ios/ScratchJr/src/ScratchJr.m index ad79933..4c27b74 100644 --- a/ios/ScratchJr/src/ScratchJr.m +++ b/ios/ScratchJr/src/ScratchJr.m @@ -14,6 +14,16 @@ AVCaptureVideoPreviewLayer* captureVideoPreviewLayer; @implementation ScratchJr : NSObject +static NSInteger _assetLibraryVersion = 0; + ++ (NSInteger) assetLibraryVersion { + return _assetLibraryVersion; +} + ++ (void) setAssetLibraryVersion:(NSInteger)newValue { + _assetLibraryVersion = newValue; +} + NSString *oncomplete; NSMutableSet *assets; diff --git a/src/entry/app.js b/src/entry/app.js index b3cfa69..5985e73 100644 --- a/src/entry/app.js +++ b/src/entry/app.js @@ -43,7 +43,7 @@ window.onload = () => { preprocessAndLoadCss('css', 'css/editor.css'); entryFunction = () => OS.waitForInterface(function () { var assets = Object.keys(MediaLib.keys).join(','); - OS.registerLibraryAssets(assets, indexMain); + OS.registerLibraryAssets(MediaLib.version, assets, indexMain); }); break; case 'home': diff --git a/src/tablet/Android.js b/src/tablet/Android.js index 3d8e15d..248a8fe 100644 --- a/src/tablet/Android.js +++ b/src/tablet/Android.js @@ -254,8 +254,8 @@ export default class Android { // return 1; // } - static registerLibraryAssets (assets, fcn) { - AndroidInterface.registerLibraryAssets(assets); + static registerLibraryAssets (version, assets, fcn) { + AndroidInterface.registerLibraryAssets(version, assets); fcn && fcn(); } diff --git a/src/tablet/OS.js b/src/tablet/OS.js index d8242d4..186ad26 100644 --- a/src/tablet/OS.js +++ b/src/tablet/OS.js @@ -247,8 +247,8 @@ export default class OS { return 1; } - static registerLibraryAssets (assets, fcn) { - tabletInterface.registerLibraryAssets(assets, fcn); + static registerLibraryAssets (version, assets, fcn) { + tabletInterface.registerLibraryAssets(version, assets, fcn); } // Name of the device/iPad to display on the sharing dialog page diff --git a/src/tablet/iOS.js b/src/tablet/iOS.js index 0064be3..6649bb5 100644 --- a/src/tablet/iOS.js +++ b/src/tablet/iOS.js @@ -367,9 +367,9 @@ export default class iOS { iOS.call('sendSjrUsingShareDialog', fileName, emailSubject, emailBody, shareType); } - static registerLibraryAssets (assets, fcn) { + static registerLibraryAssets (version, assets, fcn) { (async () => { - await iOS.call('registerLibraryAssets', assets); + await iOS.call('registerLibraryAssets', version, assets); fcn && fcn(); })(); }