react-native-spalla-player 0.19.0 → 0.19.2
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.
- package/README.md +1 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/spallaplayer/SpallaPlayerContainerView.kt +0 -2
- package/android/src/main/java/com/spallaplayer/SpallaPlayerViewManager.kt +46 -6
- package/ios/RNSpallaPlayer.m +2 -0
- package/ios/SpallaPlayerWrapper.swift +18 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +7 -1
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +7 -1
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/react-native-spalla-player.podspec +1 -1
- package/src/index.tsx +11 -3
package/README.md
CHANGED
|
@@ -125,6 +125,7 @@ const [subtitle, setSubtitle] = React.useState<String | null>('pt-br');
|
|
|
125
125
|
| **`subtitle`** | string | subtitle to enable. Null will hide subtitles
|
|
126
126
|
| **`playbackRate`** | number | Playback speed. Allowed values are 0.5, 1.0, 1.5 and 2.0
|
|
127
127
|
| **`customImaParams`** | Map | Custom parameters for IMA ads. Key and value must be strings
|
|
128
|
+
| **`customAds`** | Array | Custom VAST/VMAP ads. Must be an array of objects like {["url": "vast url", "offset": "start"]}
|
|
128
129
|
|
|
129
130
|
## Imperative Methods
|
|
130
131
|
|
package/android/build.gradle
CHANGED
|
@@ -109,7 +109,7 @@ dependencies {
|
|
|
109
109
|
implementation "com.facebook.react:react-native:+"
|
|
110
110
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
111
111
|
implementation "androidx.mediarouter:mediarouter:1.2.0"
|
|
112
|
-
implementation "stream.spalla:spalla-android-sdk:1.13.
|
|
112
|
+
implementation "stream.spalla:spalla-android-sdk:1.13.2"
|
|
113
113
|
implementation "com.google.android.gms:play-services-cast-framework:21.3.0"
|
|
114
114
|
implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.36.0'
|
|
115
115
|
}
|
|
@@ -2,10 +2,8 @@ package com.spallaplayer
|
|
|
2
2
|
|
|
3
3
|
import android.content.Context
|
|
4
4
|
import android.util.Log
|
|
5
|
-
import android.widget.FrameLayout
|
|
6
5
|
import com.spalla.sdk.android.core.player.view.SpallaPlayerView
|
|
7
6
|
import android.view.ViewGroup;
|
|
8
|
-
import androidx.core.view.isNotEmpty
|
|
9
7
|
|
|
10
8
|
class SpallaPlayerContainerView(context: Context) : ViewGroup(context) {
|
|
11
9
|
val spallaPlayerView: SpallaPlayerView = SpallaPlayerView(context)
|
|
@@ -7,17 +7,36 @@ import androidx.core.app.PictureInPictureModeChangedInfo
|
|
|
7
7
|
import androidx.core.util.Consumer
|
|
8
8
|
import com.facebook.react.bridge.Arguments
|
|
9
9
|
import com.facebook.react.bridge.ReactContext
|
|
10
|
+
import com.facebook.react.bridge.ReadableArray
|
|
10
11
|
import com.facebook.react.bridge.ReadableMap
|
|
11
12
|
import com.facebook.react.bridge.WritableMap
|
|
12
|
-
import com.facebook.react.uimanager.ViewGroupManager
|
|
13
13
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
14
|
+
import com.facebook.react.uimanager.ViewGroupManager
|
|
14
15
|
import com.facebook.react.uimanager.annotations.ReactProp
|
|
15
16
|
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
16
17
|
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent
|
|
17
|
-
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent
|
|
18
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.AdBegin
|
|
19
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.AdBreakBegin
|
|
20
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.AdBreakEnd
|
|
21
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.AdEnd
|
|
22
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.AdError
|
|
23
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.DurationUpdate
|
|
24
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.Ended
|
|
25
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.Error
|
|
26
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.MetadataLoaded
|
|
27
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.Pause
|
|
28
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.PictureInPictureModeChanged
|
|
29
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.Play
|
|
30
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.PlaybackRateSelected
|
|
31
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.Playing
|
|
32
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.SubtitleSelected
|
|
33
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.SubtitlesAvailable
|
|
34
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.TimeUpdate
|
|
35
|
+
import com.spalla.sdk.android.core.player.entities.SpallaPlayerEvent.Waiting
|
|
18
36
|
import com.spalla.sdk.android.core.player.listeners.SpallaPlayerFullScreenListener
|
|
19
37
|
import com.spalla.sdk.android.core.player.listeners.SpallaPlayerListener
|
|
20
38
|
import com.spalla.sdk.android.core.player.view.SpallaPlayerView
|
|
39
|
+
import com.spalla.sdk.android.domain.entities.AdsModel
|
|
21
40
|
import java.util.Timer
|
|
22
41
|
import java.util.TimerTask
|
|
23
42
|
|
|
@@ -36,6 +55,7 @@ class RNSpallaPlayerManager() : ViewGroupManager<SpallaPlayerContainerView>(),
|
|
|
36
55
|
private var isPlaying: Boolean = false
|
|
37
56
|
private var pipTriggered: Boolean = false
|
|
38
57
|
private var customImaParams: Map<String, String>? = null
|
|
58
|
+
private var customAds: List<AdsModel>? = null
|
|
39
59
|
|
|
40
60
|
override fun getName() = "RNSpallaPlayer"
|
|
41
61
|
|
|
@@ -64,8 +84,6 @@ class RNSpallaPlayerManager() : ViewGroupManager<SpallaPlayerContainerView>(),
|
|
|
64
84
|
|
|
65
85
|
override fun createViewInstance(context: ThemedReactContext): SpallaPlayerContainerView {
|
|
66
86
|
_reactContext = context
|
|
67
|
-
//context.addLifecycleEventListener(this)
|
|
68
|
-
|
|
69
87
|
// Register this manager for direct PiP access
|
|
70
88
|
SpallaPlayerPipModule.registerPlayerManager(this)
|
|
71
89
|
|
|
@@ -181,10 +199,33 @@ class RNSpallaPlayerManager() : ViewGroupManager<SpallaPlayerContainerView>(),
|
|
|
181
199
|
this.customImaParams = customImaParams?.toHashMap()?.mapValues { it.value.toString() }
|
|
182
200
|
}
|
|
183
201
|
|
|
202
|
+
@ReactProp(name = "customAds")
|
|
203
|
+
fun setCustomAds(view: SpallaPlayerContainerView, customAds: ReadableArray?) {
|
|
204
|
+
val ads = mutableListOf<AdsModel>()
|
|
205
|
+
customAds?.let {
|
|
206
|
+
for (i in 0 until it.size()) {
|
|
207
|
+
val adMap = it.getMap(i)
|
|
208
|
+
val url = adMap?.getString("url")
|
|
209
|
+
val offset = if (adMap?.hasKey("offset") == true) adMap.getString("offset") else null
|
|
210
|
+
if (url != null) {
|
|
211
|
+
ads.add(AdsModel(url = url, offset = offset))
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
this.customAds = ads.ifEmpty { null }
|
|
216
|
+
}
|
|
217
|
+
|
|
184
218
|
private fun checkAndLoadPlayer(view: SpallaPlayerContainerView) {
|
|
185
219
|
if (contentId != null && startTime != null && hideUI != null) {
|
|
186
220
|
view.post {
|
|
187
|
-
view.spallaPlayerView.load(
|
|
221
|
+
view.spallaPlayerView.load(
|
|
222
|
+
contentId!!,
|
|
223
|
+
true,
|
|
224
|
+
startTime!!,
|
|
225
|
+
subtitle,
|
|
226
|
+
hideUI!!,
|
|
227
|
+
customImaParams,
|
|
228
|
+
customAds)
|
|
188
229
|
}
|
|
189
230
|
}
|
|
190
231
|
}
|
|
@@ -192,7 +233,6 @@ class RNSpallaPlayerManager() : ViewGroupManager<SpallaPlayerContainerView>(),
|
|
|
192
233
|
override fun onEvent(event: SpallaPlayerEvent) {
|
|
193
234
|
val map: WritableMap = Arguments.createMap()
|
|
194
235
|
|
|
195
|
-
//Log.v("RNSpallaPlayerManager", "onEvent: $event")
|
|
196
236
|
when (event) {
|
|
197
237
|
is DurationUpdate -> {
|
|
198
238
|
map.putString("event", "durationUpdate")
|
package/ios/RNSpallaPlayer.m
CHANGED
|
@@ -19,6 +19,8 @@ RCT_EXPORT_VIEW_PROPERTY(playbackRate, NSNumber)
|
|
|
19
19
|
|
|
20
20
|
RCT_EXPORT_VIEW_PROPERTY(customImaParams, NSDictionary)
|
|
21
21
|
|
|
22
|
+
RCT_EXPORT_VIEW_PROPERTY(customAds, NSArray)
|
|
23
|
+
|
|
22
24
|
RCT_EXPORT_METHOD(play: (nonnull NSNumber *) reactTag {
|
|
23
25
|
|
|
24
26
|
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *,UIView *> *viewRegistry) {
|
|
@@ -63,6 +63,22 @@ import SpallaSDK
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
@objc var customAds: NSArray? = nil {
|
|
67
|
+
didSet {
|
|
68
|
+
var ads: [SpallaSDK.AdsModel] = []
|
|
69
|
+
customAds?.forEach { element in
|
|
70
|
+
if let parsed = element as? [String: String] {
|
|
71
|
+
if let url = parsed["url"] {
|
|
72
|
+
ads.append(AdsModel(url: parsed["url"], offset: parsed["offset"]))
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
parsedAds = ads
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private var parsedAds: [AdsModel]? = nil
|
|
81
|
+
|
|
66
82
|
@objc var onPlayerEvent: RCTBubblingEventBlock?
|
|
67
83
|
|
|
68
84
|
convenience public init() {
|
|
@@ -93,11 +109,11 @@ import SpallaSDK
|
|
|
93
109
|
|
|
94
110
|
required init?(coder: NSCoder) {
|
|
95
111
|
fatalError("init(coder:) has not been implemented")
|
|
96
|
-
}
|
|
112
|
+
}
|
|
97
113
|
|
|
98
114
|
func setupPlayer() {
|
|
99
115
|
if let contentId {
|
|
100
|
-
viewController.setup(with: contentId, hideUI: hideUI, startTime: startTime.doubleValue, subtitle: subtitle, customImaParams: customImaParams ?? [:])
|
|
116
|
+
viewController.setup(with: contentId, hideUI: hideUI, startTime: startTime.doubleValue, subtitle: subtitle, customImaParams: customImaParams ?? [:], customAds: parsedAds ?? [])
|
|
101
117
|
}
|
|
102
118
|
}
|
|
103
119
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_jsxRuntime","_CastButton","e","__esModule","default","RNSpallaPlayer","requireNativeComponent","RNSpallaPlayerModule","NativeModules","play","ref","handle","findNodeHandle","exports","pause","seekTo","time","SpallaPlayer","React","Component","_player","_setRef","render","style","startTime","playbackRate","hideUI","props","jsx","children","componentWillUnmount","unmount","initialize","token","applicationId","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAKsB,IAAAE,WAAA,GAAAF,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_jsxRuntime","_CastButton","e","__esModule","default","RNSpallaPlayer","requireNativeComponent","RNSpallaPlayerModule","NativeModules","play","ref","handle","findNodeHandle","exports","pause","seekTo","time","SpallaPlayer","React","Component","_player","_setRef","render","style","startTime","playbackRate","hideUI","props","jsx","children","componentWillUnmount","unmount","initialize","token","applicationId","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { NativeModules, findNodeHandle, requireNativeComponent } from 'react-native';
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
6
|
const RNSpallaPlayer = requireNativeComponent('RNSpallaPlayer');
|
|
7
7
|
const RNSpallaPlayerModule = NativeModules.RNSpallaPlayer;
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","NativeModules","findNodeHandle","requireNativeComponent","jsx","_jsx","RNSpallaPlayer","RNSpallaPlayerModule","play","ref","handle","pause","seekTo","time","SpallaPlayer","Component","_player","_setRef","render","style","startTime","playbackRate","hideUI","props","children","componentWillUnmount","unmount","initialize","token","applicationId","default","SpallaCastButton"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,aAAa,EACbC,cAAc,EACdC,sBAAsB,QAEjB,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAqBtB,MAAMC,cAAc,GAClBH,sBAAsB,CAAsB,gBAAgB,CAAC;AAE/D,MAAMI,oBAAoB,GAAGN,aAAa,CAACK,cAAc;AA0EzD,OAAO,MAAME,IAAI,GAAIC,GAAQ,IAAK;EAChC,MAAMC,MAAM,GAAGR,cAAc,CAACO,GAAG,CAAC;EAClCF,oBAAoB,CAACC,IAAI,CAACE,MAAM,CAAC;AACnC,CAAC;AAED,OAAO,MAAMC,KAAK,GAAIF,GAAQ,IAAK;EACjC,MAAMC,MAAM,GAAGR,cAAc,CAACO,GAAG,CAAC;EAClCF,oBAAoB,CAACI,KAAK,CAACD,MAAM,CAAC;AACpC,CAAC;AAED,OAAO,MAAME,MAAM,GAAGA,CAACH,GAAQ,EAAEI,IAAY,KAAK;EAChD,MAAMH,MAAM,GAAGR,cAAc,CAACO,GAAG,CAAC;EAClCF,oBAAoB,CAACK,MAAM,CAACF,MAAM,EAAEG,IAAI,CAAC;AAC3C,CAAC;;AAED;;AAEA,MAAMC,YAAY,SAASd,KAAK,CAACe,SAAS,CAAQ;EAChDC,OAAO,GAAG,IAAI;EAEdC,OAAO,GAAIR,GAAQ,IAAK;IACtB,IAAI,CAACO,OAAO,GAAGP,GAAG;EACpB,CAAC;EAEDS,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,KAAK;MAAEC,SAAS;MAAEC,YAAY;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACC,KAAK;IAE7D,oBACElB,IAAA,CAACC,cAAc;MAAA,GACT,IAAI,CAACiB,KAAK;MACdd,GAAG,EAAE,IAAI,CAACQ,OAAQ;MAClBE,KAAK,EAAEA,KAAM;MACbC,SAAS,EAAEA,SAAS,IAAI,CAAE;MAC1BC,YAAY,EAAEA,YAAY,IAAI,GAAI;MAClCC,MAAM,EAAEA,MAAM,IAAI,KAAM;MAAAE,QAAA,EAEvB,IAAI,CAACD,KAAK,CAACC;IAAQ,CACN,CAAC;EAErB;EAEAhB,IAAI,GAAGA,CAAA,KAAM;IACX,MAAME,MAAM,GAAGR,cAAc,CAAC,IAAI,CAACc,OAAO,CAAC;IAC3CT,oBAAoB,CAACC,IAAI,CAACE,MAAM,CAAC;EACnC,CAAC;EAEDC,KAAK,GAAGA,CAAA,KAAM;IACZ,MAAMD,MAAM,GAAGR,cAAc,CAAC,IAAI,CAACc,OAAO,CAAC;IAC3CT,oBAAoB,CAACI,KAAK,CAACD,MAAM,CAAC;EACpC,CAAC;EAEDE,MAAM,GAAIC,IAAY,IAAK;IACzB,MAAMH,MAAM,GAAGR,cAAc,CAAC,IAAI,CAACc,OAAO,CAAC;IAC3CT,oBAAoB,CAACK,MAAM,CAACF,MAAM,EAAEG,IAAI,CAAC;EAC3C,CAAC;EAEDY,oBAAoBA,CAAA,EAAG;IACrB,MAAMf,MAAM,GAAGR,cAAc,CAAC,IAAI,CAACc,OAAO,CAAC;IAC3CT,oBAAoB,CAACmB,OAAO,CAAChB,MAAM,CAAC;EACtC;AACF;AAEA,OAAO,MAAMiB,UAAU,GAAGA,CAACC,KAAa,EAAEC,aAA4B,KAAK;EACzEtB,oBAAoB,CAACoB,UAAU,CAACC,KAAK,EAAEC,aAAa,CAAC;AACvD,CAAC;AAED,eAAef,YAAY;AAC3B,SAASgB,OAAO,IAAIC,gBAAgB,QAAQ,4BAAyB","ignoreList":[]}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type ViewStyle } from 'react-native';
|
|
3
3
|
type allowedPlaybackRates = 0.25 | 0.5 | 1.0 | 1.25 | 1.5 | 2.0;
|
|
4
|
+
type CustomAd = {
|
|
5
|
+
url: string;
|
|
6
|
+
offset: string | number | null;
|
|
7
|
+
};
|
|
8
|
+
type CustomAds = CustomAd[];
|
|
4
9
|
interface PlayerEventTimeUpdate {
|
|
5
10
|
event: 'timeUpdate';
|
|
6
11
|
time: number;
|
|
@@ -38,8 +43,9 @@ interface Props {
|
|
|
38
43
|
autoplay?: boolean;
|
|
39
44
|
startTime?: number;
|
|
40
45
|
subtitle?: String | null;
|
|
41
|
-
playbackRate?:
|
|
46
|
+
playbackRate?: allowedPlaybackRates;
|
|
42
47
|
customImaParams?: Record<string, string>;
|
|
48
|
+
customAds?: CustomAds;
|
|
43
49
|
onPlayerEvent?: (event: {
|
|
44
50
|
nativeEvent: PlayerEventTimeUpdate | PlayerEvent | PlayerEventDurationUpdate | PlayerEventSubtitlesAvailable | PlayerEventSubtitleSelected | PlayerEventPlaybackRateSelected | PlayerEventMedataLoaded;
|
|
45
51
|
}) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,KAAK,oBAAoB,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAYhE,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,KAAK,SAAS,GAAG,QAAQ,EAAE,CAAC;AAO5B,UAAU,qBAAqB;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,yBAAyB;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,6BAA6B;IACrC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,UAAU,2BAA2B;IACnC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,+BAA+B;IACvC,KAAK,EAAE,sBAAsB,CAAC;IAC9B,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,WAAW;IACnB,KAAK,EACD,MAAM,GACN,OAAO,GACP,OAAO,GACP,OAAO,GACP,SAAS,GACT,WAAW,GACX,SAAS,GACT,mBAAmB,GACnB,kBAAkB,GAClB,UAAU,GACV,SAAS,GACT,cAAc,GACd,YAAY,CAAC;CAClB;AAED,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,WAAW,EACP,qBAAqB,GACrB,WAAW,GACX,yBAAyB,GACzB,6BAA6B,GAC7B,2BAA2B,GAC3B,+BAA+B,GAC/B,uBAAuB,CAAC;KAC7B,KAAK,IAAI,CAAC;CACZ;AAED,eAAO,MAAM,IAAI,QAAS,GAAG,SAG5B,CAAC;AAEF,eAAO,MAAM,KAAK,QAAS,GAAG,SAG7B,CAAC;AAEF,eAAO,MAAM,MAAM,QAAS,GAAG,QAAQ,MAAM,SAG5C,CAAC;AAIF,cAAM,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IAC/C,OAAO,OAAQ;IAEf,OAAO,QAAS,GAAG,UAEjB;IAEF,MAAM;IAiBN,IAAI,aAGF;IAEF,KAAK,aAGH;IAEF,MAAM,SAAU,MAAM,UAGpB;IAEF,oBAAoB;CAIrB;AAED,eAAO,MAAM,UAAU,UAAW,MAAM,iBAAiB,MAAM,GAAG,IAAI,SAErE,CAAC;AAEF,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type ViewStyle } from 'react-native';
|
|
3
3
|
type allowedPlaybackRates = 0.25 | 0.5 | 1.0 | 1.25 | 1.5 | 2.0;
|
|
4
|
+
type CustomAd = {
|
|
5
|
+
url: string;
|
|
6
|
+
offset: string | number | null;
|
|
7
|
+
};
|
|
8
|
+
type CustomAds = CustomAd[];
|
|
4
9
|
interface PlayerEventTimeUpdate {
|
|
5
10
|
event: 'timeUpdate';
|
|
6
11
|
time: number;
|
|
@@ -38,8 +43,9 @@ interface Props {
|
|
|
38
43
|
autoplay?: boolean;
|
|
39
44
|
startTime?: number;
|
|
40
45
|
subtitle?: String | null;
|
|
41
|
-
playbackRate?:
|
|
46
|
+
playbackRate?: allowedPlaybackRates;
|
|
42
47
|
customImaParams?: Record<string, string>;
|
|
48
|
+
customAds?: CustomAds;
|
|
43
49
|
onPlayerEvent?: (event: {
|
|
44
50
|
nativeEvent: PlayerEventTimeUpdate | PlayerEvent | PlayerEventDurationUpdate | PlayerEventSubtitlesAvailable | PlayerEventSubtitleSelected | PlayerEventPlaybackRateSelected | PlayerEventMedataLoaded;
|
|
45
51
|
}) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,KAAK,oBAAoB,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAYhE,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,KAAK,SAAS,GAAG,QAAQ,EAAE,CAAC;AAO5B,UAAU,qBAAqB;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,yBAAyB;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,6BAA6B;IACrC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,UAAU,2BAA2B;IACnC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,+BAA+B;IACvC,KAAK,EAAE,sBAAsB,CAAC;IAC9B,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,WAAW;IACnB,KAAK,EACD,MAAM,GACN,OAAO,GACP,OAAO,GACP,OAAO,GACP,SAAS,GACT,WAAW,GACX,SAAS,GACT,mBAAmB,GACnB,kBAAkB,GAClB,UAAU,GACV,SAAS,GACT,cAAc,GACd,YAAY,CAAC;CAClB;AAED,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,WAAW,EACP,qBAAqB,GACrB,WAAW,GACX,yBAAyB,GACzB,6BAA6B,GAC7B,2BAA2B,GAC3B,+BAA+B,GAC/B,uBAAuB,CAAC;KAC7B,KAAK,IAAI,CAAC;CACZ;AAED,eAAO,MAAM,IAAI,QAAS,GAAG,SAG5B,CAAC;AAEF,eAAO,MAAM,KAAK,QAAS,GAAG,SAG7B,CAAC;AAEF,eAAO,MAAM,MAAM,QAAS,GAAG,QAAQ,MAAM,SAG5C,CAAC;AAIF,cAAM,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IAC/C,OAAO,OAAQ;IAEf,OAAO,QAAS,GAAG,UAEjB;IAEF,MAAM;IAiBN,IAAI,aAGF;IAEF,KAAK,aAGH;IAEF,MAAM,SAAU,MAAM,UAGpB;IAEF,oBAAoB;CAIrB;AAED,eAAO,MAAM,UAAU,UAAW,MAAM,iBAAiB,MAAM,GAAG,IAAI,SAErE,CAAC;AAEF,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
|
|
|
16
16
|
|
|
17
17
|
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
18
18
|
|
|
19
|
-
s.dependency "SpallaSDK", "~> 2.6.
|
|
19
|
+
s.dependency "SpallaSDK", "~> 2.6.3"
|
|
20
20
|
|
|
21
21
|
# Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
|
|
22
22
|
# See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
|
package/src/index.tsx
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import {
|
|
3
|
-
requireNativeComponent,
|
|
4
|
-
type ViewStyle,
|
|
5
3
|
NativeModules,
|
|
6
4
|
findNodeHandle,
|
|
5
|
+
requireNativeComponent,
|
|
6
|
+
type ViewStyle,
|
|
7
7
|
} from 'react-native';
|
|
8
8
|
|
|
9
9
|
type allowedPlaybackRates = 0.25 | 0.5 | 1.0 | 1.25 | 1.5 | 2.0;
|
|
@@ -18,6 +18,13 @@ interface RNSpallaPlayerProps {
|
|
|
18
18
|
ref?: (ref: any) => void;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
type CustomAd = {
|
|
22
|
+
url: string;
|
|
23
|
+
offset: string | number | null;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
type CustomAds = CustomAd[];
|
|
27
|
+
|
|
21
28
|
const RNSpallaPlayer =
|
|
22
29
|
requireNativeComponent<RNSpallaPlayerProps>('RNSpallaPlayer');
|
|
23
30
|
|
|
@@ -80,8 +87,9 @@ interface Props {
|
|
|
80
87
|
autoplay?: boolean;
|
|
81
88
|
startTime?: number;
|
|
82
89
|
subtitle?: String | null;
|
|
83
|
-
playbackRate?:
|
|
90
|
+
playbackRate?: allowedPlaybackRates;
|
|
84
91
|
customImaParams?: Record<string, string>;
|
|
92
|
+
customAds?: CustomAds;
|
|
85
93
|
onPlayerEvent?: (event: {
|
|
86
94
|
nativeEvent:
|
|
87
95
|
| PlayerEventTimeUpdate
|