@24i/smartapps-bigscreen-rnv-build-engine 0.17.9 → 0.17.10-alpha.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.
Files changed (233) hide show
  1. package/package.json +5 -5
  2. package/dist/src/__tests__/engine.spec.js +0 -57
  3. package/dist/src/__tests__/resolvers/resolveBaseUrl.spec.js +0 -120
  4. package/dist/src/__tests__/resolvers/resolveBuildEnvName.spec.js +0 -23
  5. package/dist/src/__tests__/resolvers/resolveBuildEnvType.spec.js +0 -23
  6. package/dist/src/__tests__/resolvers/resolveBuildFileBaseName.spec.js +0 -100
  7. package/dist/src/__tests__/resolvers/resolveBuildFileExtension.spec.js +0 -26
  8. package/dist/src/__tests__/resolvers/resolveBuildFileName.spec.js +0 -109
  9. package/dist/src/__tests__/resolvers/resolveBuildVersion.spec.js +0 -60
  10. package/dist/src/__tests__/resolvers/resolveBuildVersionOffset.spec.js +0 -111
  11. package/dist/src/__tests__/resolvers/resolveDeployLocations.spec.js +0 -98
  12. package/dist/src/__tests__/resolvers/resolveGenericRnvConfig.spec.js +0 -92
  13. package/dist/src/__tests__/resolvers/resolveHbbtvDeployConfig.spec.js +0 -35
  14. package/dist/src/__tests__/resolvers/resolveHbbtvDeployUrl.spec.js +0 -53
  15. package/dist/src/__tests__/resolvers/resolveHbbtvRemoteBuildDirRelativePath.spec.js +0 -68
  16. package/dist/src/__tests__/resolvers/resolveSupportedPlatforms.spec.js +0 -22
  17. package/dist/src/__tests__/resolvers/resolveUsedFlavours.spec.js +0 -38
  18. package/dist/src/__tests__/resolvers/resolveZippedPlatformBuildsRelativeFilePath.spec.js +0 -18
  19. package/dist/src/__tests__/sdks/sdk-utils/registerSdkPath.spec.js +0 -60
  20. package/dist/src/__tests__/sdks/sdk-utils/sdk-installer/sdkInstaller.spec.js +0 -85
  21. package/dist/src/__tests__/sdks/sdk-utils/sdk-installer/services/clean.spec.js +0 -50
  22. package/dist/src/__tests__/sdks/sdk-utils/sdk-installer/services/download.spec.js +0 -103
  23. package/dist/src/__tests__/sdks/sdk-utils/sdk-installer/services/install.spec.js +0 -57
  24. package/dist/src/__tests__/sdks/sdk-utils/sdk-installer/services/unzip.spec.js +0 -51
  25. package/dist/src/__tests__/utils/forEachSupportedPlatformFlavour.spec.js +0 -104
  26. package/dist/src/__tests__/utils/generatePngSpriteMap.spec.js +0 -81
  27. package/dist/src/__tests__/utils/generateSvgSpriteMap.spec.js +0 -108
  28. package/dist/src/__tests__/utils/mergeSvgAndPngIcons.spec.js +0 -112
  29. package/dist/src/__tests__/utils/replaceRelevantStringsInConfig/replaceRelevantStringsInConfig.spec.js +0 -116
  30. package/dist/src/__tests__/utils/replaceRelevantStringsInConfig/replaceTemplateString.spec.js +0 -65
  31. package/dist/src/__tests__/utils/zipBuildsByPlatforms.spec.js +0 -69
  32. package/dist/src/constants/buildEnvironments.js +0 -9
  33. package/dist/src/constants/buildProductionPackages.js +0 -10
  34. package/dist/src/constants/buildSchemes.js +0 -19
  35. package/dist/src/constants/delopyLivePlatforms.js +0 -14
  36. package/dist/src/constants/index.js +0 -9
  37. package/dist/src/constants/platforms.js +0 -18
  38. package/dist/src/engine.js +0 -118
  39. package/dist/src/index.js +0 -30
  40. package/dist/src/resolvers/index.js +0 -42
  41. package/dist/src/resolvers/resolveBaseUrl.js +0 -27
  42. package/dist/src/resolvers/resolveBuildEnvName.js +0 -16
  43. package/dist/src/resolvers/resolveBuildEnvType.js +0 -23
  44. package/dist/src/resolvers/resolveBuildFileBaseName.js +0 -46
  45. package/dist/src/resolvers/resolveBuildFileExtension.js +0 -12
  46. package/dist/src/resolvers/resolveBuildFileName.js +0 -12
  47. package/dist/src/resolvers/resolveBuildVersion.js +0 -47
  48. package/dist/src/resolvers/resolveBuildVersionOffset.js +0 -34
  49. package/dist/src/resolvers/resolveDeployLocations.js +0 -76
  50. package/dist/src/resolvers/resolveGenericRnvConfig.js +0 -58
  51. package/dist/src/resolvers/resolveHbbtvDeployConfig.js +0 -13
  52. package/dist/src/resolvers/resolveHbbtvDeployUrl.js +0 -11
  53. package/dist/src/resolvers/resolveHbbtvRemoteBuildDirRelativePath.js +0 -29
  54. package/dist/src/resolvers/resolvePackageVersions.js +0 -57
  55. package/dist/src/resolvers/resolveProductionZipFileRelativePath.js +0 -35
  56. package/dist/src/resolvers/resolveS3BucketAppPath.js +0 -15
  57. package/dist/src/resolvers/resolveSupportedFlavoursForPlatform.js +0 -8
  58. package/dist/src/resolvers/resolveSupportedPlatforms.js +0 -5
  59. package/dist/src/resolvers/resolveUsedFlavours.js +0 -23
  60. package/dist/src/resolvers/resolveZippedPlatformBuildsRelativeFilePath.js +0 -38
  61. package/dist/src/resolvers/shared/constructFullUrl.js +0 -25
  62. package/dist/src/scripts/buildAllWithScheme.js +0 -25
  63. package/dist/src/scripts/buildAllWithSchemes.js +0 -88
  64. package/dist/src/scripts/buildProductionPackagesAll.js +0 -75
  65. package/dist/src/scripts/deployLiveAll.js +0 -27
  66. package/dist/src/scripts/deployLivePlatform.js +0 -44
  67. package/dist/src/scripts/generateDeployUrls/formatTableDataSpaces.js +0 -30
  68. package/dist/src/scripts/generateDeployUrls/generateDeployUrls.js +0 -151
  69. package/dist/src/scripts/generateDeployUrls/index.js +0 -4
  70. package/dist/src/scripts/generateDeployUrls/makeTableDataByScheme.js +0 -65
  71. package/dist/src/scripts/gitReleaser/afterVersionBump.js +0 -18
  72. package/dist/src/scripts/gitReleaser/beforeVersionBump.js +0 -12
  73. package/dist/src/scripts/gitReleaser/checkReleaseNotes.js +0 -16
  74. package/dist/src/scripts/gitReleaser/pushRelease.js +0 -31
  75. package/dist/src/scripts/gitReleaser/pushReleaseCandidate.js +0 -6
  76. package/dist/src/scripts/gitReleaser/pushReleaseNotes.js +0 -37
  77. package/dist/src/scripts/release/appCenter/appCenter.js +0 -17
  78. package/dist/src/scripts/release/appCenter/deployProductionPackagesToAppCenter.js +0 -127
  79. package/dist/src/scripts/release/appCenter/deployToAppCenter.js +0 -76
  80. package/dist/src/scripts/release/deleteSourceMaps.js +0 -11
  81. package/dist/src/scripts/release/githubRelease.js +0 -132
  82. package/dist/src/scripts/release/notifySlack/generateWebhoook.js +0 -69
  83. package/dist/src/scripts/release/notifySlack/makePayload.js +0 -89
  84. package/dist/src/scripts/release/notifySlack/notifySlack.js +0 -56
  85. package/dist/src/scripts/release/notifySlack/slackBlockKitBuilder.js +0 -39
  86. package/dist/src/scripts/release/sentryRelease.js +0 -95
  87. package/dist/src/scripts/release/urlsMarkdown.js +0 -66
  88. package/dist/src/scripts/releaseAllWithScheme.js +0 -90
  89. package/dist/src/scripts/releaseAllWithSchemes.js +0 -158
  90. package/dist/src/scripts/releaseProductionPackagesAll.js +0 -13
  91. package/dist/src/scripts/utils/cmdUtils.js +0 -12
  92. package/dist/src/scripts/utils/fsUtils.js +0 -37
  93. package/dist/src/scripts/utils/generateIcons.js +0 -29
  94. package/dist/src/scripts/utils/gitUtils.js +0 -78
  95. package/dist/src/scripts/utils/index.js +0 -31
  96. package/dist/src/scripts/utils/stringUtils.js +0 -5
  97. package/dist/src/sdks/index.js +0 -51
  98. package/dist/src/sdks/sdk-androidtv/index.js +0 -17
  99. package/dist/src/sdks/sdk-androidtv/sdkAndroidtv.js +0 -290
  100. package/dist/src/sdks/sdk-tizen/index.js +0 -17
  101. package/dist/src/sdks/sdk-tizen/sdkTizen.js +0 -178
  102. package/dist/src/sdks/sdk-utils/index.js +0 -18
  103. package/dist/src/sdks/sdk-utils/registerSdkPath.js +0 -14
  104. package/dist/src/sdks/sdk-utils/sdk-installer/index.js +0 -5
  105. package/dist/src/sdks/sdk-utils/sdk-installer/sdkInstaller.js +0 -37
  106. package/dist/src/sdks/sdk-utils/sdk-installer/services/clean.js +0 -11
  107. package/dist/src/sdks/sdk-utils/sdk-installer/services/download.js +0 -80
  108. package/dist/src/sdks/sdk-utils/sdk-installer/services/index.js +0 -11
  109. package/dist/src/sdks/sdk-utils/sdk-installer/services/install.js +0 -23
  110. package/dist/src/sdks/sdk-utils/sdk-installer/services/unzip.js +0 -13
  111. package/dist/src/sdks/sdk-webos/index.js +0 -17
  112. package/dist/src/sdks/sdk-webos/sdkWebos.js +0 -90
  113. package/dist/src/sdks/sdk-webpack/index.js +0 -17
  114. package/dist/src/sdks/sdk-webpack/sdkWebpack.js +0 -121
  115. package/dist/src/sdks/sdk-xbox/index.js +0 -17
  116. package/dist/src/sdks/sdk-xbox/sdkXbox.js +0 -221
  117. package/dist/src/tasks/deploy/aswS3/aws.js +0 -40
  118. package/dist/src/tasks/deploy/aswS3/deployS3.js +0 -74
  119. package/dist/src/tasks/deploy/aswS3/distToLiveS3.js +0 -75
  120. package/dist/src/tasks/deploy/hbbtv/deployHbbtv.js +0 -104
  121. package/dist/src/tasks/engineTasks.js +0 -24
  122. package/dist/src/tasks/task.rnv.build.js +0 -118
  123. package/dist/src/tasks/task.rnv.configure.js +0 -48
  124. package/dist/src/tasks/task.rnv.configureSoft.js +0 -30
  125. package/dist/src/tasks/task.rnv.deploy.js +0 -53
  126. package/dist/src/tasks/task.rnv.hooks.run.js +0 -74
  127. package/dist/src/tasks/task.rnv.package.js +0 -18
  128. package/dist/src/tasks/task.rnv.platform.configure.js +0 -79
  129. package/dist/src/tasks/task.rnv.project.configure.js +0 -120
  130. package/dist/src/tasks/task.rnv.start.js +0 -48
  131. package/dist/src/types/c.js +0 -2
  132. package/dist/src/types/constants.js +0 -2
  133. package/dist/src/types/index.js +0 -2
  134. package/dist/src/utils/copyEnvironmentFolder.js +0 -65
  135. package/dist/src/utils/copyTheoPlayerLibs.js +0 -48
  136. package/dist/src/utils/forEachSupportedPlatformFlavour.js +0 -46
  137. package/dist/src/utils/generatePngSpriteMap.js +0 -81
  138. package/dist/src/utils/generateSvgSpriteMap.js +0 -117
  139. package/dist/src/utils/getSafeSchemeString.js +0 -7
  140. package/dist/src/utils/mergeSvgAndPngIcons.js +0 -65
  141. package/dist/src/utils/replaceRelevantStringsInConfig/index.js +0 -5
  142. package/dist/src/utils/replaceRelevantStringsInConfig/replaceRelevantStringsInConfig.js +0 -31
  143. package/dist/src/utils/replaceRelevantStringsInConfig/replaceTemplateString.js +0 -40
  144. package/dist/src/utils/zipBuildsByPlatforms.js +0 -68
  145. package/dist/src/utils/zipStagingProdBuildsByPlatforms.js +0 -114
  146. package/dist/templates/platforms/_shared/template.js +0 -87
  147. package/dist/templates/platforms/_shared/utils/extendSass.js +0 -29
  148. package/dist/templates/platforms/_shared/utils/joinStrings.js +0 -5
  149. package/dist/templates/platforms/_shared/webpack.base.js +0 -248
  150. package/dist/templates/platforms/_shared/webpack.config.dev.js +0 -6
  151. package/dist/templates/platforms/_shared/webpack.config.prod.js +0 -6
  152. package/dist/templates/platforms/_shared/webpack.extend.js +0 -8
  153. package/dist/templates/platforms/_shared/webpackConfigAdapter.js +0 -99
  154. package/dist/templates/platforms/_shared/webpackPlatformProps.js +0 -8
  155. package/dist/templates/platforms/androidtv/project/README.md +0 -196
  156. package/dist/templates/platforms/androidtv/project/amazoniap/build.gradle +0 -38
  157. package/dist/templates/platforms/androidtv/project/amazoniap/consumer-rules.pro +0 -0
  158. package/dist/templates/platforms/androidtv/project/amazoniap/libs/in-app-purchasing-2.0.76.jar +0 -0
  159. package/dist/templates/platforms/androidtv/project/amazoniap/proguard-rules.pro +0 -21
  160. package/dist/templates/platforms/androidtv/project/amazoniap/src/main/java/com/twentyfouri/bridgetv/amazoniap/AmazonIapSevice.kt +0 -106
  161. package/dist/templates/platforms/androidtv/project/app/build.gradle +0 -110
  162. package/dist/templates/platforms/androidtv/project/app/proguard-rules.pro +0 -47
  163. package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
  164. package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/raw/configuration.json +0 -8
  165. package/dist/templates/platforms/androidtv/project/app/src/main/AndroidManifest.xml +0 -52
  166. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/FlavorBase.kt +0 -12
  167. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeFromJavaScript.kt +0 -382
  168. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeToJavaScript.kt +0 -104
  169. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/BridgeConfig.kt +0 -17
  170. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/ConfigCallback.kt +0 -6
  171. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/ConfigProvider.kt +0 -27
  172. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/Drm.kt +0 -10
  173. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/UserAgent.kt +0 -6
  174. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/BaseApplication.kt +0 -73
  175. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ActivityComponent.kt +0 -13
  176. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ActivityModule.kt +0 -14
  177. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ApplicationComponent.kt +0 -26
  178. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ApplicationModule.kt +0 -51
  179. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/PerActivity.kt +0 -26
  180. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/LocalStorage.kt +0 -30
  181. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/LoggingDrmCallback.kt +0 -38
  182. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/OverriddenHttpMediaDrmCallback.kt +0 -134
  183. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryConfigured.kt +0 -33
  184. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryExoPlayerCustomized.kt +0 -90
  185. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryTheoPlayerCustomized.kt +0 -14
  186. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryVersion.kt +0 -27
  187. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/SimpleActivityLifecycleCallback.kt +0 -32
  188. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/SourceDrmOverridden.kt +0 -91
  189. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/sound/TouchPlayer.kt +0 -86
  190. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/client/BridgeWebView.kt +0 -82
  191. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/client/BridgeWebViewClient.kt +0 -114
  192. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/AnalyticsPlaybackInfo.kt +0 -10
  193. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/ContentModel.kt +0 -14
  194. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/DrmModel.kt +0 -20
  195. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/MediaEventType.kt +0 -25
  196. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/PlaybackInfoParser.kt +0 -10
  197. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/SourceParser.kt +0 -89
  198. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/TrackJsonModelParser.kt +0 -58
  199. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/Mainview.kt +0 -17
  200. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/PlayerCache.kt +0 -15
  201. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/WebViewActivity.kt +0 -247
  202. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/viewmodel/WebViewModel.kt +0 -557
  203. package/dist/templates/platforms/androidtv/project/app/src/main/res/drawable/button_background_focus.xml +0 -10
  204. package/dist/templates/platforms/androidtv/project/app/src/main/res/drawable/button_background_normal.xml +0 -7
  205. package/dist/templates/platforms/androidtv/project/app/src/main/res/drawable/button_background_pressed.xml +0 -7
  206. package/dist/templates/platforms/androidtv/project/app/src/main/res/drawable/button_focus.xml +0 -8
  207. package/dist/templates/platforms/androidtv/project/app/src/main/res/layout/activity_web_view.xml +0 -28
  208. package/dist/templates/platforms/androidtv/project/app/src/main/res/raw/click.ogg +0 -0
  209. package/dist/templates/platforms/androidtv/project/app/src/main/res/values/styles.xml +0 -12
  210. package/dist/templates/platforms/androidtv/project/app/src/main/res/xml/network_security_config.xml +0 -4
  211. package/dist/templates/platforms/androidtv/project/build.gradle +0 -47
  212. package/dist/templates/platforms/androidtv/project/common/build.gradle +0 -37
  213. package/dist/templates/platforms/androidtv/project/common/consumer-rules.pro +0 -0
  214. package/dist/templates/platforms/androidtv/project/common/proguard-rules.pro +0 -21
  215. package/dist/templates/platforms/androidtv/project/common/src/main/java/com/twentyfouri/tvbridge/common/IapService.kt +0 -114
  216. package/dist/templates/platforms/androidtv/project/googleiap/build.gradle +0 -39
  217. package/dist/templates/platforms/androidtv/project/googleiap/consumer-rules.pro +0 -0
  218. package/dist/templates/platforms/androidtv/project/googleiap/proguard-rules.pro +0 -21
  219. package/dist/templates/platforms/androidtv/project/googleiap/src/main/java/com/twentyfouri/tvbridge/googleiap/GoogleIapService.kt +0 -29
  220. package/dist/templates/platforms/androidtv/project/gradle/wrapper/gradle-wrapper.jar +0 -0
  221. package/dist/templates/platforms/androidtv/project/gradle/wrapper/gradle-wrapper.properties +0 -6
  222. package/dist/templates/platforms/androidtv/project/gradle.properties +0 -4
  223. package/dist/templates/platforms/androidtv/project/gradlew +0 -185
  224. package/dist/templates/platforms/androidtv/project/gradlew.bat +0 -104
  225. package/dist/templates/platforms/androidtv/project/proguard-rules.pro +0 -42
  226. package/dist/templates/platforms/androidtv/project/settings.gradle +0 -4
  227. package/dist/templates/platforms/hbbtv/webpackPlatformProps.js +0 -24
  228. package/dist/templates/platforms/tizen/project/.project +0 -24
  229. package/dist/templates/platforms/tizen/project/.tproject +0 -12
  230. package/dist/templates/platforms/tizen/project/config.xml +0 -17
  231. package/dist/templates/platforms/webos/project/.project +0 -35
  232. package/dist/templates/platforms/webos/project/appinfo.json +0 -19
  233. package/dist/templates/platforms/webos/webpackPlatformProps.js +0 -8
@@ -1,557 +0,0 @@
1
- package com.twentyfouri.tvbridge.webview.viewmodel
2
-
3
- import android.app.Activity
4
- import android.content.Context
5
- import android.content.Intent
6
- import android.graphics.Bitmap
7
- import android.graphics.Canvas
8
- import android.os.Build
9
- import android.util.Log
10
- import android.view.KeyEvent
11
- import android.view.View
12
- import android.webkit.CookieManager
13
- import android.webkit.WebChromeClient
14
- import android.webkit.WebView
15
- import com.google.gson.JsonArray
16
- import com.google.gson.JsonObject
17
- import com.twentyfouri.player.base.*
18
- import com.twentyfouri.tvbridge.BuildConfig
19
- import com.twentyfouri.tvbridge.Flavor
20
- import com.twentyfouri.tvbridge.bridge.BridgeFromJavaScript
21
- import com.twentyfouri.tvbridge.bridge.BridgeToJavaScript
22
- import com.twentyfouri.tvbridge.common.*
23
- import com.twentyfouri.tvbridge.configuration.BridgeConfig
24
- import com.twentyfouri.tvbridge.global.utils.LocalStorage
25
- import com.twentyfouri.tvbridge.global.utils.PlayerFactoryVersion
26
- import com.twentyfouri.tvbridge.global.utils.SourceDrmOverridden
27
- import com.twentyfouri.tvbridge.webview.client.BridgeWebView
28
- import com.twentyfouri.tvbridge.webview.client.BridgeWebViewClient
29
- import com.twentyfouri.tvbridge.webview.client.BridgeWebViewClient.BridgeWebViewClientCallback
30
- import com.twentyfouri.tvbridge.webview.model.AnalyticsPlaybackInfo
31
- import com.twentyfouri.tvbridge.webview.model.MediaEventType
32
- import com.twentyfouri.tvbridge.webview.view.Mainview
33
- import com.twentyfouri.tvbridge.webview.view.PlayerCache
34
- import org.json.JSONArray
35
- import org.json.JSONException
36
- import org.json.JSONObject
37
- import java.net.NetworkInterface
38
- import javax.inject.Inject
39
-
40
- /**
41
- * Created by destivar on 15/02/16.
42
- */
43
- class WebViewModel @Inject constructor(
44
- private val context: Context,
45
- private val localStorage: LocalStorage,
46
- private val config: BridgeConfig,
47
- private val iapService: IapService,
48
- val playerFactory: PlayerFactoryBase
49
- ) : EventListener {
50
- var player: PlayerBase? = null
51
- private var view: Mainview? = null
52
- private val jsBridge = BridgeToJavaScript(config) { s: String? ->
53
- view?.loadUrl(s)
54
- }
55
- private val iapCallback = InnerIapCallback()
56
- private val playerCache = PlayerCache()
57
-
58
- private var source: Source? = null
59
-
60
- val audioTrack: AudioTrack?
61
- get() = player?.selectedAudioTrack
62
- val subtitleTrack: TextTrack?
63
- get() = player?.selectedTextTrack
64
-
65
- var appUrl: String? = null
66
-
67
- fun attachView(view: Mainview?) {
68
- this.view = view
69
- if (view != null) {
70
- iapService.initialize()
71
- checkNewPurchases()
72
- }
73
- }
74
-
75
- fun configureWebView(webView: BridgeWebView) {
76
-
77
- // Enable remote debugging on devices at API level 19 (KitKat) or higher.
78
- if (BuildConfig.DEBUG) {
79
- WebView.setWebContentsDebuggingEnabled(true)
80
- }
81
-
82
- // Add the JavaScript bridge.
83
- webView.addJavascriptInterface(BridgeFromJavaScript(this), JAVA_SCRIPT_BRIDGE)
84
-
85
- // WebView callback methods.
86
- webView.webViewClient = BridgeWebViewClient(object : BridgeWebViewClientCallback {
87
- override fun onUnhandledKeyEvent(view: WebView, event: KeyEvent) {
88
- if (event.action == KeyEvent.ACTION_DOWN) {
89
- sendKeyCode(event.keyCode, MediaEventType.KEY_DOWN)
90
- } else if (event.action == KeyEvent.ACTION_UP) {
91
- sendKeyCode(event.keyCode, MediaEventType.KEY_UP)
92
- }
93
- }
94
- })
95
-
96
- webView.webChromeClient = object : WebChromeClient() {
97
- override fun getDefaultVideoPoster(): Bitmap? {
98
- val bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565)
99
- val canvas = Canvas(bitmap)
100
- canvas.drawARGB(255, 0, 0, 0)
101
- return bitmap
102
- }
103
-
104
- override fun onShowCustomView(view: View, callback: CustomViewCallback) {
105
- val intent = Intent(Intent.ACTION_SEND)
106
- intent.type = "video/*"
107
- context.startActivity(intent)
108
- }
109
-
110
- override fun onHideCustomView() {}
111
- }
112
-
113
- webView.previewKeyEvent = this::dispatchKeyEvent
114
-
115
- CookieManager.getInstance().setAcceptCookie(true)
116
- CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)
117
- }
118
-
119
- fun onClickGo() {
120
- view?.loadUrl(appUrl)
121
- if (BuildConfig.DEBUG) {
122
- view?.hideKeyboard()
123
- }
124
- }
125
-
126
- fun setVideo(source: Source) {
127
- var adaptedSource = source
128
- if (config.drm.shouldOverrideDrmCallback()) {
129
- adaptedSource = SourceDrmOverridden.replaceSource(adaptedSource)
130
- }
131
- logSource(adaptedSource)
132
- playDirectly(adaptedSource)
133
- }
134
-
135
- private fun logSource(source: Source) {
136
- Log.i("BridgeVideo", "Url: ${source.url}")
137
- when (val drmModel = source.drm.firstOrNull()) {
138
- is SourceDrmWidevine -> {
139
- Log.i("BridgeVideo", "DRM: " + drmModel.packageName)
140
- Log.i("BridgeVideo", "LicenseUrl: " + drmModel.licenseServer)
141
- }
142
- is SourceDrmPlayready -> {
143
- Log.i("BridgeVideo", "DRM: " + drmModel.packageName)
144
- Log.i("BridgeVideo", "LicenseUrl: " + drmModel.licenseServer)
145
- }
146
- is SourceDrmOverridden -> {
147
- Log.i("BridgeVideo", "DRM: " + drmModel.packageName)
148
- Log.i("BridgeVideo", "LicenseUrl: " + drmModel.licenseServer)
149
- }
150
- }
151
- }
152
-
153
- private fun playDirectly(source: Source) {
154
- this.source = source
155
- player?.also { player ->
156
- player.source = source
157
-
158
- if (isLowEndDevice) {
159
- player.trackRestrictions = player.trackRestrictions.buildUpon {
160
- maxBitrate = LOW_END_DEVICE_MAX_BITRATE
161
- }
162
- } else if (config.startWithHighVideoQuality) {
163
- player.trackRestrictions = player.trackRestrictions.buildUpon {
164
- abrStrategy = AbrStrategy.QUALITY
165
- }
166
- }
167
-
168
- player.addEventListener(Event.ALL, this)
169
-
170
- player.autoPlay = true
171
- player.load()
172
- player.play()
173
- }
174
- }
175
-
176
- private val isLowEndDevice: Boolean
177
- get() = when (Build.MODEL) {
178
- "AFTB" -> true
179
- "AFTM" -> true
180
- else -> false
181
- }
182
-
183
- fun startPlayer() {
184
- player?.play()
185
- }
186
-
187
- fun resumePlayer() {
188
- val savedSource = playerCache.savedSource
189
- if (playerCache.loadFromCache && savedSource != null && playerCache.savedPlayerState !== PlayerCache.PlayerState.PAUSED) {
190
- setVideo(savedSource)
191
- var position = playerCache.savedPlayerPosition
192
- val player = this.player ?: return
193
- if (player.live) {
194
- position = 0.0
195
- }
196
- player.seek(position)
197
- view?.requestAudioFocus()
198
- if (playerCache.savedPlayerState === PlayerCache.PlayerState.PLAYING) {
199
- player.play()
200
- }
201
- } else {
202
- if (player?.live == true) {
203
- player?.seek(0.0)
204
- }
205
- player?.play()
206
- }
207
- }
208
-
209
- fun pausePlayer() {
210
- player?.pause()
211
- }
212
-
213
- fun stopPlayer() {
214
- view?.setBlackCurtainVisibility(View.VISIBLE)
215
- source = null
216
-
217
- player?.also { player ->
218
- player.removeEventListener(Event.ALL, this)
219
- player.unload()
220
- }
221
- }
222
-
223
- fun releasePlayer() {
224
- val player = this.player ?: return
225
- if (source != null) {
226
- playerCache.loadFromCache = true
227
- playerCache.savedSource = source
228
- playerCache.savedPlayerDuration = player.duration
229
- playerCache.savedPlayerPosition = player.currentTime
230
- playerCache.savedPlayerState = if (player.playing) PlayerCache.PlayerState.PLAYING else PlayerCache.PlayerState.PAUSED
231
- }
232
- player.unload()
233
- }
234
-
235
- val currentPosition: Double
236
- get() = player?.currentTime ?: playerCache.savedPlayerPosition
237
- val duration: Double
238
- get() = player?.duration ?: playerCache.savedPlayerDuration
239
-
240
- fun seekToPosition(position: Double) {
241
- player?.seek(position)
242
- }
243
-
244
- val isPlayerPlaying: Boolean
245
- get() = player?.playing == true
246
- val isInPlayer: Boolean
247
- get() = player != null && source != null
248
-
249
- fun loadUrl(url: String?) {
250
- view?.loadUrl(url)
251
- }
252
-
253
- fun setSubtitlesVisibility(visibility: Boolean) {
254
- val player = this.player ?: return
255
- if (visibility) {
256
- player.trackRestrictions = player.trackRestrictions.buildUpon {
257
- enableCaptions = true
258
- }
259
- if (player.textTrack?.kind == TrackKind.EMPTY) {
260
- player.textTrack = null
261
- }
262
- } else {
263
- player.trackRestrictions = player.trackRestrictions.buildUpon {
264
- enableCaptions = false
265
- }
266
- player.textTrack = player.textTracks.firstOrNull { it.kind == TrackKind.EMPTY }
267
- ?: DISABLED_TEXT_TRACK
268
- }
269
- }
270
-
271
- fun enableFullScreen() {
272
- view?.goFullscreen()
273
- }
274
-
275
- fun disableFullScreen(width: Int, height: Int, left: Int, top: Int) {
276
- view?.exitFullscreen(width, height, left, top)
277
- }
278
-
279
- override fun onEvent(event: Event) {
280
- val player = this.player ?: return
281
- when (event) {
282
- is ErrorEvent -> {
283
- Log.e("AndroidPlayer", "Player error", event.error)
284
- jsBridge.bridgeAndroidToJavaScript_ErrorEvent(MediaEventType.ERROR, "${event.error.message} - ${event.error.nativeCode}")
285
- stopPlayer()
286
- }
287
- is LoadedMetadataEvent -> {
288
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.LOADEDMETADATA)
289
- jsBridge.bridgeAndroidToJavaScript_MediaTrackEvent(MediaEventType.TRACKS_CHANGED, player.audioTracks, player.textTracks)
290
- }
291
- is CanPlayEvent -> {
292
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.CANPLAY)
293
- }
294
- is EndedEvent -> {
295
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.ENDED)
296
- }
297
- is WaitingEvent -> {
298
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.WAITING)
299
- }
300
- is PlayingEvent -> {
301
- view?.setBlackCurtainVisibility(View.GONE)
302
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.PLAYING)
303
- }
304
- is SeekingEvent -> {
305
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.SEEKING)
306
- }
307
- is SeekedEvent -> {
308
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.SEEKED)
309
- }
310
- is TimeUpdateEvent -> {
311
- if (player.playing) {
312
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.TIME_UPDATE)
313
- }
314
- }
315
- is PauseEvent -> {
316
- if (!player.playing) {
317
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.PAUSE)
318
- }
319
- }
320
- is AddAudioTrackEvent, is AddTextTrackEvent,
321
- is RemoveAudioTrackEvent, is RemoveTextTrackEvent,
322
- is ChangeAudioTrackEvent, is ChangeTextTrackEvent -> {
323
- Log.d("WebViewModel", "onTrackschanged: audio=$audioTrack subtitle=$subtitleTrack")
324
- jsBridge.bridgeAndroidToJavaScript_MediaTrackEvent(MediaEventType.TRACKS_CHANGED, player.audioTracks, player.textTracks)
325
- }
326
- is AdBreakStartedEvent -> {
327
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.AD_BREAK_START)
328
- }
329
- is AdBreakEndedEvent -> {
330
- jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.AD_BREAK_END)
331
- }
332
- is AdBreaksRescheduledEvent -> {
333
- jsBridge.bridgeAndroidToJavaScript_MediaAdBreaksEvent(MediaEventType.AD_BREAKS_RESCHEDULED, player.timeline)
334
- }
335
- }
336
- }
337
-
338
- fun setSubtitleTrack(track: TextTrack?) {
339
- player?.textTrack = track
340
- }
341
-
342
- fun setAudioTrack(track: AudioTrack?) {
343
- player?.audioTrack = track
344
- }
345
-
346
- fun saveToLocalStorage(key: String?, value: String?) {
347
- localStorage.saveCookieJson(key, value)
348
- }
349
-
350
- fun getFromLocalStorage(key: String?): String? {
351
- return localStorage.getFromLocalStorage(key)
352
- }
353
-
354
- fun removeFromLocalStorage(key: String?) {
355
- localStorage.removeFromLocalStorage(key)
356
- }
357
-
358
- fun sendKeyCode(keyCode: Int, mediaEventType: String) {
359
- jsBridge.bridgeAndroidToJavaScript_KeyEvent(keyCode, mediaEventType)
360
- }
361
-
362
- fun setPlaybackInfo(playbackInfo: AnalyticsPlaybackInfo) {
363
- // previously used for Jump analytics, not supported with THEO
364
- }
365
-
366
- fun showMessage(message: String?) {
367
- view?.showMessage(message)
368
- }
369
-
370
- fun requestAudioFocus(): Int? {
371
- return view?.requestAudioFocus()
372
- }
373
-
374
- fun abandonAudioFocus() {
375
- view?.abandonAudioFocus()
376
- }
377
-
378
- fun onBackPressed() {
379
- stopPlayer()
380
- view?.onBackPressed()
381
- loadUrl(appUrl)
382
- }
383
-
384
- fun signData(dataJson: String?): String? {
385
- return if (dataJson == null || dataJson.isEmpty()) "" else Flavor().signData(context, dataJson)
386
- }
387
-
388
- fun launchIapPurchase(sku: String?) {
389
- if (sku == null || sku.isEmpty()) return
390
- view?.launchIapPurchase(sku)
391
- }
392
-
393
- fun checkNewPurchases() {
394
- iapService.setCallback(iapCallback)
395
- iapService.checkNewPurchases()
396
- }
397
-
398
- fun launchIapPurchase(activity: Activity, sku: String) {
399
- iapService.setCallback(iapCallback)
400
- iapService.purchase(activity, sku)
401
- }
402
-
403
- fun getIapProductDetails(skus: List<String>) {
404
- iapService.setCallback(iapCallback)
405
- iapService.getProducts(skus)
406
- }
407
-
408
- fun acknowledgeIapReceipt(receiptId: String) {
409
- iapService.setCallback(iapCallback)
410
- iapService.acknowledgeReceipt(receiptId)
411
- }
412
-
413
- private fun dispatchKeyEvent(event: KeyEvent): Boolean {
414
- // pause and stop events should be caught only when we are in player
415
- // -> because we want to let user have option to pause/stop some background playback
416
- if (isInPlayer) {
417
- // we have to catch all media events, otherwise they will be unhandled and reported in onUnhandledKeyEvent
418
- // -> and later sent to broadcast receivers of other media apps, which can resume stream/audio from background app
419
- when (event.keyCode) {
420
- KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE,
421
- KeyEvent.KEYCODE_MEDIA_STOP,
422
- KeyEvent.KEYCODE_MEDIA_PAUSE -> {
423
- if (event.action == KeyEvent.ACTION_DOWN) {
424
- jsBridge.bridgeAndroidToJavaScript_KeyEvent(event.keyCode, MediaEventType.KEY_DOWN)
425
- } else if (event.action == KeyEvent.ACTION_UP) {
426
- jsBridge.bridgeAndroidToJavaScript_KeyEvent(event.keyCode, MediaEventType.KEY_UP)
427
- }
428
- return true
429
- }
430
- }
431
- }
432
- when (event.keyCode) {
433
- KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK,
434
- KeyEvent.KEYCODE_MEDIA_CLOSE,
435
- KeyEvent.KEYCODE_MEDIA_EJECT,
436
- KeyEvent.KEYCODE_MEDIA_FAST_FORWARD,
437
- KeyEvent.KEYCODE_MEDIA_NEXT,
438
- KeyEvent.KEYCODE_MEDIA_PREVIOUS,
439
- KeyEvent.KEYCODE_MEDIA_RECORD,
440
- KeyEvent.KEYCODE_MEDIA_REWIND,
441
- KeyEvent.KEYCODE_MEDIA_SKIP_BACKWARD,
442
- KeyEvent.KEYCODE_MEDIA_SKIP_FORWARD,
443
- KeyEvent.KEYCODE_MEDIA_STEP_BACKWARD,
444
- KeyEvent.KEYCODE_MEDIA_STEP_FORWARD,
445
- KeyEvent.KEYCODE_MEDIA_TOP_MENU,
446
- KeyEvent.KEYCODE_MEDIA_PLAY -> {
447
- if (event.action == KeyEvent.ACTION_DOWN) {
448
- jsBridge.bridgeAndroidToJavaScript_KeyEvent(event.keyCode, MediaEventType.KEY_DOWN)
449
- } else if (event.action == KeyEvent.ACTION_UP) {
450
- jsBridge.bridgeAndroidToJavaScript_KeyEvent(event.keyCode, MediaEventType.KEY_UP)
451
- }
452
- return true
453
- }
454
- }
455
- return false
456
- }
457
-
458
- fun detectDeviceInfo(): JSONObject {
459
- val deviceInfo = JSONObject()
460
- try {
461
- val engineVersion = PlayerFactoryVersion.from(playerFactory)
462
- deviceInfo.put("deviceBrand", Build.MANUFACTURER)
463
- deviceInfo.put("deviceModel", Build.MODEL)
464
- deviceInfo.put("osVersion", Build.VERSION.RELEASE)
465
- deviceInfo.put("appFlavor", BuildConfig.FLAVOR)
466
- deviceInfo.put("appVersion", BuildConfig.VERSION_NAME)
467
- deviceInfo.put("engineName", engineVersion.engineName)
468
- deviceInfo.put("engineVersion", engineVersion.engineVersion)
469
-
470
- val drmKeySystems = mutableSetOf<String>()
471
- playerFactory.getSupportedFormats(context).manifest.forEach { manifest ->
472
- manifest.drm.forEach { drm ->
473
- drmKeySystems.addAll(drm.keySystems)
474
- }
475
- }
476
- deviceInfo.put("drmKeySystems", JSONArray(drmKeySystems))
477
-
478
- val ipAddresses = mutableSetOf<String>()
479
- for (networkInterface in NetworkInterface.getNetworkInterfaces()) {
480
- for (inetAddress in networkInterface.inetAddresses) {
481
- if (inetAddress.isLoopbackAddress) continue
482
- ipAddresses.add(inetAddress.hostAddress)
483
- }
484
- }
485
- deviceInfo.put("ipLocal", JSONArray(ipAddresses))
486
-
487
- } catch (e: JSONException) {
488
- deviceInfo.put("errorType", e.javaClass.simpleName)
489
- deviceInfo.put("errorMessage", e.message)
490
- }
491
- return deviceInfo
492
- }
493
-
494
-
495
- private inner class InnerIapCallback : IapCallback {
496
- override fun checkNewPurchasesFinished(result: List<IapPurchase>) {
497
- // not actually used at the moment
498
- }
499
-
500
- override fun checkNewPurchasesFinished(exception: Exception) {
501
- // not actually used at the moment
502
- }
503
-
504
- override fun purchaseFinished(result: IapPurchase) {
505
- jsBridge.bridgeAndroidToJavaScript_IAPValidationSuccess(result.userId, result.receipt, result.sku)
506
- }
507
-
508
- override fun purchaseFinished(exception: Exception) {
509
- if (exception is IapException) {
510
- jsBridge.bridgeAndroidToJavaScript_IAPValidationError(exception.status)
511
- } else {
512
- jsBridge.bridgeAndroidToJavaScript_IAPValidationError(exception.message
513
- ?: "Purchase failed")
514
- }
515
- }
516
-
517
- override fun getProductsFinished(result: List<IapProduct>, missing: List<String>) {
518
- val okSkus = JsonArray()
519
- for (iapProduct in result) {
520
- val jsonProduct = JsonObject()
521
- jsonProduct.addProperty("title", iapProduct.title)
522
- jsonProduct.addProperty("description", iapProduct.description)
523
- jsonProduct.addProperty("price", iapProduct.price)
524
- jsonProduct.addProperty("icon", iapProduct.icon)
525
- jsonProduct.addProperty("type", iapProduct.type)
526
- jsonProduct.addProperty("sku", iapProduct.sku)
527
- okSkus.add(jsonProduct)
528
- }
529
- val badSkus = JsonArray()
530
- for (sku in missing) {
531
- badSkus.add(sku)
532
- }
533
- jsBridge.bridgeIAPGetProductDataSuccess(okSkus.toString(), badSkus.toString())
534
- }
535
-
536
- override fun getProductsFinished(exception: Exception) {
537
- if (exception is IapException) {
538
- jsBridge.bridgeIAPGetProductDataFail(exception.status)
539
- } else {
540
- jsBridge.bridgeIAPGetProductDataFail(exception.message ?: "Purchase failed")
541
- }
542
- }
543
-
544
- override fun acknowledgeReceiptFinished(exception: Exception?) {
545
- // JS does not care
546
- }
547
- }
548
-
549
- companion object {
550
- const val JAVA_SCRIPT_BRIDGE = "JavaScriptBridge"
551
- const val LOW_END_DEVICE_MAX_BITRATE = 1500000
552
- val DISABLED_TEXT_TRACK = TextTrack {
553
- id = "text_off"
554
- kind = TrackKind.EMPTY
555
- }
556
- }
557
- }
@@ -1,10 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <shape xmlns:android="http://schemas.android.com/apk/res/android">
3
- <solid
4
- android:color="#E5F0FD"/>
5
- <stroke
6
- android:color="#33D7FF"
7
- android:width="3dp"/>
8
- <corners
9
- android:radius="5dp" />
10
- </shape>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <shape xmlns:android="http://schemas.android.com/apk/res/android">
3
- <solid
4
- android:color="#E5F0FD"/>
5
- <corners
6
- android:radius="5dp" />
7
- </shape>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <shape xmlns:android="http://schemas.android.com/apk/res/android">
3
- <solid
4
- android:color="#1FD3FF"/>
5
- <corners
6
- android:radius="5dp" />
7
- </shape>
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
3
- <item android:drawable="@drawable/button_background_pressed"
4
- android:state_pressed="true" />
5
- <item android:drawable="@drawable/button_background_focus"
6
- android:state_focused="true" />
7
- <item android:drawable="@drawable/button_background_normal"/>
8
- </selector>
@@ -1,28 +0,0 @@
1
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2
- android:layout_width="match_parent"
3
- android:layout_height="match_parent"
4
- android:background="@android:color/black">
5
-
6
- <com.twentyfouri.player.base.PlayerView
7
- android:id="@+id/player_view"
8
- android:layout_width="match_parent"
9
- android:layout_height="match_parent" />
10
-
11
- <View
12
- android:id="@+id/black_curtain"
13
- android:layout_width="match_parent"
14
- android:layout_height="match_parent"
15
- android:background="@android:color/black" />
16
-
17
- <com.twentyfouri.tvbridge.webview.client.BridgeWebView
18
- android:id="@+id/webview"
19
- android:layout_width="match_parent"
20
- android:layout_height="match_parent"
21
- android:layout_alignParentStart="true"
22
- android:layout_alignParentTop="true"
23
- android:layout_alignParentEnd="true"
24
- android:layout_alignParentBottom="true"
25
- android:background="@android:color/transparent"
26
- android:visibility="gone" />
27
-
28
- </RelativeLayout>
@@ -1,12 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <resources>
3
- <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar.FullScreen"/>
4
-
5
- <style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
6
- <item name="windowNoTitle">true</item>
7
- <item name="windowActionBar">false</item>
8
- <item name="android:windowFullscreen">true</item>
9
- <item name="android:windowContentOverlay">@null</item>
10
- <item name="android:windowBackground">#000000</item>
11
- </style>
12
- </resources>
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <network-security-config>
3
- <base-config cleartextTrafficPermitted="true" />
4
- </network-security-config>
@@ -1,47 +0,0 @@
1
- buildscript {
2
- ext.kotlin_version = '1.8.22'
3
-
4
- repositories {
5
- google()
6
- jcenter()
7
- maven {
8
- url 'https://maven.google.com/'
9
- name 'Google'
10
- }
11
- }
12
- dependencies {
13
- classpath 'com.android.tools.build:gradle:7.4.2'
14
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
15
- classpath 'com.google.gms:google-services:4.4.0'
16
- classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9'
17
-
18
- // NOTE: Do not place your application dependencies here; they belong
19
- // in the individual module build.gradle files
20
- }
21
- }
22
-
23
- ext {
24
- mavenRepositoryUrl = 'https://maven.pkg.github.com/24i/*'
25
- mavenRepositoryUsername = findProperty('github_username') ?: "24i"
26
- mavenRepositoryPassword = findProperty('github_token') ?: System.getenv("GH_TOKEN") ?: System.getenv("GITHUB_TOKEN")
27
- }
28
-
29
- allprojects {
30
- repositories {
31
- mavenLocal()
32
- google()
33
- mavenCentral()
34
- maven {
35
- url "$mavenRepositoryUrl"
36
- credentials {
37
- username = "$mavenRepositoryUsername"
38
- password = "$mavenRepositoryPassword"
39
- }
40
- }
41
- maven { url "https://jitpack.io" }
42
- }
43
- }
44
-
45
- task clean(type: Delete) {
46
- delete rootProject.buildDir
47
- }