@wscsports/blaze-rtn-sdk 1.6.1 → 1.18.0

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.
@@ -6,7 +6,7 @@ buildscript {
6
6
  blaze_default_compileSdkVersion = 35
7
7
  blaze_default_minSdkVersion = 24
8
8
  blaze_default_kotlin_version = '2.0.21'
9
- blazesdk_version = '1.17.1'
9
+ blazesdk_version = '1.18.0'
10
10
  blaze_gson_version = '2.10.1'
11
11
  }
12
12
 
@@ -11,11 +11,15 @@ import BlazeReactStoryPlayerHeaderGradientStyle
11
11
  import BlazeReactStoryPlayerLastUpdateTextStyle
12
12
  import BlazeReactStoryPlayerProgressBarStyle
13
13
  import BlazeReactStoryPlayerStyle
14
+ import BlazeReactStoryPlayerTitleImageSource
15
+ import BlazeReactStoryPlayerTitleImageStaticSource
16
+ import BlazeReactStoryPlayerTitleImageStyle
14
17
  import BlazeReactStoryPlayerTitleTextStyle
15
18
  import BlazeReactTextCase
16
19
  import android.content.Context
17
20
  import com.blaze.blazesdk.style.players.BlazeTextCase
18
21
  import com.blaze.blazesdk.style.players.stories.BlazeStoryPlayerButtonsStyle
22
+ import com.blaze.blazesdk.style.players.stories.BlazeStoryPlayerTitleImageStyle
19
23
  import com.blaze.blazesdk.style.players.stories.BlazeStoryPlayerChipStyle
20
24
  import com.blaze.blazesdk.style.players.stories.BlazeStoryPlayerChipsStyle
21
25
  import com.blaze.blazesdk.style.players.stories.BlazeStoryPlayerCtaStyle
@@ -95,10 +99,55 @@ fun BlazeStoryPlayerTitleTextStyle.mergedWith(
95
99
  merged.textSize = customization.textSize ?: merged.textSize
96
100
  merged.textColor = safeParseColor(customization.textColor) ?: this.textColor
97
101
  merged.isVisible = customization.isVisible ?: this.isVisible
102
+ merged.image = merged.image.mergedWith(customization.image, context)
98
103
 
99
104
  return merged
100
105
  }
101
106
 
107
+ fun BlazeStoryPlayerTitleImageStyle.mergedWith(
108
+ customization: BlazeReactStoryPlayerTitleImageStyle?,
109
+ context: Context
110
+ ): BlazeStoryPlayerTitleImageStyle {
111
+ customization ?: return this
112
+
113
+ val merged = this
114
+ merged.isVisible = customization.isVisible ?: this.isVisible
115
+ merged.size = customization.size?.toInt()?.blazeDp ?: this.size
116
+
117
+ customization.source?.let { reactSource ->
118
+ when (reactSource.type) {
119
+ "static" -> {
120
+ reactSource.staticSource?.toNativeStaticSource(context)?.let {
121
+ merged.source = it
122
+ }
123
+ }
124
+ "dynamic" -> {
125
+ merged.source = BlazeStoryPlayerTitleImageStyle.BlazeStoryPlayerTitleImageSource.Dynamic(
126
+ fallback = reactSource.fallback?.toNativeStaticSource(context)
127
+ )
128
+ }
129
+ }
130
+ }
131
+
132
+ return merged
133
+ }
134
+
135
+ private fun BlazeReactStoryPlayerTitleImageStaticSource.toNativeStaticSource(
136
+ context: Context
137
+ ): BlazeStoryPlayerTitleImageStyle.BlazeStoryPlayerTitleImageSource.Static? {
138
+ return when (type) {
139
+ "image" -> {
140
+ val resId = image?.toImageResId(context) ?: return null
141
+ BlazeStoryPlayerTitleImageStyle.BlazeStoryPlayerTitleImageSource.Static.ResId(resId)
142
+ }
143
+ "url" -> {
144
+ url ?: return null
145
+ BlazeStoryPlayerTitleImageStyle.BlazeStoryPlayerTitleImageSource.Static.Url(url)
146
+ }
147
+ else -> null
148
+ }
149
+ }
150
+
102
151
  fun BlazeStoryPlayerLastUpdateTextStyle.mergedWith(
103
152
  customization: BlazeReactStoryPlayerLastUpdateTextStyle?,
104
153
  context: Context
@@ -23,7 +23,29 @@ data class BlazeReactStoryPlayerTitleTextStyle(
23
23
  val font: BlazeReactTitleFont?,
24
24
  val textSize: Float?,
25
25
  val textColor: String?,
26
- var isVisible: Boolean?
26
+ var isVisible: Boolean?,
27
+ val image: BlazeReactStoryPlayerTitleImageStyle?
28
+ )
29
+
30
+ @Keep
31
+ data class BlazeReactStoryPlayerTitleImageStyle(
32
+ val isVisible: Boolean?,
33
+ val size: Float?,
34
+ val source: BlazeReactStoryPlayerTitleImageSource?
35
+ )
36
+
37
+ @Keep
38
+ data class BlazeReactStoryPlayerTitleImageSource(
39
+ val type: String?,
40
+ val staticSource: BlazeReactStoryPlayerTitleImageStaticSource?,
41
+ val fallback: BlazeReactStoryPlayerTitleImageStaticSource?
42
+ )
43
+
44
+ @Keep
45
+ data class BlazeReactStoryPlayerTitleImageStaticSource(
46
+ val type: String?,
47
+ val image: BlazeReactImage?,
48
+ val url: String?
27
49
  )
28
50
 
29
51
  @Keep
@@ -22,7 +22,7 @@ Pod::Spec.new do |s|
22
22
 
23
23
  s.dependency "React"
24
24
 
25
- s.dependency 'BlazeSDK', '1.17.1'
25
+ s.dependency 'BlazeSDK', '1.18.1'
26
26
 
27
27
  s.source_files = [
28
28
  "ios/Sources/**/*.{h,c,cc,cpp,m,mm,swift}"
@@ -22,6 +22,25 @@ struct BlazeReactStoryPlayerTitleTextStyle : Codable {
22
22
  let textSize: CGFloat? // Only Android
23
23
  var textColor: String?
24
24
  var isVisible: Bool?
25
+ var image: BlazeReactStoryPlayerTitleImageStyle?
26
+ }
27
+
28
+ struct BlazeReactStoryPlayerTitleImageStyle: Codable {
29
+ var isVisible: Bool?
30
+ var size: CGFloat?
31
+ var source: BlazeReactStoryPlayerTitleImageSource?
32
+ }
33
+
34
+ struct BlazeReactStoryPlayerTitleImageSource: Codable {
35
+ var type: String?
36
+ var staticSource: BlazeReactStoryPlayerTitleImageStaticSource?
37
+ var fallback: BlazeReactStoryPlayerTitleImageStaticSource?
38
+ }
39
+
40
+ struct BlazeReactStoryPlayerTitleImageStaticSource: Codable {
41
+ var type: String?
42
+ var image: BlazeReactImage?
43
+ var url: String?
25
44
  }
26
45
 
27
46
  struct BlazeReactStoryPlayerLastUpdateTextStyle : Codable {
@@ -69,7 +69,7 @@ extension BlazeStoryPlayerChipsStyle {
69
69
 
70
70
  var merged = self
71
71
  merged.live = merged.live.mergedWith(customization.live)
72
- merged.ad = merged.live.mergedWith(customization.ad)
72
+ merged.ad = merged.ad.mergedWith(customization.ad)
73
73
  return merged
74
74
  }
75
75
  }
@@ -148,10 +148,51 @@ extension BlazeStoryPlayerTitleTextStyle{
148
148
  merged.font = merged.font.fontWith(customization.font, textSize: customization.textSize)
149
149
  merged.textColor = UIColor(hexString: customization.textColor) ?? merged.textColor
150
150
  merged.isVisible = customization.isVisible ?? merged.isVisible
151
+ merged.image = merged.image.mergedWith(customization.image)
151
152
  return merged
152
153
  }
153
154
  }
154
155
 
156
+ extension BlazeStoryPlayerTitleImageStyle {
157
+ func mergedWith(_ customization: BlazeReactStoryPlayerTitleImageStyle?) -> Self {
158
+ guard let customization else { return self }
159
+
160
+ var merged = self
161
+ merged.isVisible = customization.isVisible ?? merged.isVisible
162
+ merged.size = customization.size ?? merged.size
163
+
164
+ if let reactSource = customization.source {
165
+ switch reactSource.type {
166
+ case "static":
167
+ if let nativeStaticSource = reactSource.staticSource?.toNativeStaticSource() {
168
+ merged.source = .static(nativeStaticSource)
169
+ }
170
+ case "dynamic":
171
+ merged.source = .dynamic(fallback: reactSource.fallback?.toNativeStaticSource())
172
+ default:
173
+ break
174
+ }
175
+ }
176
+
177
+ return merged
178
+ }
179
+ }
180
+
181
+ extension BlazeReactStoryPlayerTitleImageStaticSource {
182
+ func toNativeStaticSource() -> BlazeStoryPlayerTitleImageStaticSource? {
183
+ switch type {
184
+ case "image":
185
+ guard let nativeImage = UIImage.imageWith(image) else { return nil }
186
+ return .image(nativeImage)
187
+ case "url":
188
+ guard let url, let parsedUrl = URL(string: url) else { return nil }
189
+ return .url(parsedUrl)
190
+ default:
191
+ return nil
192
+ }
193
+ }
194
+ }
195
+
155
196
  extension BlazeStoryPlayerLastUpdateTextStyle{
156
197
  func mergedWith(_ customization: BlazeReactStoryPlayerLastUpdateTextStyle?) -> Self {
157
198
  guard let customization else { return self }
@@ -1,4 +1,4 @@
1
- import { BlazeColor, BlazeCustomActionButton, BlazeFirstTimeSlideCTAStyle, BlazeFirstTimeSlideInstructionStyle as BlazeFirstTimeSlideInstructionStyle, BlazeFirstTimeSlideTextStyle, BlazeFont, BlazeMargins, BlazePlayerButtonStyle } from '.';
1
+ import { BlazeColor, BlazeCustomActionButton, BlazeFirstTimeSlideCTAStyle, BlazeFirstTimeSlideInstructionStyle as BlazeFirstTimeSlideInstructionStyle, BlazeFirstTimeSlideTextStyle, BlazeFont, BlazeImage, BlazeMargins, BlazePlayerButtonStyle } from '.';
2
2
  export interface BlazeStoryPlayerStyle {
3
3
  title?: BlazeStoryPlayerTitleTextStyle;
4
4
  lastUpdate?: BlazeStoryPlayerLastUpdateTextStyle;
@@ -46,7 +46,29 @@ interface BlazeStoryPlayerTitleTextStyle {
46
46
  textSize?: number;
47
47
  textColor?: string;
48
48
  isVisible?: boolean;
49
+ image?: BlazeStoryPlayerTitleImageStyle;
49
50
  }
51
+ export interface BlazeStoryPlayerTitleImageStyle {
52
+ isVisible?: boolean;
53
+ size?: number;
54
+ source?: BlazeStoryPlayerTitleImageSource;
55
+ }
56
+ export type BlazeStoryPlayerTitleImageSource = BlazeStoryPlayerTitleImageStaticImageSource | BlazeStoryPlayerTitleImageDynamicSource;
57
+ interface BlazeStoryPlayerTitleImageStaticImageSource {
58
+ type: 'static';
59
+ staticSource: BlazeStoryPlayerTitleImageStaticSource;
60
+ }
61
+ interface BlazeStoryPlayerTitleImageDynamicSource {
62
+ type: 'dynamic';
63
+ fallback?: BlazeStoryPlayerTitleImageStaticSource;
64
+ }
65
+ export type BlazeStoryPlayerTitleImageStaticSource = {
66
+ type: 'image';
67
+ image: BlazeImage;
68
+ } | {
69
+ type: 'url';
70
+ url: string;
71
+ };
50
72
  interface BlazeStoryPlayerLastUpdateTextStyle {
51
73
  font?: BlazeFont;
52
74
  textColor?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"stories-player-style.d.ts","sourceRoot":"","sources":["../../../src/interfaces/stories-player-style.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,mCAAmC,IAAI,mCAAmC,EAC1E,4BAA4B,EAC5B,SAAS,EACT,YAAY,EACZ,sBAAsB,EACvB,MAAM,GAAG,CAAC;AAEX,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,UAAU,CAAC,EAAE,mCAAmC,CAAC;IACjD,OAAO,CAAC,EAAE,4BAA4B,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,wBAAwB,CAAC;IAC/B,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,cAAc,CAAC,EAAE,mCAAmC,CAAC;IACrD,cAAc,CAAC,EAAE,mCAAmC,CAAC;IACrD,WAAW,CAAC,EAAE,gCAAgC,CAAC;CAChD;AAED,UAAU,mCAAmC;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,2BAA2B,CAAC;IAClC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,SAAS,CAAC,EAAE,4BAA4B,CAAC;IACzC,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACxC,YAAY,CAAC,EAAE,+CAA+C,CAAC;CAChE;AAED,UAAU,gCAAgC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,+CAA+C;IACvD,OAAO,CAAC,EAAE,mCAAmC,CAAC;IAC9C,KAAK,CAAC,EAAE,mCAAmC,CAAC;IAC5C,QAAQ,CAAC,EAAE,mCAAmC,CAAC;IAC/C,UAAU,CAAC,EAAE,mCAAmC,CAAC;CAClD;AAED,UAAU,4BAA4B;IACpC,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,mBAAmB,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACjD;AAED,UAAU,wBAAwB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAGD,KAAK,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;AAE/C,UAAU,8BAA8B;IACtC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,mCAAmC;IAC3C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,mCAAmC;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,yBAAyB;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CAErB;AAED,UAAU,0BAA0B;IAClC,IAAI,CAAC,EAAE,yBAAyB,CAAC;IACjC,EAAE,CAAC,EAAE,yBAAyB,CAAC;CAChC"}
1
+ {"version":3,"file":"stories-player-style.d.ts","sourceRoot":"","sources":["../../../src/interfaces/stories-player-style.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wscsports/blaze-rtn-sdk",
3
3
  "title": "WSC Sports React Native SDK",
4
- "version": "1.6.1",
4
+ "version": "1.18.0",
5
5
  "description": "WSC Sports Blaze SDK component for React Native",
6
6
  "main": "lib/commonjs/index.js",
7
7
  "react-native": "src/index.tsx",
@@ -5,6 +5,7 @@ import {
5
5
  BlazeFirstTimeSlideInstructionStyle as BlazeFirstTimeSlideInstructionStyle,
6
6
  BlazeFirstTimeSlideTextStyle,
7
7
  BlazeFont,
8
+ BlazeImage,
8
9
  BlazeMargins,
9
10
  BlazePlayerButtonStyle,
10
11
  } from '.';
@@ -64,8 +65,33 @@ interface BlazeStoryPlayerTitleTextStyle {
64
65
  textSize?: number;
65
66
  textColor?: string;
66
67
  isVisible?: boolean;
68
+ image?: BlazeStoryPlayerTitleImageStyle;
67
69
  }
68
70
 
71
+ export interface BlazeStoryPlayerTitleImageStyle {
72
+ isVisible?: boolean;
73
+ size?: number;
74
+ source?: BlazeStoryPlayerTitleImageSource;
75
+ }
76
+
77
+ export type BlazeStoryPlayerTitleImageSource =
78
+ | BlazeStoryPlayerTitleImageStaticImageSource
79
+ | BlazeStoryPlayerTitleImageDynamicSource;
80
+
81
+ interface BlazeStoryPlayerTitleImageStaticImageSource {
82
+ type: 'static';
83
+ staticSource: BlazeStoryPlayerTitleImageStaticSource;
84
+ }
85
+
86
+ interface BlazeStoryPlayerTitleImageDynamicSource {
87
+ type: 'dynamic';
88
+ fallback?: BlazeStoryPlayerTitleImageStaticSource;
89
+ }
90
+
91
+ export type BlazeStoryPlayerTitleImageStaticSource =
92
+ | { type: 'image'; image: BlazeImage }
93
+ | { type: 'url'; url: string };
94
+
69
95
  interface BlazeStoryPlayerLastUpdateTextStyle {
70
96
  font?: BlazeFont;
71
97
  textColor?: string;