@jwplayer/jwplayer-react-native 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +10 -0
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +10 -0
  3. package/.github/ISSUE_TEMPLATE/implement.md +9 -0
  4. package/.github/ISSUE_TEMPLATE/question.md +10 -0
  5. package/README.md +2 -0
  6. package/RNJWPlayer.podspec +2 -2
  7. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  8. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  9. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  10. package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
  11. package/android/build.gradle +1 -1
  12. package/android/src/main/AndroidManifest.xml +2 -0
  13. package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerModule.java +510 -458
  14. package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerView.java +384 -32
  15. package/android/src/main/java/com/jwplayer/rnjwplayer/RNJWPlayerViewManager.java +12 -0
  16. package/android/src/main/java/com/jwplayer/rnjwplayer/Util.java +26 -7
  17. package/badges/version.svg +1 -1
  18. package/index.d.ts +41 -7
  19. package/index.js +22 -2
  20. package/ios/RNJWPlayer/RNJWPlayerView.swift +47 -34
  21. package/ios/RNJWPlayer/RNJWPlayerViewController.swift +15 -9
  22. package/ios/RNJWPlayer/RNJWPlayerViewManager.m +9 -1
  23. package/ios/RNJWPlayer/RNJWPlayerViewManager.swift +49 -15
  24. package/jwplayer-jwplayer-react-native-1.0.3.tgz +0 -0
  25. package/package.json +3 -3
  26. package/.idea/modules.xml +0 -8
  27. package/.idea/vcs.xml +0 -6
  28. package/android/.gradle/8.1.1/checksums/checksums.lock +0 -0
  29. package/android/.gradle/8.1.1/checksums/md5-checksums.bin +0 -0
  30. package/android/.gradle/8.1.1/checksums/sha1-checksums.bin +0 -0
  31. package/android/.gradle/8.1.1/dependencies-accessors/dependencies-accessors.lock +0 -0
  32. package/android/.gradle/8.1.1/fileHashes/fileHashes.lock +0 -0
  33. package/android/.gradle/8.4/checksums/checksums.lock +0 -0
  34. package/android/.gradle/8.4/checksums/md5-checksums.bin +0 -0
  35. package/android/.gradle/8.4/checksums/sha1-checksums.bin +0 -0
  36. package/android/.gradle/8.4/dependencies-accessors/dependencies-accessors.lock +0 -0
  37. package/android/.gradle/8.4/dependencies-accessors/gc.properties +0 -0
  38. package/android/.gradle/8.4/executionHistory/executionHistory.bin +0 -0
  39. package/android/.gradle/8.4/executionHistory/executionHistory.lock +0 -0
  40. package/android/.gradle/8.4/fileChanges/last-build.bin +0 -0
  41. package/android/.gradle/8.4/fileHashes/fileHashes.bin +0 -0
  42. package/android/.gradle/8.4/fileHashes/fileHashes.lock +0 -0
  43. package/android/.gradle/8.4/gc.properties +0 -0
  44. package/android/.gradle/config.properties +0 -2
  45. package/android/.gradle/file-system.probe +0 -0
  46. package/android/.idea/compiler.xml +0 -6
  47. package/android/.idea/gradle.xml +0 -18
  48. package/android/.idea/migrations.xml +0 -10
  49. package/android/.idea/misc.xml +0 -10
  50. package/android/.idea/vcs.xml +0 -6
  51. package/android/local.properties +0 -8
  52. package/ios/RNJWPlayer.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  53. package/ios/RNJWPlayer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  54. package/ios/RNJWPlayer.xcodeproj/project.xcworkspace/xcuserdata/jmilham.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  55. package/ios/RNJWPlayer.xcodeproj/xcuserdata/jmilham.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  56. /package/android/.gradle/{8.1.1 → 8.9}/dependencies-accessors/gc.properties +0 -0
  57. /package/android/.gradle/{8.1.1 → 8.9}/fileChanges/last-build.bin +0 -0
  58. /package/android/.gradle/{8.1.1 → 8.9}/gc.properties +0 -0
@@ -172,7 +172,7 @@ class RNJWPlayerViewManager: RCTViewManager {
172
172
  }
173
173
  }
174
174
 
175
- @objc func setVolume(_ reactTag: NSNumber, _ volume: Double) {
175
+ @objc func setVolume(_ reactTag: NSNumber, _ volume: NSNumber) {
176
176
  self.bridge.uiManager.addUIBlock { uiManager, viewRegistry in
177
177
  guard let view = viewRegistry?[reactTag] as? RNJWPlayerView else {
178
178
  print("Invalid view returned from registry, expecting RNJWPlayerView, got: \(String(describing: viewRegistry?[reactTag]))")
@@ -180,9 +180,9 @@ class RNJWPlayerViewManager: RCTViewManager {
180
180
  }
181
181
 
182
182
  if let playerView = view.playerView {
183
- playerView.player.volume = volume
183
+ playerView.player.volume = volume.doubleValue
184
184
  } else if let playerViewController = view.playerViewController {
185
- playerViewController.player.volume = volume
185
+ playerViewController.player.volume = volume.doubleValue
186
186
  }
187
187
  }
188
188
  }
@@ -412,10 +412,33 @@ class RNJWPlayerViewManager: RCTViewManager {
412
412
  return
413
413
  }
414
414
 
415
+ do {
416
+ if let playerView = view.playerView {
417
+ try playerView.player.setCaptionTrack(index: index.intValue)
418
+ } else if let playerViewController = view.playerViewController {
419
+ try playerViewController.player.setCaptionTrack(index: index.intValue)
420
+ }
421
+ } catch {
422
+ print("Error setting caption track: \(error)")
423
+ }
424
+ }
425
+ }
426
+
427
+ @objc func getCurrentCaptions(_ reactTag: NSNumber, _ resolve: @escaping RCTPromiseResolveBlock, _ reject: @escaping RCTPromiseRejectBlock) {
428
+ self.bridge.uiManager.addUIBlock { uiManager, viewRegistry in
429
+ guard let view = viewRegistry?[reactTag] as? RNJWPlayerView else {
430
+ let error = NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "There is no player"])
431
+ reject("no_player", "Invalid view returned from registry, expecting RNJWPlayerView", error)
432
+ return
433
+ }
434
+
415
435
  if let playerView = view.playerView {
416
- playerView.player.currentCaptionsTrack = index.intValue + 1
436
+ resolve(NSNumber(value: playerView.player.currentCaptionsTrack))
417
437
  } else if let playerViewController = view.playerViewController {
418
- playerViewController.player.currentCaptionsTrack = index.intValue + 1
438
+ resolve(NSNumber(value: playerViewController.player.currentCaptionsTrack))
439
+ } else {
440
+ let error = NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "There is no player"])
441
+ reject("no_player", "There is no player", error)
419
442
  }
420
443
  }
421
444
  }
@@ -457,7 +480,7 @@ class RNJWPlayerViewManager: RCTViewManager {
457
480
  }
458
481
  }
459
482
 
460
- @objc func loadPlaylist(_ reactTag: NSNumber, _ playlist: [Any]) {
483
+ @objc func loadPlaylist(_ reactTag: NSNumber, _ playlist: Any) {
461
484
  self.bridge.uiManager.addUIBlock { uiManager, viewRegistry in
462
485
  guard let view = viewRegistry?[reactTag] as? RNJWPlayerView else {
463
486
  print("Invalid view returned from registry, expecting RNJWPlayerView, got: \(String(describing: viewRegistry?[reactTag]))")
@@ -466,17 +489,28 @@ class RNJWPlayerViewManager: RCTViewManager {
466
489
 
467
490
  var playlistArray = [JWPlayerItem]()
468
491
 
469
- for item in playlist {
470
- if let playerItem = try? view.getPlayerItem(item: item as! [String: Any]) {
471
- playlistArray.append(playerItem)
492
+ if playlist is NSArray {
493
+ for item in playlist as! [Any] {
494
+ // TODO Update this to better parse JWP Playlist Items:
495
+ // awaiting JWP SDK exposure of JWJSONParser.playlist
496
+ if let playerItem = try? view.getPlayerItem(item: item as! [String: Any]) {
497
+ playlistArray.append(playerItem)
498
+ }
499
+ }
500
+
501
+ if let playerView = view.playerView {
502
+ playerView.player.loadPlaylist(items: playlistArray)
503
+ } else if let playerViewController = view.playerViewController {
504
+ playerViewController.player.loadPlaylist(items: playlistArray)
505
+ }
506
+ } else {
507
+ if let playerView = view.playerView {
508
+ playerView.player.loadPlaylist(url: URL(string: playlist as! String)!)
509
+ } else if let playerViewController = view.playerViewController {
510
+ playerViewController.player.loadPlaylist(url: URL(string: playlist as! String)!)
472
511
  }
473
512
  }
474
-
475
- if let playerView = view.playerView {
476
- playerView.player.loadPlaylist(items: playlistArray)
477
- } else if let playerViewController = view.playerViewController {
478
- playerViewController.player.loadPlaylist(items: playlistArray)
479
- }
513
+
480
514
  }
481
515
  }
482
516
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jwplayer/jwplayer-react-native",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "React-native Android/iOS plugin for JWPlayer SDK (https://www.jwplayer.com/)",
5
5
  "main": "index.js",
6
6
  "types": "./index.d.ts",
@@ -35,11 +35,11 @@
35
35
  "license": "MIT",
36
36
  "homepage": "https://github.com/jwplayer/jwplayer-react-native#readme",
37
37
  "devDependencies": {
38
- "lodash": ">= 4.17.21",
38
+ "badge-maker": "^3.3.1",
39
39
  "react": ">= 18.2.0",
40
40
  "react-native": ">= 0.72.5"
41
41
  },
42
42
  "dependencies": {
43
- "badge-maker": "^3.3.1"
43
+ "lodash.isequalwith": "^4.4.0"
44
44
  }
45
45
  }
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/jwplayer-react-native.iml" filepath="$PROJECT_DIR$/.idea/jwplayer-react-native.iml" />
6
- </modules>
7
- </component>
8
- </project>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>
File without changes
@@ -1,2 +0,0 @@
1
- #Fri Apr 19 10:10:39 PDT 2024
2
- java.home=/Applications/Android Studio.app/Contents/jbr/Contents/Home
Binary file
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="CompilerConfiguration">
4
- <bytecodeTargetLevel target="17" />
5
- </component>
6
- </project>
@@ -1,18 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="GradleMigrationSettings" migrationVersion="1" />
4
- <component name="GradleSettings">
5
- <option name="linkedExternalProjectsSettings">
6
- <GradleProjectSettings>
7
- <option name="externalProjectPath" value="$PROJECT_DIR$" />
8
- <option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
9
- <option name="modules">
10
- <set>
11
- <option value="$PROJECT_DIR$" />
12
- </set>
13
- </option>
14
- <option name="resolveExternalAnnotations" value="false" />
15
- </GradleProjectSettings>
16
- </option>
17
- </component>
18
- </project>
@@ -1,10 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectMigrations">
4
- <option name="MigrateToGradleLocalJavaHome">
5
- <set>
6
- <option value="$PROJECT_DIR$" />
7
- </set>
8
- </option>
9
- </component>
10
- </project>
@@ -1,10 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ExternalStorageConfigurationManager" enabled="true" />
4
- <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
5
- <output url="file://$PROJECT_DIR$/build/classes" />
6
- </component>
7
- <component name="ProjectType">
8
- <option name="id" value="Android" />
9
- </component>
10
- </project>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
5
- </component>
6
- </project>
@@ -1,8 +0,0 @@
1
- ## This file must *NOT* be checked into Version Control Systems,
2
- # as it contains information specific to your local configuration.
3
- #
4
- # Location of the SDK. This is only used by Gradle.
5
- # For customization when using a Version Control System, please read the
6
- # header note.
7
- #Fri Apr 19 10:10:39 PDT 2024
8
- sdk.dir=/Users/jmilham/Library/Android/sdk
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Workspace
3
- version = "1.0">
4
- <FileRef
5
- location = "self:">
6
- </FileRef>
7
- </Workspace>
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>IDEDidComputeMac32BitWarning</key>
6
- <true/>
7
- </dict>
8
- </plist>
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>SchemeUserState</key>
6
- <dict>
7
- <key>RNJWPlayer.xcscheme_^#shared#^_</key>
8
- <dict>
9
- <key>orderHint</key>
10
- <integer>0</integer>
11
- </dict>
12
- </dict>
13
- </dict>
14
- </plist>
File without changes