react-native-bootsplash 4.7.4 → 5.0.0-beta.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.
Files changed (54) hide show
  1. package/README.md +214 -107
  2. package/RNBootSplash.podspec +11 -11
  3. package/android/.npmignore +11 -0
  4. package/android/build.gradle +0 -1
  5. package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplash.java +3 -2
  6. package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplashDialog.java +49 -0
  7. package/android/src/main/java/com/zoontek/rnbootsplash/RNBootSplashModuleImpl.java +157 -87
  8. package/android/src/main/res/anim/bootsplash_fade_in.xml +7 -0
  9. package/android/src/main/res/anim/bootsplash_fade_out.xml +7 -0
  10. package/android/src/main/res/drawable/compat_splash_screen.xml +19 -0
  11. package/android/src/main/res/values/attrs.xml +8 -0
  12. package/android/src/main/res/values/public.xml +7 -0
  13. package/android/src/main/res/values/styles.xml +29 -0
  14. package/android/src/main/res/values-v31/styles.xml +7 -0
  15. package/android/src/newarch/com/zoontek/rnbootsplash/RNBootSplashModule.java +11 -4
  16. package/android/src/oldarch/com/zoontek/rnbootsplash/RNBootSplashModule.java +13 -4
  17. package/dist/commonjs/NativeRNBootSplash.js.map +1 -1
  18. package/dist/commonjs/addon/index.js +3 -0
  19. package/dist/commonjs/addon/index.js.map +1 -0
  20. package/dist/commonjs/generate.js +289 -194
  21. package/dist/commonjs/generate.js.map +1 -1
  22. package/dist/commonjs/index.js +115 -7
  23. package/dist/commonjs/index.js.map +1 -1
  24. package/dist/module/NativeRNBootSplash.js.map +1 -1
  25. package/dist/module/addon/index.js +3 -0
  26. package/dist/module/addon/index.js.map +1 -0
  27. package/dist/module/generate.js +287 -195
  28. package/dist/module/generate.js.map +1 -1
  29. package/dist/module/index.js +113 -6
  30. package/dist/module/index.js.map +1 -1
  31. package/dist/typescript/NativeRNBootSplash.d.ts +6 -3
  32. package/dist/typescript/NativeRNBootSplash.d.ts.map +1 -1
  33. package/dist/typescript/addon/index.d.ts +3 -0
  34. package/dist/typescript/addon/index.d.ts.map +1 -0
  35. package/dist/typescript/generate.d.ts +47 -14
  36. package/dist/typescript/generate.d.ts.map +1 -1
  37. package/dist/typescript/index.d.ts +33 -5
  38. package/dist/typescript/index.d.ts.map +1 -1
  39. package/example/android/app/debug.keystore +0 -0
  40. package/example/vendor/bundle/ruby/2.7.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/compile +351 -0
  41. package/example/vendor/bundle/ruby/2.7.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +28 -0
  42. package/ios/.DS_Store +0 -0
  43. package/ios/.npmignore +8 -0
  44. package/ios/RNBootSplash.mm +101 -95
  45. package/package.json +22 -15
  46. package/react-native.config.js +74 -76
  47. package/src/.DS_Store +0 -0
  48. package/src/.npmignore +1 -0
  49. package/src/NativeRNBootSplash.ts +3 -4
  50. package/src/addon/index.ts +788 -0
  51. package/src/generate.ts +457 -232
  52. package/src/index.ts +205 -8
  53. package/RNBootSplash.res +0 -29
  54. package/bsconfig.json +0 -14
@@ -0,0 +1,351 @@
1
+ #! /bin/sh
2
+ # Wrapper for compilers which do not understand '-c -o'.
3
+
4
+ scriptversion=2018-03-27.18; # UTC
5
+
6
+ # Copyright (C) 1999-2018 Free Software Foundation, Inc.
7
+ # Written by Tom Tromey <tromey@cygnus.com>.
8
+ #
9
+ # This program is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation; either version 2, or (at your option)
12
+ # any later version.
13
+ #
14
+ # This program is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU General Public License
20
+ # along with this program. If not, see <https://www.gnu.org/licenses/>.
21
+
22
+ # As a special exception to the GNU General Public License, if you
23
+ # distribute this file as part of a program that contains a
24
+ # configuration script generated by Autoconf, you may include it under
25
+ # the same distribution terms that you use for the rest of that program.
26
+
27
+ # This file is maintained in Automake, please report
28
+ # bugs to <bug-automake@gnu.org> or send patches to
29
+ # <automake-patches@gnu.org>.
30
+
31
+ nl='
32
+ '
33
+
34
+ # We need space, tab and new line, in precisely that order. Quoting is
35
+ # there to prevent tools from complaining about whitespace usage.
36
+ IFS=" "" $nl"
37
+
38
+ file_conv=
39
+
40
+ # func_file_conv build_file lazy
41
+ # Convert a $build file to $host form and store it in $file
42
+ # Currently only supports Windows hosts. If the determined conversion
43
+ # type is listed in (the comma separated) LAZY, no conversion will
44
+ # take place.
45
+ func_file_conv ()
46
+ {
47
+ file=$1
48
+ case $file in
49
+ / | /[!/]*) # absolute file, and not a UNC file
50
+ if test -z "$file_conv"; then
51
+ # lazily determine how to convert abs files
52
+ case `uname -s` in
53
+ MINGW*)
54
+ file_conv=mingw
55
+ ;;
56
+ CYGWIN*)
57
+ file_conv=cygwin
58
+ ;;
59
+ *)
60
+ file_conv=wine
61
+ ;;
62
+ esac
63
+ fi
64
+ case $file_conv/,$2, in
65
+ *,$file_conv,*)
66
+ ;;
67
+ mingw/*)
68
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
69
+ ;;
70
+ cygwin/*)
71
+ file=`cygpath -m "$file" || echo "$file"`
72
+ ;;
73
+ wine/*)
74
+ file=`winepath -w "$file" || echo "$file"`
75
+ ;;
76
+ esac
77
+ ;;
78
+ esac
79
+ }
80
+
81
+ # func_cl_dashL linkdir
82
+ # Make cl look for libraries in LINKDIR
83
+ func_cl_dashL ()
84
+ {
85
+ func_file_conv "$1"
86
+ if test -z "$lib_path"; then
87
+ lib_path=$file
88
+ else
89
+ lib_path="$lib_path;$file"
90
+ fi
91
+ linker_opts="$linker_opts -LIBPATH:$file"
92
+ }
93
+
94
+ # func_cl_dashl library
95
+ # Do a library search-path lookup for cl
96
+ func_cl_dashl ()
97
+ {
98
+ lib=$1
99
+ found=no
100
+ save_IFS=$IFS
101
+ IFS=';'
102
+ for dir in $lib_path $LIB
103
+ do
104
+ IFS=$save_IFS
105
+ if $shared && test -f "$dir/$lib.dll.lib"; then
106
+ found=yes
107
+ lib=$dir/$lib.dll.lib
108
+ break
109
+ fi
110
+ if test -f "$dir/$lib.lib"; then
111
+ found=yes
112
+ lib=$dir/$lib.lib
113
+ break
114
+ fi
115
+ if test -f "$dir/lib$lib.a"; then
116
+ found=yes
117
+ lib=$dir/lib$lib.a
118
+ break
119
+ fi
120
+ done
121
+ IFS=$save_IFS
122
+
123
+ if test "$found" != yes; then
124
+ lib=$lib.lib
125
+ fi
126
+ }
127
+
128
+ # func_cl_wrapper cl arg...
129
+ # Adjust compile command to suit cl
130
+ func_cl_wrapper ()
131
+ {
132
+ # Assume a capable shell
133
+ lib_path=
134
+ shared=:
135
+ linker_opts=
136
+ for arg
137
+ do
138
+ if test -n "$eat"; then
139
+ eat=
140
+ else
141
+ case $1 in
142
+ -o)
143
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
144
+ eat=1
145
+ case $2 in
146
+ *.o | *.[oO][bB][jJ])
147
+ func_file_conv "$2"
148
+ set x "$@" -Fo"$file"
149
+ shift
150
+ ;;
151
+ *)
152
+ func_file_conv "$2"
153
+ set x "$@" -Fe"$file"
154
+ shift
155
+ ;;
156
+ esac
157
+ ;;
158
+ -I)
159
+ eat=1
160
+ func_file_conv "$2" mingw
161
+ set x "$@" -I"$file"
162
+ shift
163
+ ;;
164
+ -I*)
165
+ func_file_conv "${1#-I}" mingw
166
+ set x "$@" -I"$file"
167
+ shift
168
+ ;;
169
+ -l)
170
+ eat=1
171
+ func_cl_dashl "$2"
172
+ set x "$@" "$lib"
173
+ shift
174
+ ;;
175
+ -l*)
176
+ func_cl_dashl "${1#-l}"
177
+ set x "$@" "$lib"
178
+ shift
179
+ ;;
180
+ -L)
181
+ eat=1
182
+ func_cl_dashL "$2"
183
+ ;;
184
+ -L*)
185
+ func_cl_dashL "${1#-L}"
186
+ ;;
187
+ -static)
188
+ shared=false
189
+ ;;
190
+ -warn)
191
+ eat=1
192
+ ;;
193
+ -Wl,*)
194
+ arg=${1#-Wl,}
195
+ save_ifs="$IFS"; IFS=','
196
+ for flag in $arg; do
197
+ IFS="$save_ifs"
198
+ linker_opts="$linker_opts $flag"
199
+ done
200
+ IFS="$save_ifs"
201
+ ;;
202
+ -Xlinker)
203
+ eat=1
204
+ linker_opts="$linker_opts $2"
205
+ ;;
206
+ -*)
207
+ set x "$@" "$1"
208
+ shift
209
+ ;;
210
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
211
+ func_file_conv "$1"
212
+ set x "$@" -Tp"$file"
213
+ shift
214
+ ;;
215
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
216
+ func_file_conv "$1" mingw
217
+ set x "$@" "$file"
218
+ shift
219
+ ;;
220
+ *)
221
+ set x "$@" "$1"
222
+ shift
223
+ ;;
224
+ esac
225
+ fi
226
+ shift
227
+ done
228
+ if test -n "$linker_opts"; then
229
+ linker_opts="-link$linker_opts"
230
+ fi
231
+ exec "$@" $linker_opts
232
+ exit 1
233
+ }
234
+
235
+ eat=
236
+
237
+ case $1 in
238
+ '')
239
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
240
+ exit 1;
241
+ ;;
242
+ -h | --h*)
243
+ cat <<\EOF
244
+ Usage: compile [--help] [--version] PROGRAM [ARGS]
245
+
246
+ Wrapper for compilers which do not understand '-c -o'.
247
+ Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
248
+ arguments, and rename the output as expected.
249
+
250
+ If you are trying to build a whole package this is not the
251
+ right script to run: please start by reading the file 'INSTALL'.
252
+
253
+ Report bugs to <bug-automake@gnu.org>.
254
+ EOF
255
+ exit $?
256
+ ;;
257
+ -v | --v*)
258
+ echo "compile $scriptversion"
259
+ exit $?
260
+ ;;
261
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
262
+ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
263
+ func_cl_wrapper "$@" # Doesn't return...
264
+ ;;
265
+ esac
266
+
267
+ ofile=
268
+ cfile=
269
+
270
+ for arg
271
+ do
272
+ if test -n "$eat"; then
273
+ eat=
274
+ else
275
+ case $1 in
276
+ -o)
277
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
278
+ # So we strip '-o arg' only if arg is an object.
279
+ eat=1
280
+ case $2 in
281
+ *.o | *.obj)
282
+ ofile=$2
283
+ ;;
284
+ *)
285
+ set x "$@" -o "$2"
286
+ shift
287
+ ;;
288
+ esac
289
+ ;;
290
+ *.c)
291
+ cfile=$1
292
+ set x "$@" "$1"
293
+ shift
294
+ ;;
295
+ *)
296
+ set x "$@" "$1"
297
+ shift
298
+ ;;
299
+ esac
300
+ fi
301
+ shift
302
+ done
303
+
304
+ if test -z "$ofile" || test -z "$cfile"; then
305
+ # If no '-o' option was seen then we might have been invoked from a
306
+ # pattern rule where we don't need one. That is ok -- this is a
307
+ # normal compilation that the losing compiler can handle. If no
308
+ # '.c' file was seen then we are probably linking. That is also
309
+ # ok.
310
+ exec "$@"
311
+ fi
312
+
313
+ # Name of file we expect compiler to create.
314
+ cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
315
+
316
+ # Create the lock directory.
317
+ # Note: use '[/\\:.-]' here to ensure that we don't use the same name
318
+ # that we are using for the .o file. Also, base the name on the expected
319
+ # object file name, since that is what matters with a parallel build.
320
+ lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
321
+ while true; do
322
+ if mkdir "$lockdir" >/dev/null 2>&1; then
323
+ break
324
+ fi
325
+ sleep 1
326
+ done
327
+ # FIXME: race condition here if user kills between mkdir and trap.
328
+ trap "rmdir '$lockdir'; exit 1" 1 2 15
329
+
330
+ # Run the compile.
331
+ "$@"
332
+ ret=$?
333
+
334
+ if test -f "$cofile"; then
335
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
336
+ elif test -f "${cofile}bj"; then
337
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
338
+ fi
339
+
340
+ rmdir "$lockdir"
341
+ exit $ret
342
+
343
+ # Local Variables:
344
+ # mode: shell-script
345
+ # sh-indentation: 2
346
+ # eval: (add-hook 'before-save-hook 'time-stamp)
347
+ # time-stamp-start: "scriptversion="
348
+ # time-stamp-format: "%:y-%02m-%02d.%02H"
349
+ # time-stamp-time-zone: "UTC0"
350
+ # time-stamp-end: "; # UTC"
351
+ # End:
@@ -0,0 +1,28 @@
1
+ CC = gcc
2
+ CFLAGS = -O2 -Wall
3
+ prefix =
4
+ includedir = $(prefix)/include
5
+ libdir = $(prefix)/lib
6
+ CPPFLAGS = -I$(includedir)
7
+ LDFLAGS = -L$(libdir) -Wl,-rpath,$(libdir)
8
+
9
+ all: check-call check-callback
10
+
11
+ test-call: test-call.c testcases.c
12
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o test-call test-call.c -lffi
13
+
14
+ test-callback: test-callback.c testcases.c
15
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o test-callback test-callback.c -lffi
16
+
17
+ check-call: test-call
18
+ ./test-call > test-call.out
19
+ LC_ALL=C uniq -u < test-call.out > failed-call
20
+ test '!' -s failed-call
21
+
22
+ check-callback: test-callback
23
+ ./test-callback > test-callback.out
24
+ LC_ALL=C uniq -u < test-callback.out > failed-callback
25
+ test '!' -s failed-callback
26
+
27
+ clean:
28
+ rm -f test-call test-callback test-call.out test-callback.out failed-call failed-callback
package/ios/.DS_Store ADDED
Binary file
package/ios/.npmignore ADDED
@@ -0,0 +1,8 @@
1
+ Pods/
2
+ build/
3
+
4
+ */project.xcworkspace/
5
+ */xcuserdata/
6
+
7
+ .DS_Store
8
+ .npmignore
@@ -9,33 +9,29 @@
9
9
  #import <React/RCTRootView.h>
10
10
  #endif
11
11
 
12
- static NSMutableArray<RCTPromiseResolveBlock> *_resolveQueue = nil;
12
+ static NSMutableArray<RCTPromiseResolveBlock> *_resolveQueue = [[NSMutableArray alloc] init];
13
13
  static UIView *_loadingView = nil;
14
14
  static UIView *_rootView = nil;
15
- static float _duration = 0;
15
+ static bool _fade = false;
16
16
  static bool _nativeHidden = false;
17
- static bool _transitioning = false;
18
17
 
19
18
  @implementation RNBootSplash
20
19
 
21
20
  RCT_EXPORT_MODULE();
22
21
 
23
- - (dispatch_queue_t)methodQueue {
24
- return dispatch_get_main_queue();
22
+ + (BOOL)requiresMainQueueSetup {
23
+ return NO;
25
24
  }
26
25
 
27
- + (bool)isLoadingViewHidden {
28
- return _loadingView == nil || [_loadingView isHidden];
26
+ - (dispatch_queue_t)methodQueue {
27
+ return dispatch_get_main_queue();
29
28
  }
30
29
 
31
- + (bool)hasResolveQueue {
32
- return _resolveQueue != nil;
30
+ + (bool)isLoadingViewVisible {
31
+ return _loadingView != nil && ![_loadingView isHidden];
33
32
  }
34
33
 
35
34
  + (void)clearResolveQueue {
36
- if (![self hasResolveQueue])
37
- return;
38
-
39
35
  while ([_resolveQueue count] > 0) {
40
36
  RCTPromiseResolveBlock resolve = [_resolveQueue objectAtIndex:0];
41
37
  [_resolveQueue removeObjectAtIndex:0];
@@ -43,16 +39,15 @@ RCT_EXPORT_MODULE();
43
39
  }
44
40
  }
45
41
 
46
- + (void)hideLoadingView {
47
- if ([self isLoadingViewHidden])
42
+ + (void)hideAndClearPromiseQueue {
43
+ if (![self isLoadingViewVisible]) {
48
44
  return [RNBootSplash clearResolveQueue];
45
+ }
49
46
 
50
- if (_duration > 0) {
47
+ if (_fade) {
51
48
  dispatch_async(dispatch_get_main_queue(), ^{
52
- _transitioning = true;
53
-
54
49
  [UIView transitionWithView:_rootView
55
- duration:_duration / 1000.0
50
+ duration:0.250
56
51
  options:UIViewAnimationOptionTransitionCrossDissolve
57
52
  animations:^{
58
53
  _loadingView.hidden = YES;
@@ -61,7 +56,6 @@ RCT_EXPORT_MODULE();
61
56
  [_loadingView removeFromSuperview];
62
57
  _loadingView = nil;
63
58
 
64
- _transitioning = false;
65
59
  return [RNBootSplash clearResolveQueue];
66
60
  }];
67
61
  });
@@ -76,54 +70,54 @@ RCT_EXPORT_MODULE();
76
70
 
77
71
  + (void)initWithStoryboard:(NSString * _Nonnull)storyboardName
78
72
  rootView:(UIView * _Nullable)rootView {
79
- if (rootView == nil
80
- #ifdef RCT_NEW_ARCH_ENABLED
81
- || ![rootView isKindOfClass:[RCTFabricSurfaceHostingProxyRootView class]]
82
- #else
83
- || ![rootView isKindOfClass:[RCTRootView class]]
84
- #endif
85
- || _rootView != nil
86
- || [self hasResolveQueue] // hide has already been called, abort init
87
- || RCTRunningInAppExtension())
73
+ if (RCTRunningInAppExtension()) {
88
74
  return;
75
+ }
89
76
 
90
- #ifdef RCT_NEW_ARCH_ENABLED
91
- RCTFabricSurfaceHostingProxyRootView *proxy = (RCTFabricSurfaceHostingProxyRootView *)rootView;
92
- _rootView = (RCTSurfaceHostingView *)proxy.surface.view;
93
- #else
94
- _rootView = (RCTRootView *)rootView;
95
- #endif
96
-
97
- UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
98
-
99
- _loadingView = [[storyboard instantiateInitialViewController] view];
100
- _loadingView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
101
- _loadingView.frame = _rootView.bounds;
102
- _loadingView.center = (CGPoint){CGRectGetMidX(_rootView.bounds), CGRectGetMidY(_rootView.bounds)};
103
- _loadingView.hidden = NO;
104
-
105
- [_rootView addSubview:_loadingView];
106
-
107
- [NSTimer scheduledTimerWithTimeInterval:0.35
108
- repeats:NO
109
- block:^(NSTimer * _Nonnull timer) {
110
- // wait for native iOS launch screen to fade out
111
- _nativeHidden = true;
77
+ static dispatch_once_t onceToken;
112
78
 
113
- // hide has been called before native launch screen fade out
114
- if ([self hasResolveQueue])
115
- [self hideLoadingView];
116
- }];
79
+ dispatch_once(&onceToken, ^(void) {
80
+ [NSTimer scheduledTimerWithTimeInterval:0.35
81
+ repeats:NO
82
+ block:^(NSTimer * _Nonnull timer) {
83
+ // wait for native iOS launch screen to fade out
84
+ _nativeHidden = true;
117
85
 
118
- [[NSNotificationCenter defaultCenter] addObserver:self
119
- selector:@selector(onJavaScriptDidLoad)
120
- name:RCTJavaScriptDidLoadNotification
121
- object:nil];
86
+ // hide has been called before native launch screen fade out
87
+ if ([_resolveQueue count] > 0) {
88
+ [self hideAndClearPromiseQueue];
89
+ }
90
+ }];
122
91
 
123
- [[NSNotificationCenter defaultCenter] addObserver:self
124
- selector:@selector(onJavaScriptDidFailToLoad)
125
- name:RCTJavaScriptDidFailToLoadNotification
126
- object:nil];
92
+ #ifdef RCT_NEW_ARCH_ENABLED
93
+ if (rootView != nil && [rootView isKindOfClass:[RCTFabricSurfaceHostingProxyRootView class]]) {
94
+ RCTFabricSurfaceHostingProxyRootView *proxy = (RCTFabricSurfaceHostingProxyRootView *)rootView;
95
+ _rootView = (RCTSurfaceHostingView *)proxy.surface.view;
96
+ #else
97
+ if (rootView != nil && [rootView isKindOfClass:[RCTRootView class]]) {
98
+ _rootView = (RCTRootView *)rootView;
99
+ #endif
100
+ UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
101
+
102
+ _loadingView = [[storyboard instantiateInitialViewController] view];
103
+ _loadingView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
104
+ _loadingView.frame = _rootView.bounds;
105
+ _loadingView.center = (CGPoint){CGRectGetMidX(_rootView.bounds), CGRectGetMidY(_rootView.bounds)};
106
+ _loadingView.hidden = NO;
107
+
108
+ [_rootView addSubview:_loadingView];
109
+
110
+ [[NSNotificationCenter defaultCenter] addObserver:self
111
+ selector:@selector(onJavaScriptDidLoad)
112
+ name:RCTJavaScriptDidLoadNotification
113
+ object:nil];
114
+
115
+ [[NSNotificationCenter defaultCenter] addObserver:self
116
+ selector:@selector(onJavaScriptDidFailToLoad)
117
+ name:RCTJavaScriptDidFailToLoadNotification
118
+ object:nil];
119
+ }
120
+ });
127
121
  }
128
122
 
129
123
  + (void)onJavaScriptDidLoad {
@@ -131,59 +125,71 @@ RCT_EXPORT_MODULE();
131
125
  }
132
126
 
133
127
  + (void)onJavaScriptDidFailToLoad {
134
- [self hideLoadingView];
128
+ [self hideAndClearPromiseQueue];
135
129
  [[NSNotificationCenter defaultCenter] removeObserver:self];
136
130
  }
137
131
 
138
- - (void)hide:(double)duration
139
- resolve:(RCTPromiseResolveBlock)resolve
140
- reject:(RCTPromiseRejectBlock)reject {
141
- if (_resolveQueue == nil)
142
- _resolveQueue = [[NSMutableArray alloc] init];
143
-
144
- [_resolveQueue addObject:resolve];
132
+ - (NSDictionary *)constantsToExport {
133
+ return @{
134
+ @"statusBarHeight": @(0),
135
+ @"navigationBarHeight": @(0)
136
+ };
137
+ }
145
138
 
146
- if ([RNBootSplash isLoadingViewHidden] || RCTRunningInAppExtension())
147
- return [RNBootSplash clearResolveQueue];
139
+ - (void)hideImpl:(BOOL)fade
140
+ resolve:(RCTPromiseResolveBlock)resolve {
141
+ if (RCTRunningInAppExtension()) {
142
+ return resolve(@(true));
143
+ }
148
144
 
149
- _duration = lroundf((float)duration);
145
+ [_resolveQueue addObject:resolve];
146
+ _fade = fade;
150
147
 
151
- if (_nativeHidden)
152
- return [RNBootSplash hideLoadingView];
148
+ if (_nativeHidden) {
149
+ return [RNBootSplash hideAndClearPromiseQueue];
150
+ }
153
151
  }
154
152
 
155
- - (void)getVisibilityStatus:(RCTPromiseResolveBlock)resolve
156
- reject:(RCTPromiseRejectBlock)reject {
157
- if ([RNBootSplash isLoadingViewHidden])
158
- return resolve(@"hidden");
159
- else if (_transitioning)
160
- return resolve(@"transitioning");
161
- else
162
- return resolve(@"visible");
153
+ - (void)isVisibleImpl:(RCTPromiseResolveBlock)resolve {
154
+ resolve(@([RNBootSplash isLoadingViewVisible]));
163
155
  }
164
156
 
165
157
  #ifdef RCT_NEW_ARCH_ENABLED
166
158
 
159
+ // New architecture
160
+
167
161
  - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
168
162
  return std::make_shared<facebook::react::NativeRNBootSplashSpecJSI>(params);
169
163
  }
170
164
 
165
+ - (facebook::react::ModuleConstants<JS::NativeRNBootSplash::Constants::Builder>)getConstants {
166
+ return [self constantsToExport];
167
+ }
168
+
169
+ - (void)hide:(BOOL)fade
170
+ resolve:(RCTPromiseResolveBlock)resolve
171
+ reject:(RCTPromiseRejectBlock)reject {
172
+ [self hideImpl:fade resolve:resolve];
173
+ }
174
+
175
+ - (void)isVisible:(RCTPromiseResolveBlock)resolve
176
+ reject:(RCTPromiseRejectBlock)reject {
177
+ [self isVisibleImpl:resolve];
178
+ }
179
+
171
180
  #else
172
181
 
173
- RCT_REMAP_METHOD(hide,
174
- hideWithDuration:(double)duration
175
- resolve:(RCTPromiseResolveBlock)resolve
176
- rejecte:(RCTPromiseRejectBlock)reject) {
177
- [self hide:duration
178
- resolve:resolve
179
- reject:reject];
182
+ // Old architecture
183
+
184
+ RCT_EXPORT_METHOD(hide:(BOOL)fade
185
+ resolve:(RCTPromiseResolveBlock)resolve
186
+ reject:(RCTPromiseRejectBlock)reject) {
187
+ [self hideImpl:fade resolve:resolve];
180
188
  }
181
189
 
182
- RCT_REMAP_METHOD(getVisibilityStatus,
183
- getVisibilityStatusWithResolve:(RCTPromiseResolveBlock)resolve
184
- rejecte:(RCTPromiseRejectBlock)reject) {
185
- [self getVisibilityStatus:resolve
186
- reject:reject];
190
+ RCT_EXPORT_METHOD(isVisible:(RCTPromiseResolveBlock)resolve
191
+ reject:(RCTPromiseRejectBlock)reject) {
192
+ [self isVisibleImpl:resolve];
187
193
  }
188
194
 
189
195
  #endif