before merge

This commit is contained in:
Abin Toppo
2026-01-12 15:21:14 +05:30
parent ed11bb479e
commit 360097da70
28 changed files with 4821 additions and 177 deletions
+804
View File
@@ -0,0 +1,804 @@
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 1048576 bytes. Error detail: AllocateHeap
# Possible reasons:
# The system is out of physical RAM or swap space
# This process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Unscaled Compressed Oops mode in which the Java heap is
# placed in the first 4GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 4GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (allocation.cpp:44), pid=17560, tid=11928
#
# JRE version: OpenJDK Runtime Environment Temurin-21.0.9+10 (21.0.9+10) (build 21.0.9+10-LTS)
# Java VM: OpenJDK 64-Bit Server VM Temurin-21.0.9+10 (21.0.9+10-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, parallel gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
--------------- S U M M A R Y ------------
Command Line: --add-modules=ALL-SYSTEM --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/sun.nio.fs=ALL-UNNAMED -Declipse.application=org.eclipse.jdt.ls.core.id1 -Dosgi.bundles.defaultStartLevel=4 -Declipse.product=org.eclipse.jdt.ls.core.product -Djava.import.generatesMetadataFilesAtProjectRoot=false -DDetectVMInstallationsJob.disabled=true -Dfile.encoding=utf8 -XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable -javaagent:c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\lombok\lombok-1.18.39-4050.jar -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=c:\Users\Lincpay\AppData\Roaming\Code\User\workspaceStorage\abb5375ad198b0834a895dbe2777821e\redhat.java -Daether.dependencyCollector.impl=bf c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\server\plugins\org.eclipse.equinox.launcher_1.7.100.v20251111-0406.jar -configuration c:\Users\Lincpay\AppData\Roaming\Code\User\globalStorage\redhat.java\1.51.0\config_win -data c:\Users\Lincpay\AppData\Roaming\Code\User\workspaceStorage\abb5375ad198b0834a895dbe2777821e\redhat.java\jdt_ws --pipe=\\.\pipe\lsp-d9bf6c0eeb4dea7218c68c5739457689-sock
Host: Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz, 8 cores, 15G, Windows 11 , 64 bit Build 26100 (10.0.26100.6725)
Time: Mon Jan 12 10:55:29 2026 India Standard Time elapsed time: 2458.902032 seconds (0d 0h 40m 58s)
--------------- T H R E A D ---------------
Current thread (0x000001bbd7fe60b0): JavaThread "Attach Listener" daemon [_thread_in_vm, id=11928, stack(0x0000005f24a00000,0x0000005f24b00000) (1024K)]
Stack: [0x0000005f24a00000,0x0000005f24b00000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x6d6e29]
V [jvm.dll+0x8b4b76]
V [jvm.dll+0x8b712e]
V [jvm.dll+0x8b7813]
V [jvm.dll+0x283d86]
V [jvm.dll+0xc1277]
V [jvm.dll+0x6d76d9]
V [jvm.dll+0x133466]
V [jvm.dll+0x3f7ea6]
V [jvm.dll+0x85e9ad]
V [jvm.dll+0x6d565d]
C [ucrtbase.dll+0x37b0]
C [KERNEL32.DLL+0x2e8d7]
C [ntdll.dll+0x8c53c]
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x000001bbf5edd5c0, length=35, elements={
0x000001bbd806b110, 0x000001bbd812a4b0, 0x000001bbd812daf0, 0x000001bbd7fe52e0,
0x000001bbd7fe60b0, 0x000001bbd7fe8260, 0x000001bbd7feadf0, 0x000001bbd7ff74f0,
0x000001bbf02f78a0, 0x000001bbf0435cf0, 0x000001bbf05d4750, 0x000001bbf05e6770,
0x000001bbf0e5b9f0, 0x000001bbf0ac41f0, 0x000001bbf0aca770, 0x000001bbf0751f70,
0x000001bbf5946030, 0x000001bbf57e1fc0, 0x000001bbf0b2aa00, 0x000001bbf0809680,
0x000001bbf83b0560, 0x000001bbf83b2cc0, 0x000001bbf83b39e0, 0x000001bbf83b1910,
0x000001bbf83b0bf0, 0x000001bbf83b4700, 0x000001bbf83b1280, 0x000001bbf83b5420,
0x000001bbf83b4d90, 0x000001bbf83b1fa0, 0x000001bbf83b5ab0, 0x000001bbf83b6140,
0x000001bbf83b6e60, 0x000001bbf83b7b80, 0x000001bbf0cf4d60
}
Java Threads: ( => current thread )
0x000001bbd806b110 JavaThread "main" [_thread_blocked, id=5300, stack(0x0000005f24300000,0x0000005f24400000) (1024K)]
0x000001bbd812a4b0 JavaThread "Reference Handler" daemon [_thread_blocked, id=17440, stack(0x0000005f24700000,0x0000005f24800000) (1024K)]
0x000001bbd812daf0 JavaThread "Finalizer" daemon [_thread_blocked, id=9728, stack(0x0000005f24800000,0x0000005f24900000) (1024K)]
0x000001bbd7fe52e0 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=13724, stack(0x0000005f24900000,0x0000005f24a00000) (1024K)]
=>0x000001bbd7fe60b0 JavaThread "Attach Listener" daemon [_thread_in_vm, id=11928, stack(0x0000005f24a00000,0x0000005f24b00000) (1024K)]
0x000001bbd7fe8260 JavaThread "Service Thread" daemon [_thread_blocked, id=17620, stack(0x0000005f24b00000,0x0000005f24c00000) (1024K)]
0x000001bbd7feadf0 JavaThread "Monitor Deflation Thread" daemon [_thread_blocked, id=17040, stack(0x0000005f24c00000,0x0000005f24d00000) (1024K)]
0x000001bbd7ff74f0 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=14280, stack(0x0000005f24d00000,0x0000005f24e00000) (1024K)]
0x000001bbf02f78a0 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=14472, stack(0x0000005f24e00000,0x0000005f24f00000) (1024K)]
0x000001bbf0435cf0 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=17656, stack(0x0000005f24f00000,0x0000005f25000000) (1024K)]
0x000001bbf05d4750 JavaThread "Notification Thread" daemon [_thread_blocked, id=17648, stack(0x0000005f25100000,0x0000005f25200000) (1024K)]
0x000001bbf05e6770 JavaThread "Active Thread: Equinox Container: 8a7227d3-6f18-4dfa-b5e8-383ec85e9893" [_thread_blocked, id=2832, stack(0x0000005f25900000,0x0000005f25a00000) (1024K)]
0x000001bbf0e5b9f0 JavaThread "Refresh Thread: Equinox Container: 8a7227d3-6f18-4dfa-b5e8-383ec85e9893" daemon [_thread_blocked, id=1920, stack(0x0000005f25a00000,0x0000005f25b00000) (1024K)]
0x000001bbf0ac41f0 JavaThread "Framework Event Dispatcher: Equinox Container: 8a7227d3-6f18-4dfa-b5e8-383ec85e9893" daemon [_thread_blocked, id=16204, stack(0x0000005f25b00000,0x0000005f25c00000) (1024K)]
0x000001bbf0aca770 JavaThread "Start Level: Equinox Container: 8a7227d3-6f18-4dfa-b5e8-383ec85e9893" daemon [_thread_blocked, id=5656, stack(0x0000005f25000000,0x0000005f25100000) (1024K)]
0x000001bbf0751f70 JavaThread "Bundle File Closer" daemon [_thread_blocked, id=4792, stack(0x0000005f25e00000,0x0000005f25f00000) (1024K)]
0x000001bbf5946030 JavaThread "SCR Component Actor" daemon [_thread_blocked, id=17508, stack(0x0000005f25d00000,0x0000005f25e00000) (1024K)]
0x000001bbf57e1fc0 JavaThread "Worker-JM" [_thread_blocked, id=17632, stack(0x0000005f26000000,0x0000005f26100000) (1024K)]
0x000001bbf0b2aa00 JavaThread "JNA Cleaner" daemon [_thread_blocked, id=15484, stack(0x0000005f25c00000,0x0000005f25d00000) (1024K)]
0x000001bbf0809680 JavaThread "Worker-2" [_thread_blocked, id=11760, stack(0x0000005f26400000,0x0000005f26500000) (1024K)]
0x000001bbf83b0560 JavaThread "Java indexing" daemon [_thread_blocked, id=17644, stack(0x0000005f26500000,0x0000005f26600000) (1024K)]
0x000001bbf83b2cc0 JavaThread "Worker-3" [_thread_blocked, id=2784, stack(0x0000005f26600000,0x0000005f26700000) (1024K)]
0x000001bbf83b39e0 JavaThread "Thread-1" daemon [_thread_in_native, id=17880, stack(0x0000005f26b00000,0x0000005f26c00000) (1024K)]
0x000001bbf83b1910 JavaThread "Thread-2" daemon [_thread_in_native, id=11460, stack(0x0000005f26c00000,0x0000005f26d00000) (1024K)]
0x000001bbf83b0bf0 JavaThread "Thread-3" daemon [_thread_in_native, id=17608, stack(0x0000005f26d00000,0x0000005f26e00000) (1024K)]
0x000001bbf83b4700 JavaThread "Thread-4" daemon [_thread_in_native, id=7776, stack(0x0000005f26e00000,0x0000005f26f00000) (1024K)]
0x000001bbf83b1280 JavaThread "Thread-5" daemon [_thread_in_native, id=14608, stack(0x0000005f26f00000,0x0000005f27000000) (1024K)]
0x000001bbf83b5420 JavaThread "Thread-6" daemon [_thread_in_native, id=17524, stack(0x0000005f27000000,0x0000005f27100000) (1024K)]
0x000001bbf83b4d90 JavaThread "Thread-7" daemon [_thread_in_native, id=1328, stack(0x0000005f27100000,0x0000005f27200000) (1024K)]
0x000001bbf83b1fa0 JavaThread "Thread-8" daemon [_thread_in_native, id=18348, stack(0x0000005f27200000,0x0000005f27300000) (1024K)]
0x000001bbf83b5ab0 JavaThread "Thread-9" daemon [_thread_in_native, id=18312, stack(0x0000005f27300000,0x0000005f27400000) (1024K)]
0x000001bbf83b6140 JavaThread "pool-2-thread-1" [_thread_blocked, id=5408, stack(0x0000005f27400000,0x0000005f27500000) (1024K)]
0x000001bbf83b6e60 JavaThread "WorkspaceEventsHandler" [_thread_blocked, id=18040, stack(0x0000005f27600000,0x0000005f27700000) (1024K)]
0x000001bbf83b7b80 JavaThread "pool-1-thread-1" [_thread_blocked, id=18324, stack(0x0000005f27700000,0x0000005f27800000) (1024K)]
0x000001bbf0cf4d60 JavaThread "Timer-0" [_thread_blocked, id=14520, stack(0x0000005f28000000,0x0000005f28100000) (1024K)]
Total: 35
Other Threads:
0x000001bbd7fe1e30 VMThread "VM Thread" [id=17652, stack(0x0000005f24600000,0x0000005f24700000) (1024K)]
0x000001bbd7efca00 WatcherThread "VM Periodic Task Thread" [id=17636, stack(0x0000005f24500000,0x0000005f24600000) (1024K)]
0x000001bbd8089840 WorkerThread "GC Thread#0" [id=17616, stack(0x0000005f24400000,0x0000005f24500000) (1024K)]
0x000001bbf08668b0 WorkerThread "GC Thread#1" [id=17856, stack(0x0000005f25300000,0x0000005f25400000) (1024K)]
0x000001bbf0866c50 WorkerThread "GC Thread#2" [id=17680, stack(0x0000005f25400000,0x0000005f25500000) (1024K)]
0x000001bbf0866ff0 WorkerThread "GC Thread#3" [id=18060, stack(0x0000005f25500000,0x0000005f25600000) (1024K)]
0x000001bbf0d203d0 WorkerThread "GC Thread#4" [id=17708, stack(0x0000005f25600000,0x0000005f25700000) (1024K)]
0x000001bbf0d20770 WorkerThread "GC Thread#5" [id=17852, stack(0x0000005f25700000,0x0000005f25800000) (1024K)]
0x000001bbf0d20b10 WorkerThread "GC Thread#6" [id=5232, stack(0x0000005f25800000,0x0000005f25900000) (1024K)]
0x000001bbf0e57b90 WorkerThread "GC Thread#7" [id=7540, stack(0x0000005f25200000,0x0000005f25300000) (1024K)]
Total: 10
Threads with active compile tasks:
Total: 0
VM state: not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap address: 0x0000000080000000, size: 2048 MB, Compressed Oops mode: 32-bit
CDS archive(s) mapped at: [0x000001bb80000000-0x000001bb80ba0000-0x000001bb80ba0000), size 12189696, SharedBaseAddress: 0x000001bb80000000, ArchiveRelocationMode: 1.
Compressed class space mapped at: 0x000001bb81000000-0x000001bbc1000000, reserved size: 1073741824
Narrow klass base: 0x000001bb80000000, Narrow klass shift: 0, Narrow klass range: 0x100000000
GC Precious Log:
CardTable entry size: 512
CPUs: 8 total, 8 available
Memory: 16198M
Large Page Support: Disabled
NUMA Support: Disabled
Compressed Oops: Enabled (32-bit)
Alignments: Space 512K, Generation 512K, Heap 2M
Heap Min Capacity: 100M
Heap Initial Capacity: 100M
Heap Max Capacity: 2G
Pre-touch: Disabled
Parallel Workers: 8
Heap:
PSYoungGen total 6656K, used 1188K [0x00000000d5580000, 0x00000000d5d00000, 0x0000000100000000)
eden space 6144K, 14% used [0x00000000d5580000,0x00000000d56610f8,0x00000000d5b80000)
from space 512K, 56% used [0x00000000d5c80000,0x00000000d5cc8000,0x00000000d5d00000)
to space 512K, 0% used [0x00000000d5c00000,0x00000000d5c00000,0x00000000d5c80000)
ParOldGen total 120320K, used 119893K [0x0000000080000000, 0x0000000087580000, 0x00000000d5580000)
object space 120320K, 99% used [0x0000000080000000,0x0000000087515668,0x0000000087580000)
Metaspace used 63591K, committed 65024K, reserved 1114112K
class space used 7351K, committed 7936K, reserved 1048576K
Card table byte_map: [0x000001bbd7a10000,0x000001bbd7e20000] _byte_map_base: 0x000001bbd7610000
Marking Bits: (ParMarkBitMap*) 0x00007ff87ff82460
Begin Bits: [0x000001bbea520000, 0x000001bbec520000)
End Bits: [0x000001bbec520000, 0x000001bbee520000)
Polling page: 0x000001bbd6090000
Metaspace:
Usage:
Non-class: 54.92 MB used.
Class: 7.18 MB used.
Both: 62.10 MB used.
Virtual space:
Non-class space: 64.00 MB reserved, 55.75 MB ( 87%) committed, 1 nodes.
Class space: 1.00 GB reserved, 7.75 MB ( <1%) committed, 1 nodes.
Both: 1.06 GB reserved, 63.50 MB ( 6%) committed.
Chunk freelists:
Non-Class: 7.73 MB
Class: 8.31 MB
Both: 16.05 MB
MaxMetaspaceSize: unlimited
CompressedClassSpaceSize: 1.00 GB
Initial GC threshold: 21.00 MB
Current GC threshold: 98.12 MB
CDS: on
- commit_granule_bytes: 65536.
- commit_granule_words: 8192.
- virtual_space_node_default_size: 8388608.
- enlarge_chunks_in_place: 1.
- use_allocation_guard: 0.
Internal statistics:
num_allocs_failed_limit: 13.
num_arena_births: 1064.
num_arena_deaths: 14.
num_vsnodes_births: 2.
num_vsnodes_deaths: 0.
num_space_committed: 1016.
num_space_uncommitted: 0.
num_chunks_returned_to_freelist: 27.
num_chunks_taken_from_freelist: 3737.
num_chunk_merges: 18.
num_chunk_splits: 2344.
num_chunks_enlarged: 1407.
num_inconsistent_stats: 0.
CodeHeap 'non-profiled nmethods': size=120000Kb used=6682Kb max_used=6682Kb free=113318Kb
bounds [0x000001bbe2d40000, 0x000001bbe33d0000, 0x000001bbea270000]
CodeHeap 'profiled nmethods': size=120000Kb used=18793Kb max_used=18793Kb free=101206Kb
bounds [0x000001bbdb270000, 0x000001bbdc4d0000, 0x000001bbe27a0000]
CodeHeap 'non-nmethods': size=5760Kb used=1430Kb max_used=1529Kb free=4329Kb
bounds [0x000001bbe27a0000, 0x000001bbe2a10000, 0x000001bbe2d40000]
CodeCache: size=245760Kb, used=26905Kb, max_used=27004Kb, free=218853Kb
total_blobs=10262, nmethods=9530, adapters=637, full_count=0
Compilation: enabled, stopped_count=0, restarted_count=0
Compilation events (20 events):
Event: 2290.471 Thread 0x000001bbf02f78a0 10368 3 java.util.HashMap::compute (339 bytes)
Event: 2290.479 Thread 0x000001bbf02f78a0 nmethod 10368 0x000001bbdc4c3590 code [0x000001bbdc4c38c0, 0x000001bbdc4c4d98]
Event: 2290.479 Thread 0x000001bbf02f78a0 10366 1 org.eclipse.core.internal.events.BuilderPersistentInfo::setInterestingProjects (6 bytes)
Event: 2290.479 Thread 0x000001bbf02f78a0 nmethod 10366 0x000001bbe33c4610 code [0x000001bbe33c47a0, 0x000001bbe33c4880]
Event: 2290.479 Thread 0x000001bbf02f78a0 10367 1 org.eclipse.core.internal.events.BuilderPersistentInfo::getLastBuiltTree (5 bytes)
Event: 2290.479 Thread 0x000001bbf02f78a0 nmethod 10367 0x000001bbe33c4910 code [0x000001bbe33c4aa0, 0x000001bbe33c4b68]
Event: 2290.605 Thread 0x000001bbf02f78a0 10369 3 java.util.Formatter::parse (208 bytes)
Event: 2290.610 Thread 0x000001bbd7ff74f0 10372 4 com.google.gson.stream.JsonWriter::beforeValue (140 bytes)
Event: 2290.615 Thread 0x000001bbf02f78a0 nmethod 10369 0x000001bbdc4c5390 code [0x000001bbdc4c5860, 0x000001bbdc4c8168]
Event: 2290.615 Thread 0x000001bbf02f78a0 10370 3 java.lang.AbstractStringBuilder::append (70 bytes)
Event: 2290.616 Thread 0x000001bbf02f78a0 nmethod 10370 0x000001bbdc4c9290 code [0x000001bbdc4c94a0, 0x000001bbdc4c99d0]
Event: 2290.616 Thread 0x000001bbf02f78a0 10371 3 java.lang.AbstractStringBuilder::inflateIfNeededFor (22 bytes)
Event: 2290.617 Thread 0x000001bbf02f78a0 nmethod 10371 0x000001bbdc4c9b90 code [0x000001bbdc4c9d40, 0x000001bbdc4c9f50]
Event: 2290.638 Thread 0x000001bbd7ff74f0 nmethod 10372 0x000001bbe33c4c10 code [0x000001bbe33c4e40, 0x000001bbe33c5810]
Event: 2320.197 Thread 0x000001bbf02f78a0 10373 3 java.util.logging.LogManager::getProperty (9 bytes)
Event: 2320.198 Thread 0x000001bbf02f78a0 nmethod 10373 0x000001bbdc4ca090 code [0x000001bbdc4ca240, 0x000001bbdc4ca418]
Event: 2373.347 Thread 0x000001bbf02f78a0 10374 1 org.eclipse.osgi.internal.framework.EquinoxContainer::getStorage (5 bytes)
Event: 2373.348 Thread 0x000001bbf02f78a0 nmethod 10374 0x000001bbe33c5f10 code [0x000001bbe33c60a0, 0x000001bbe33c6168]
Event: 2399.064 Thread 0x000001bbd7ff74f0 10375 ! 4 java.lang.Object::wait (50 bytes)
Event: 2399.090 Thread 0x000001bbd7ff74f0 nmethod 10375 0x000001bbe33c6210 code [0x000001bbe33c63e0, 0x000001bbe33c65a8]
GC Heap History (20 events):
Event: 50.456 GC heap before
{Heap before GC invocations=122 (full 3):
PSYoungGen total 7168K, used 7135K [0x00000000d5580000, 0x00000000d5f00000, 0x0000000100000000)
eden space 6144K, 99% used [0x00000000d5580000,0x00000000d5b7fff8,0x00000000d5b80000)
from space 1024K, 96% used [0x00000000d5d00000,0x00000000d5df8000,0x00000000d5e00000)
to space 1536K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000d5d00000)
ParOldGen total 116224K, used 115821K [0x0000000080000000, 0x0000000087180000, 0x00000000d5580000)
object space 116224K, 99% used [0x0000000080000000,0x000000008711b4e8,0x0000000087180000)
Metaspace used 62151K, committed 63552K, reserved 1114112K
class space used 7224K, committed 7808K, reserved 1048576K
}
Event: 50.459 GC heap after
{Heap after GC invocations=122 (full 3):
PSYoungGen total 7168K, used 608K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 0% used [0x00000000d5580000,0x00000000d5580000,0x00000000d5b80000)
from space 1024K, 59% used [0x00000000d5b80000,0x00000000d5c18000,0x00000000d5c80000)
to space 1024K, 0% used [0x00000000d5c80000,0x00000000d5c80000,0x00000000d5d80000)
ParOldGen total 116736K, used 116730K [0x0000000080000000, 0x0000000087200000, 0x00000000d5580000)
object space 116736K, 99% used [0x0000000080000000,0x00000000871feb18,0x0000000087200000)
Metaspace used 62151K, committed 63552K, reserved 1114112K
class space used 7224K, committed 7808K, reserved 1048576K
}
Event: 50.485 GC heap before
{Heap before GC invocations=123 (full 3):
PSYoungGen total 7168K, used 6752K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 100% used [0x00000000d5580000,0x00000000d5b80000,0x00000000d5b80000)
from space 1024K, 59% used [0x00000000d5b80000,0x00000000d5c18000,0x00000000d5c80000)
to space 1024K, 0% used [0x00000000d5c80000,0x00000000d5c80000,0x00000000d5d80000)
ParOldGen total 116736K, used 116730K [0x0000000080000000, 0x0000000087200000, 0x00000000d5580000)
object space 116736K, 99% used [0x0000000080000000,0x00000000871feb18,0x0000000087200000)
Metaspace used 62230K, committed 63616K, reserved 1114112K
class space used 7227K, committed 7808K, reserved 1048576K
}
Event: 50.488 GC heap after
{Heap after GC invocations=123 (full 3):
PSYoungGen total 7168K, used 576K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 0% used [0x00000000d5580000,0x00000000d5580000,0x00000000d5b80000)
from space 1024K, 56% used [0x00000000d5c80000,0x00000000d5d10000,0x00000000d5d80000)
to space 1024K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000d5c80000)
ParOldGen total 117248K, used 117234K [0x0000000080000000, 0x0000000087280000, 0x00000000d5580000)
object space 117248K, 99% used [0x0000000080000000,0x000000008727cb18,0x0000000087280000)
Metaspace used 62230K, committed 63616K, reserved 1114112K
class space used 7227K, committed 7808K, reserved 1048576K
}
Event: 50.505 GC heap before
{Heap before GC invocations=124 (full 3):
PSYoungGen total 7168K, used 6719K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 99% used [0x00000000d5580000,0x00000000d5b7fff8,0x00000000d5b80000)
from space 1024K, 56% used [0x00000000d5c80000,0x00000000d5d10000,0x00000000d5d80000)
to space 1024K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000d5c80000)
ParOldGen total 117248K, used 117234K [0x0000000080000000, 0x0000000087280000, 0x00000000d5580000)
object space 117248K, 99% used [0x0000000080000000,0x000000008727cb18,0x0000000087280000)
Metaspace used 62234K, committed 63616K, reserved 1114112K
class space used 7227K, committed 7808K, reserved 1048576K
}
Event: 50.507 GC heap after
{Heap after GC invocations=124 (full 3):
PSYoungGen total 7168K, used 576K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 0% used [0x00000000d5580000,0x00000000d5580000,0x00000000d5b80000)
from space 1024K, 56% used [0x00000000d5b80000,0x00000000d5c10000,0x00000000d5c80000)
to space 1024K, 0% used [0x00000000d5c80000,0x00000000d5c80000,0x00000000d5d80000)
ParOldGen total 117760K, used 117706K [0x0000000080000000, 0x0000000087300000, 0x00000000d5580000)
object space 117760K, 99% used [0x0000000080000000,0x00000000872f2b18,0x0000000087300000)
Metaspace used 62234K, committed 63616K, reserved 1114112K
class space used 7227K, committed 7808K, reserved 1048576K
}
Event: 50.518 GC heap before
{Heap before GC invocations=125 (full 3):
PSYoungGen total 7168K, used 6720K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 100% used [0x00000000d5580000,0x00000000d5b80000,0x00000000d5b80000)
from space 1024K, 56% used [0x00000000d5b80000,0x00000000d5c10000,0x00000000d5c80000)
to space 1024K, 0% used [0x00000000d5c80000,0x00000000d5c80000,0x00000000d5d80000)
ParOldGen total 117760K, used 117706K [0x0000000080000000, 0x0000000087300000, 0x00000000d5580000)
object space 117760K, 99% used [0x0000000080000000,0x00000000872f2b18,0x0000000087300000)
Metaspace used 62234K, committed 63616K, reserved 1114112K
class space used 7227K, committed 7808K, reserved 1048576K
}
Event: 50.520 GC heap after
{Heap after GC invocations=125 (full 3):
PSYoungGen total 7168K, used 608K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 0% used [0x00000000d5580000,0x00000000d5580000,0x00000000d5b80000)
from space 1024K, 59% used [0x00000000d5c80000,0x00000000d5d18000,0x00000000d5d80000)
to space 1024K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000d5c80000)
ParOldGen total 118272K, used 118170K [0x0000000080000000, 0x0000000087380000, 0x00000000d5580000)
object space 118272K, 99% used [0x0000000080000000,0x0000000087366b18,0x0000000087380000)
Metaspace used 62234K, committed 63616K, reserved 1114112K
class space used 7227K, committed 7808K, reserved 1048576K
}
Event: 50.552 GC heap before
{Heap before GC invocations=126 (full 3):
PSYoungGen total 7168K, used 6751K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 99% used [0x00000000d5580000,0x00000000d5b7ffd8,0x00000000d5b80000)
from space 1024K, 59% used [0x00000000d5c80000,0x00000000d5d18000,0x00000000d5d80000)
to space 1024K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000d5c80000)
ParOldGen total 118272K, used 118170K [0x0000000080000000, 0x0000000087380000, 0x00000000d5580000)
object space 118272K, 99% used [0x0000000080000000,0x0000000087366b18,0x0000000087380000)
Metaspace used 62379K, committed 63744K, reserved 1114112K
class space used 7244K, committed 7808K, reserved 1048576K
}
Event: 50.555 GC heap after
{Heap after GC invocations=126 (full 3):
PSYoungGen total 7168K, used 608K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 0% used [0x00000000d5580000,0x00000000d5580000,0x00000000d5b80000)
from space 1024K, 59% used [0x00000000d5b80000,0x00000000d5c18000,0x00000000d5c80000)
to space 1024K, 0% used [0x00000000d5c80000,0x00000000d5c80000,0x00000000d5d80000)
ParOldGen total 118784K, used 118644K [0x0000000080000000, 0x0000000087400000, 0x00000000d5580000)
object space 118784K, 99% used [0x0000000080000000,0x00000000873dd1c8,0x0000000087400000)
Metaspace used 62379K, committed 63744K, reserved 1114112K
class space used 7244K, committed 7808K, reserved 1048576K
}
Event: 50.620 GC heap before
{Heap before GC invocations=127 (full 3):
PSYoungGen total 7168K, used 6751K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 99% used [0x00000000d5580000,0x00000000d5b7fe40,0x00000000d5b80000)
from space 1024K, 59% used [0x00000000d5b80000,0x00000000d5c18000,0x00000000d5c80000)
to space 1024K, 0% used [0x00000000d5c80000,0x00000000d5c80000,0x00000000d5d80000)
ParOldGen total 118784K, used 118644K [0x0000000080000000, 0x0000000087400000, 0x00000000d5580000)
object space 118784K, 99% used [0x0000000080000000,0x00000000873dd1c8,0x0000000087400000)
Metaspace used 62507K, committed 63808K, reserved 1114112K
class space used 7256K, committed 7808K, reserved 1048576K
}
Event: 50.622 GC heap after
{Heap after GC invocations=127 (full 3):
PSYoungGen total 7168K, used 644K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 0% used [0x00000000d5580000,0x00000000d5580000,0x00000000d5b80000)
from space 1024K, 62% used [0x00000000d5c80000,0x00000000d5d211e0,0x00000000d5d80000)
to space 1024K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000d5c80000)
ParOldGen total 119296K, used 119012K [0x0000000080000000, 0x0000000087480000, 0x00000000d5580000)
object space 119296K, 99% used [0x0000000080000000,0x00000000874391c8,0x0000000087480000)
Metaspace used 62507K, committed 63808K, reserved 1114112K
class space used 7256K, committed 7808K, reserved 1048576K
}
Event: 50.784 GC heap before
{Heap before GC invocations=128 (full 3):
PSYoungGen total 7168K, used 6788K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 100% used [0x00000000d5580000,0x00000000d5b80000,0x00000000d5b80000)
from space 1024K, 62% used [0x00000000d5c80000,0x00000000d5d211e0,0x00000000d5d80000)
to space 1024K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000d5c80000)
ParOldGen total 119296K, used 119012K [0x0000000080000000, 0x0000000087480000, 0x00000000d5580000)
object space 119296K, 99% used [0x0000000080000000,0x00000000874391c8,0x0000000087480000)
Metaspace used 62618K, committed 63936K, reserved 1114112K
class space used 7264K, committed 7808K, reserved 1048576K
}
Event: 50.785 GC heap after
{Heap after GC invocations=128 (full 3):
PSYoungGen total 7168K, used 256K [0x00000000d5580000, 0x00000000d5d00000, 0x0000000100000000)
eden space 6144K, 0% used [0x00000000d5580000,0x00000000d5580000,0x00000000d5b80000)
from space 1024K, 25% used [0x00000000d5b80000,0x00000000d5bc0000,0x00000000d5c80000)
to space 512K, 0% used [0x00000000d5c80000,0x00000000d5c80000,0x00000000d5d00000)
ParOldGen total 119296K, used 119156K [0x0000000080000000, 0x0000000087480000, 0x00000000d5580000)
object space 119296K, 99% used [0x0000000080000000,0x000000008745d1c8,0x0000000087480000)
Metaspace used 62618K, committed 63936K, reserved 1114112K
class space used 7264K, committed 7808K, reserved 1048576K
}
Event: 480.441 GC heap before
{Heap before GC invocations=129 (full 3):
PSYoungGen total 7168K, used 6399K [0x00000000d5580000, 0x00000000d5d00000, 0x0000000100000000)
eden space 6144K, 99% used [0x00000000d5580000,0x00000000d5b7fff8,0x00000000d5b80000)
from space 1024K, 25% used [0x00000000d5b80000,0x00000000d5bc0000,0x00000000d5c80000)
to space 512K, 0% used [0x00000000d5c80000,0x00000000d5c80000,0x00000000d5d00000)
ParOldGen total 119296K, used 119156K [0x0000000080000000, 0x0000000087480000, 0x00000000d5580000)
object space 119296K, 99% used [0x0000000080000000,0x000000008745d1c8,0x0000000087480000)
Metaspace used 62870K, committed 64256K, reserved 1114112K
class space used 7291K, committed 7872K, reserved 1048576K
}
Event: 480.453 GC heap after
{Heap after GC invocations=129 (full 3):
PSYoungGen total 6656K, used 416K [0x00000000d5580000, 0x00000000d5d00000, 0x0000000100000000)
eden space 6144K, 0% used [0x00000000d5580000,0x00000000d5580000,0x00000000d5b80000)
from space 512K, 81% used [0x00000000d5c80000,0x00000000d5ce8000,0x00000000d5d00000)
to space 512K, 0% used [0x00000000d5c00000,0x00000000d5c00000,0x00000000d5c80000)
ParOldGen total 119296K, used 119228K [0x0000000080000000, 0x0000000087480000, 0x00000000d5580000)
object space 119296K, 99% used [0x0000000080000000,0x000000008746f1d8,0x0000000087480000)
Metaspace used 62870K, committed 64256K, reserved 1114112K
class space used 7291K, committed 7872K, reserved 1048576K
}
Event: 780.451 GC heap before
{Heap before GC invocations=130 (full 3):
PSYoungGen total 6656K, used 6560K [0x00000000d5580000, 0x00000000d5d00000, 0x0000000100000000)
eden space 6144K, 100% used [0x00000000d5580000,0x00000000d5b80000,0x00000000d5b80000)
from space 512K, 81% used [0x00000000d5c80000,0x00000000d5ce8000,0x00000000d5d00000)
to space 512K, 0% used [0x00000000d5c00000,0x00000000d5c00000,0x00000000d5c80000)
ParOldGen total 119296K, used 119228K [0x0000000080000000, 0x0000000087480000, 0x00000000d5580000)
object space 119296K, 99% used [0x0000000080000000,0x000000008746f1d8,0x0000000087480000)
Metaspace used 63446K, committed 64832K, reserved 1114112K
class space used 7349K, committed 7936K, reserved 1048576K
}
Event: 780.455 GC heap after
{Heap after GC invocations=130 (full 3):
PSYoungGen total 6656K, used 480K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 0% used [0x00000000d5580000,0x00000000d5580000,0x00000000d5b80000)
from space 512K, 93% used [0x00000000d5c00000,0x00000000d5c78020,0x00000000d5c80000)
to space 1024K, 0% used [0x00000000d5c80000,0x00000000d5c80000,0x00000000d5d80000)
ParOldGen total 119808K, used 119524K [0x0000000080000000, 0x0000000087500000, 0x00000000d5580000)
object space 119808K, 99% used [0x0000000080000000,0x00000000874b91d8,0x0000000087500000)
Metaspace used 63446K, committed 64832K, reserved 1114112K
class space used 7349K, committed 7936K, reserved 1048576K
}
Event: 2290.285 GC heap before
{Heap before GC invocations=131 (full 3):
PSYoungGen total 6656K, used 6624K [0x00000000d5580000, 0x00000000d5d80000, 0x0000000100000000)
eden space 6144K, 100% used [0x00000000d5580000,0x00000000d5b80000,0x00000000d5b80000)
from space 512K, 93% used [0x00000000d5c00000,0x00000000d5c78020,0x00000000d5c80000)
to space 1024K, 0% used [0x00000000d5c80000,0x00000000d5c80000,0x00000000d5d80000)
ParOldGen total 119808K, used 119524K [0x0000000080000000, 0x0000000087500000, 0x00000000d5580000)
object space 119808K, 99% used [0x0000000080000000,0x00000000874b91d8,0x0000000087500000)
Metaspace used 63581K, committed 64960K, reserved 1114112K
class space used 7351K, committed 7936K, reserved 1048576K
}
Event: 2290.347 GC heap after
{Heap after GC invocations=131 (full 3):
PSYoungGen total 6656K, used 288K [0x00000000d5580000, 0x00000000d5d00000, 0x0000000100000000)
eden space 6144K, 0% used [0x00000000d5580000,0x00000000d5580000,0x00000000d5b80000)
from space 512K, 56% used [0x00000000d5c80000,0x00000000d5cc8000,0x00000000d5d00000)
to space 512K, 0% used [0x00000000d5c00000,0x00000000d5c00000,0x00000000d5c80000)
ParOldGen total 120320K, used 119893K [0x0000000080000000, 0x0000000087580000, 0x00000000d5580000)
object space 120320K, 99% used [0x0000000080000000,0x0000000087515668,0x0000000087580000)
Metaspace used 63581K, committed 64960K, reserved 1114112K
class space used 7351K, committed 7936K, reserved 1048576K
}
Dll operation events (15 events):
Event: 0.024 Loaded shared library c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\java.dll
Event: 0.177 Loaded shared library c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\zip.dll
Event: 0.210 Loaded shared library C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\instrument.dll
Event: 0.217 Loaded shared library C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\net.dll
Event: 0.220 Loaded shared library C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\nio.dll
Event: 0.225 Loaded shared library C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\zip.dll
Event: 0.252 Loaded shared library C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\jimage.dll
Event: 0.395 Loaded shared library c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\verify.dll
Event: 2.954 Loaded shared library C:\Users\Lincpay\AppData\Roaming\Code\User\globalStorage\redhat.java\1.51.0\config_win\org.eclipse.equinox.launcher\org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.1400.v20250801-0854\eclipse_11916.dll
Event: 5.981 Loaded shared library C:\Users\Lincpay\AppData\Local\Temp\jna-1841511254\jna1170528911156299814.dll
Event: 10.146 Loaded shared library C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\sunmscapi.dll
Event: 10.263 Loaded shared library C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\extnet.dll
Event: 30.636 Loaded shared library C:\Users\Lincpay\.gradle\native\1def1411415f61bf3af743bc5b6707747c0891f09f0c88961ee8f79bc544acac\windows-amd64\native-platform.dll
Event: 46.903 Loaded shared library C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\management.dll
Event: 46.906 Loaded shared library C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\management_ext.dll
Deoptimization events (20 events):
Event: 1744.327 Thread 0x000001bbf0809680 DEOPT PACKING pc=0x000001bbe33997e4 sp=0x0000005f264fefc0
Event: 1744.327 Thread 0x000001bbf0809680 DEOPT UNPACKING pc=0x000001bbe27f3aa2 sp=0x0000005f264fef00 mode 2
Event: 2107.218 Thread 0x000001bbf83b2cc0 Uncommon trap: trap_request=0xffffffde fr.pc=0x000001bbe33a6c8c relative=0x00000000000016ec
Event: 2107.218 Thread 0x000001bbf83b2cc0 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000001bbe33a6c8c method=org.eclipse.core.internal.dtree.AbstractDataTreeNode.storeStrings(Lorg/eclipse/core/internal/utils/StringPool;)V @ 31 c2
Event: 2107.218 Thread 0x000001bbf83b2cc0 DEOPT PACKING pc=0x000001bbe33a6c8c sp=0x0000005f266feef0
Event: 2107.219 Thread 0x000001bbf83b2cc0 DEOPT UNPACKING pc=0x000001bbe27f3aa2 sp=0x0000005f266feeb8 mode 2
Event: 2107.221 Thread 0x000001bbf83b2cc0 Uncommon trap: trap_request=0xffffffde fr.pc=0x000001bbe33a9944 relative=0x0000000000000aa4
Event: 2107.221 Thread 0x000001bbf83b2cc0 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000001bbe33a9944 method=org.eclipse.core.internal.dtree.AbstractDataTreeNode.storeStrings(Lorg/eclipse/core/internal/utils/StringPool;)V @ 31 c2
Event: 2107.221 Thread 0x000001bbf83b2cc0 DEOPT PACKING pc=0x000001bbe33a9944 sp=0x0000005f266fee50
Event: 2107.222 Thread 0x000001bbf83b2cc0 DEOPT UNPACKING pc=0x000001bbe27f3aa2 sp=0x0000005f266fee38 mode 2
Event: 2107.222 Thread 0x000001bbf83b2cc0 Uncommon trap: trap_request=0xffffffde fr.pc=0x000001bbe33a9944 relative=0x0000000000000aa4
Event: 2107.222 Thread 0x000001bbf83b2cc0 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000001bbe33a9944 method=org.eclipse.core.internal.dtree.AbstractDataTreeNode.storeStrings(Lorg/eclipse/core/internal/utils/StringPool;)V @ 31 c2
Event: 2107.222 Thread 0x000001bbf83b2cc0 DEOPT PACKING pc=0x000001bbe33a9944 sp=0x0000005f266fedd0
Event: 2107.222 Thread 0x000001bbf83b2cc0 DEOPT UNPACKING pc=0x000001bbe27f3aa2 sp=0x0000005f266fedb8 mode 2
Event: 2107.222 Thread 0x000001bbf83b2cc0 Uncommon trap: trap_request=0xffffffde fr.pc=0x000001bbe33a9944 relative=0x0000000000000aa4
Event: 2107.222 Thread 0x000001bbf83b2cc0 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000001bbe33a9944 method=org.eclipse.core.internal.dtree.AbstractDataTreeNode.storeStrings(Lorg/eclipse/core/internal/utils/StringPool;)V @ 31 c2
Event: 2107.222 Thread 0x000001bbf83b2cc0 DEOPT PACKING pc=0x000001bbe33a9944 sp=0x0000005f266fed50
Event: 2107.222 Thread 0x000001bbf83b2cc0 DEOPT UNPACKING pc=0x000001bbe27f3aa2 sp=0x0000005f266fed38 mode 2
Event: 2107.282 Thread 0x000001bbf83b2cc0 DEOPT PACKING pc=0x000001bbdc3fcd2b sp=0x0000005f266fec00
Event: 2107.282 Thread 0x000001bbf83b2cc0 DEOPT UNPACKING pc=0x000001bbe27f4242 sp=0x0000005f266fe070 mode 0
Classes loaded (20 events):
Event: 780.401 Loading class java/util/stream/Nodes$CollectorTask$OfRef
Event: 780.402 Loading class java/util/stream/Nodes$CollectorTask
Event: 780.403 Loading class java/util/stream/Nodes$CollectorTask done
Event: 780.403 Loading class java/util/stream/Nodes$CollectorTask$OfRef done
Event: 780.403 Loading class java/util/function/LongFunction
Event: 780.403 Loading class java/util/function/LongFunction done
Event: 780.403 Loading class java/util/stream/Nodes$ConcNode
Event: 780.403 Loading class java/util/stream/Nodes$AbstractConcNode
Event: 780.403 Loading class java/util/stream/Nodes$AbstractConcNode done
Event: 780.403 Loading class java/util/stream/Nodes$ConcNode done
Event: 780.433 Loading class java/util/stream/Nodes$ToArrayTask$OfRef
Event: 780.433 Loading class java/util/stream/Nodes$ToArrayTask
Event: 780.434 Loading class java/util/stream/Nodes$ToArrayTask done
Event: 780.434 Loading class java/util/stream/Nodes$ToArrayTask$OfRef done
Event: 780.439 Loading class java/io/ObjectOutputStream$BlockDataOutputStream
Event: 780.440 Loading class java/io/ObjectOutputStream$BlockDataOutputStream done
Event: 780.440 Loading class java/io/ObjectOutputStream$HandleTable
Event: 780.440 Loading class java/io/ObjectOutputStream$HandleTable done
Event: 780.440 Loading class java/io/ObjectOutputStream$ReplaceTable
Event: 780.440 Loading class java/io/ObjectOutputStream$ReplaceTable done
Classes unloaded (7 events):
Event: 7.680 Thread 0x000001bbd7fe1e30 Unloading class 0x000001bb811a4000 'java/lang/invoke/LambdaForm$MH+0x000001bb811a4000'
Event: 7.680 Thread 0x000001bbd7fe1e30 Unloading class 0x000001bb811a3c00 'java/lang/invoke/LambdaForm$MH+0x000001bb811a3c00'
Event: 7.680 Thread 0x000001bbd7fe1e30 Unloading class 0x000001bb811a3800 'java/lang/invoke/LambdaForm$MH+0x000001bb811a3800'
Event: 7.680 Thread 0x000001bbd7fe1e30 Unloading class 0x000001bb811a3400 'java/lang/invoke/LambdaForm$MH+0x000001bb811a3400'
Event: 7.680 Thread 0x000001bbd7fe1e30 Unloading class 0x000001bb811a3000 'java/lang/invoke/LambdaForm$BMH+0x000001bb811a3000'
Event: 7.680 Thread 0x000001bbd7fe1e30 Unloading class 0x000001bb811a2c00 'java/lang/invoke/LambdaForm$DMH+0x000001bb811a2c00'
Event: 7.680 Thread 0x000001bbd7fe1e30 Unloading class 0x000001bb811a1800 'java/lang/invoke/LambdaForm$DMH+0x000001bb811a1800'
Classes redefined (0 events):
No events
Internal exceptions (20 events):
Event: 2290.281 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5b7b590}> (0x00000000d5b7b590)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.282 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5b7bf18}> (0x00000000d5b7bf18)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.282 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5b7d700}> (0x00000000d5b7d700)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.282 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5b7e348}> (0x00000000d5b7e348)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.285 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5b7fb30}> (0x00000000d5b7fb30)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.348 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5580788}> (0x00000000d5580788)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.348 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5581f70}> (0x00000000d5581f70)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.349 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d55828f8}> (0x00000000d55828f8)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.349 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d55840e0}> (0x00000000d55840e0)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.349 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5584a68}> (0x00000000d5584a68)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.350 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5586250}> (0x00000000d5586250)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.350 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5586bd8}> (0x00000000d5586bd8)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.351 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d55883c0}> (0x00000000d55883c0)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.351 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5588d48}> (0x00000000d5588d48)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.352 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d558a4e0}> (0x00000000d558a4e0)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.352 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d558b168}> (0x00000000d558b168)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.354 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d558dce0}> (0x00000000d558dce0)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.354 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d558e6a8}> (0x00000000d558e6a8)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.356 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d558ff40}> (0x00000000d558ff40)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
Event: 2290.356 Thread 0x000001bbf0809680 Exception <a 'sun/nio/fs/WindowsException'{0x00000000d5590908}> (0x00000000d5590908)
thrown [s\src\hotspot\share\prims\jni.cpp, line 520]
ZGC Phase Switch (0 events):
No events
VM Operations (20 events):
Event: 1804.153 Executing VM operation: HandshakeAllThreads (HandshakeForDeflation)
Event: 1804.153 Executing VM operation: HandshakeAllThreads (HandshakeForDeflation) done
Event: 1804.154 Executing VM operation: RendezvousGCThreads
Event: 1804.154 Executing VM operation: RendezvousGCThreads done
Event: 1990.673 Executing VM operation: Cleanup
Event: 1990.673 Executing VM operation: Cleanup done
Event: 2015.728 Executing VM operation: Cleanup
Event: 2015.743 Executing VM operation: Cleanup done
Event: 2164.842 Executing VM operation: HandshakeAllThreads (HandshakeForDeflation)
Event: 2164.842 Executing VM operation: HandshakeAllThreads (HandshakeForDeflation) done
Event: 2164.842 Executing VM operation: RendezvousGCThreads
Event: 2164.842 Executing VM operation: RendezvousGCThreads done
Event: 2290.285 Executing VM operation: ParallelGCFailedAllocation (Allocation Failure)
Event: 2290.347 Executing VM operation: ParallelGCFailedAllocation (Allocation Failure) done
Event: 2291.352 Executing VM operation: Cleanup
Event: 2291.353 Executing VM operation: Cleanup done
Event: 2345.058 Executing VM operation: HandshakeAllThreads (HandshakeForDeflation)
Event: 2345.058 Executing VM operation: HandshakeAllThreads (HandshakeForDeflation) done
Event: 2345.059 Executing VM operation: RendezvousGCThreads
Event: 2345.059 Executing VM operation: RendezvousGCThreads done
Memory protections (0 events):
No events
Nmethod flushes (20 events):
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc03290
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc04f10
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc07810
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc07c90
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc08290
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc09990
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc09e10
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc0a390
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc0ac90
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc0b290
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc0bb10
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc0be90
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc0da90
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc0f190
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc13c90
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc17990
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc27c90
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc43410
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing nmethod 0x000001bbdbc45a10
Event: 48.296 Thread 0x000001bbd7fe1e30 flushing osr nmethod 0x000001bbdbc5aa10
Events (20 events):
Event: 1744.299 Thread 0x000001bbf0cf3320 Thread exited: 0x000001bbf0cf3320
Event: 1744.299 Thread 0x000001bbf0cf2600 Thread exited: 0x000001bbf0cf2600
Event: 1744.299 Thread 0x000001bbf0cf39b0 Thread exited: 0x000001bbf0cf39b0
Event: 1744.299 Thread 0x000001bbf0cf46d0 Thread exited: 0x000001bbf0cf46d0
Event: 2290.198 Thread 0x000001bbf0809680 Thread added: 0x000001bbf0cf39b0
Event: 2290.207 Thread 0x000001bbf0cf39b0 Thread exited: 0x000001bbf0cf39b0
Event: 2290.358 Thread 0x000001bbf0809680 Thread added: 0x000001bbf0cf5a80
Event: 2290.361 Thread 0x000001bbf0cf5a80 Thread added: 0x000001bbf0cf53f0
Event: 2290.362 Thread 0x000001bbf0cf5a80 Thread added: 0x000001bbf0cf2600
Event: 2290.362 Thread 0x000001bbf0cf5a80 Thread added: 0x000001bbf0cf2c90
Event: 2290.363 Thread 0x000001bbf0cf5a80 Thread added: 0x000001bbf0cf3320
Event: 2290.365 Thread 0x000001bbf0cf5a80 Thread added: 0x000001bbf0cf39b0
Event: 2290.365 Thread 0x000001bbf0cf53f0 Thread added: 0x000001bbf0cf74c0
Event: 2290.372 Thread 0x000001bbf0cf2c90 Thread exited: 0x000001bbf0cf2c90
Event: 2290.372 Thread 0x000001bbf0cf2600 Thread exited: 0x000001bbf0cf2600
Event: 2290.372 Thread 0x000001bbf0cf39b0 Thread exited: 0x000001bbf0cf39b0
Event: 2290.372 Thread 0x000001bbf0cf5a80 Thread exited: 0x000001bbf0cf5a80
Event: 2290.372 Thread 0x000001bbf0cf53f0 Thread exited: 0x000001bbf0cf53f0
Event: 2290.372 Thread 0x000001bbf0cf74c0 Thread exited: 0x000001bbf0cf74c0
Event: 2290.372 Thread 0x000001bbf0cf3320 Thread exited: 0x000001bbf0cf3320
Dynamic libraries:
0x00007ff601390000 - 0x00007ff60139e000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\java.exe
0x00007ff907940000 - 0x00007ff907ba8000 C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ff906260000 - 0x00007ff906329000 C:\WINDOWS\System32\KERNEL32.DLL
0x00007ff904ed0000 - 0x00007ff9052c2000 C:\WINDOWS\System32\KERNELBASE.dll
0x00007ff904d80000 - 0x00007ff904ecb000 C:\WINDOWS\System32\ucrtbase.dll
0x00007ff880a30000 - 0x00007ff880a48000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\jli.dll
0x00007ff880a50000 - 0x00007ff880a6e000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\VCRUNTIME140.dll
0x00007ff906aa0000 - 0x00007ff906c65000 C:\WINDOWS\System32\USER32.dll
0x00007ff9056e0000 - 0x00007ff905707000 C:\WINDOWS\System32\win32u.dll
0x00007ff8e7990000 - 0x00007ff8e7c23000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.26100.6899_none_3e0efeeae32e88c1\COMCTL32.dll
0x00007ff905d20000 - 0x00007ff905dc9000 C:\WINDOWS\System32\msvcrt.dll
0x00007ff906020000 - 0x00007ff90604b000 C:\WINDOWS\System32\GDI32.dll
0x00007ff904c50000 - 0x00007ff904d7d000 C:\WINDOWS\System32\gdi32full.dll
0x00007ff905570000 - 0x00007ff905613000 C:\WINDOWS\System32\msvcp_win.dll
0x00007ff906510000 - 0x00007ff90653f000 C:\WINDOWS\System32\IMM32.DLL
0x00007ff8efef0000 - 0x00007ff8efefc000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\vcruntime140_1.dll
0x00007ff880430000 - 0x00007ff8804bd000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\msvcp140.dll
0x00007ff87f2c0000 - 0x00007ff880060000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\server\jvm.dll
0x00007ff906060000 - 0x00007ff906114000 C:\WINDOWS\System32\ADVAPI32.dll
0x00007ff905dd0000 - 0x00007ff905e76000 C:\WINDOWS\System32\sechost.dll
0x00007ff9065e0000 - 0x00007ff9066f8000 C:\WINDOWS\System32\RPCRT4.dll
0x00007ff907720000 - 0x00007ff907794000 C:\WINDOWS\System32\WS2_32.dll
0x00007ff904950000 - 0x00007ff9049ae000 C:\WINDOWS\SYSTEM32\POWRPROF.dll
0x00007ff8f8250000 - 0x00007ff8f825b000 C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ff8e88e0000 - 0x00007ff8e8915000 C:\WINDOWS\SYSTEM32\WINMM.dll
0x00007ff904930000 - 0x00007ff904944000 C:\WINDOWS\SYSTEM32\UMPDC.dll
0x00007ff903860000 - 0x00007ff90387b000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll
0x00007ff8817d0000 - 0x00007ff8817da000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\jimage.dll
0x00007ff8f36e0000 - 0x00007ff8f3922000 C:\WINDOWS\SYSTEM32\DBGHELP.DLL
0x00007ff906720000 - 0x00007ff906a9b000 C:\WINDOWS\System32\combase.dll
0x00007ff906170000 - 0x00007ff906247000 C:\WINDOWS\System32\OLEAUT32.dll
0x00007ff8dbb40000 - 0x00007ff8dbb7c000 C:\WINDOWS\SYSTEM32\dbgcore.DLL
0x00007ff905440000 - 0x00007ff9054d8000 C:\WINDOWS\System32\bcryptPrimitives.dll
0x00007ff8ef2e0000 - 0x00007ff8ef2ef000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\instrument.dll
0x00007ff880180000 - 0x00007ff8801a0000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\java.dll
0x00007ff906d00000 - 0x00007ff90744d000 C:\WINDOWS\System32\SHELL32.dll
0x00007ff9052d0000 - 0x00007ff90543b000 C:\WINDOWS\System32\wintypes.dll
0x00007ff9026e0000 - 0x00007ff902f3d000 C:\WINDOWS\SYSTEM32\windows.storage.dll
0x00007ff905e80000 - 0x00007ff905f72000 C:\WINDOWS\System32\SHCORE.dll
0x00007ff905f80000 - 0x00007ff905fe2000 C:\WINDOWS\System32\shlwapi.dll
0x00007ff9049f0000 - 0x00007ff904a19000 C:\WINDOWS\SYSTEM32\profapi.dll
0x00007ff880a10000 - 0x00007ff880a28000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\zip.dll
0x00007ff880a00000 - 0x00007ff880a10000 C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\net.dll
0x00007ff8fddc0000 - 0x00007ff8fdedf000 C:\WINDOWS\SYSTEM32\WINHTTP.dll
0x00007ff903db0000 - 0x00007ff903e1b000 C:\WINDOWS\system32\mswsock.dll
0x00007ff880300000 - 0x00007ff880316000 C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\nio.dll
0x00007ff8ef2d0000 - 0x00007ff8ef2e0000 c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\verify.dll
0x00007ff880130000 - 0x00007ff880174000 C:\Users\Lincpay\AppData\Roaming\Code\User\globalStorage\redhat.java\1.51.0\config_win\org.eclipse.equinox.launcher\org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.1400.v20250801-0854\eclipse_11916.dll
0x00007ff907460000 - 0x00007ff9075f8000 C:\WINDOWS\System32\ole32.dll
0x00007ff904190000 - 0x00007ff9041ab000 C:\WINDOWS\SYSTEM32\CRYPTSP.dll
0x00007ff9037c0000 - 0x00007ff9037fb000 C:\WINDOWS\system32\rsaenh.dll
0x00007ff903e50000 - 0x00007ff903e7b000 C:\WINDOWS\SYSTEM32\USERENV.dll
0x00007ff9049c0000 - 0x00007ff9049e6000 C:\WINDOWS\SYSTEM32\bcrypt.dll
0x00007ff903ff0000 - 0x00007ff903ffc000 C:\WINDOWS\SYSTEM32\CRYPTBASE.dll
0x00007ff903310000 - 0x00007ff903344000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
0x00007ff906250000 - 0x00007ff90625a000 C:\WINDOWS\System32\NSI.dll
0x00007ff89cc90000 - 0x00007ff89ccd9000 C:\Users\Lincpay\AppData\Local\Temp\jna-1841511254\jna1170528911156299814.dll
0x00007ff9065d0000 - 0x00007ff9065d8000 C:\WINDOWS\System32\PSAPI.DLL
0x00007ff8fe310000 - 0x00007ff8fe32e000 C:\WINDOWS\SYSTEM32\dhcpcsvc6.DLL
0x00007ff8fe2c0000 - 0x00007ff8fe2e3000 C:\WINDOWS\SYSTEM32\dhcpcsvc.DLL
0x00007ff8c6e30000 - 0x00007ff8c6e3e000 C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\sunmscapi.dll
0x00007ff904ad0000 - 0x00007ff904c47000 C:\WINDOWS\System32\CRYPT32.dll
0x00007ff9042e0000 - 0x00007ff904310000 C:\WINDOWS\SYSTEM32\ncrypt.dll
0x00007ff904290000 - 0x00007ff9042cf000 C:\WINDOWS\SYSTEM32\NTASN1.dll
0x00007ff903350000 - 0x00007ff903476000 C:\WINDOWS\SYSTEM32\DNSAPI.dll
0x00007ff8f8210000 - 0x00007ff8f821b000 C:\Windows\System32\rasadhlp.dll
0x00007ff8fe8c0000 - 0x00007ff8fe946000 C:\WINDOWS\System32\fwpuclnt.dll
0x00007ff8c6e20000 - 0x00007ff8c6e29000 C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\extnet.dll
0x00007ff8c7f90000 - 0x00007ff8c7fb7000 C:\Users\Lincpay\.gradle\native\1def1411415f61bf3af743bc5b6707747c0891f09f0c88961ee8f79bc544acac\windows-amd64\native-platform.dll
0x00007ff8ec0d0000 - 0x00007ff8ec0da000 C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\management.dll
0x00007ff8c6e40000 - 0x00007ff8c6e4c000 C:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\management_ext.dll
JVMTI agents:
c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\lombok\lombok-1.18.39-4050.jar path:c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\instrument.dll, loaded, initialized, instrumentlib options:none
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin;C:\WINDOWS\SYSTEM32;C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.26100.6899_none_3e0efeeae32e88c1;c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\jre\21.0.9-win32-x86_64\bin\server;C:\Users\Lincpay\AppData\Roaming\Code\User\globalStorage\redhat.java\1.51.0\config_win\org.eclipse.equinox.launcher\org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.1400.v20250801-0854;C:\Users\Lincpay\AppData\Local\Temp\jna-1841511254;C:\Users\Lincpay\.gradle\native\1def1411415f61bf3af743bc5b6707747c0891f09f0c88961ee8f79bc544acac\windows-amd64
VM Arguments:
jvm_args: --add-modules=ALL-SYSTEM --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/sun.nio.fs=ALL-UNNAMED -Declipse.application=org.eclipse.jdt.ls.core.id1 -Dosgi.bundles.defaultStartLevel=4 -Declipse.product=org.eclipse.jdt.ls.core.product -Djava.import.generatesMetadataFilesAtProjectRoot=false -DDetectVMInstallationsJob.disabled=true -Dfile.encoding=utf8 -XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable -javaagent:c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\lombok\lombok-1.18.39-4050.jar -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=c:\Users\Lincpay\AppData\Roaming\Code\User\workspaceStorage\abb5375ad198b0834a895dbe2777821e\redhat.java -Daether.dependencyCollector.impl=bf
java_command: c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\server\plugins\org.eclipse.equinox.launcher_1.7.100.v20251111-0406.jar -configuration c:\Users\Lincpay\AppData\Roaming\Code\User\globalStorage\redhat.java\1.51.0\config_win -data c:\Users\Lincpay\AppData\Roaming\Code\User\workspaceStorage\abb5375ad198b0834a895dbe2777821e\redhat.java\jdt_ws --pipe=\\.\pipe\lsp-d9bf6c0eeb4dea7218c68c5739457689-sock
java_class_path (initial): c:\Users\Lincpay\.vscode\extensions\redhat.java-1.51.0-win32-x64\server\plugins\org.eclipse.equinox.launcher_1.7.100.v20251111-0406.jar
Launcher Type: SUN_STANDARD
[Global flags]
uintx AdaptiveSizePolicyWeight = 90 {product} {command line}
intx CICompilerCount = 4 {product} {ergonomic}
uintx GCTimeRatio = 4 {product} {command line}
bool HeapDumpOnOutOfMemoryError = true {manageable} {command line}
ccstr HeapDumpPath = c:\Users\Lincpay\AppData\Roaming\Code\User\workspaceStorage\abb5375ad198b0834a895dbe2777821e\redhat.java {manageable} {command line}
size_t InitialHeapSize = 104857600 {product} {command line}
size_t MaxHeapSize = 2147483648 {product} {command line}
size_t MaxNewSize = 715653120 {product} {ergonomic}
size_t MinHeapDeltaBytes = 524288 {product} {ergonomic}
size_t MinHeapSize = 104857600 {product} {command line}
size_t NewSize = 34603008 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 5839372 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122909434 {pd product} {ergonomic}
size_t OldSize = 70254592 {product} {ergonomic}
uintx ProfiledCodeHeapSize = 122909434 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
size_t SoftMaxHeapSize = 2147483648 {manageable} {ergonomic}
bool UseCompressedOops = true {product lp64_product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
bool UseParallelGC = true {product} {command line}
Logging:
Log output configuration:
#0: stdout all=off uptime,level,tags foldmultilines=false
#1: stderr all=off uptime,level,tags foldmultilines=false
Release file:
JAVA_VERSION="21.0.9"
MODULES="java.base java.compiler java.datatransfer java.xml java.prefs java.desktop java.instrument java.logging java.management java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.transaction.xa java.sql java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.jvmstat jdk.attach jdk.charsets jdk.internal.opt jdk.zipfs jdk.compiler jdk.crypto.ec jdk.crypto.cryptoki jdk.crypto.mscapi jdk.dynalink jdk.internal.ed jdk.editpad jdk.hotspot.agent jdk.httpserver jdk.internal.le jdk.internal.vm.ci jdk.internal.vm.compiler jdk.internal.vm.compiler.management jdk.jartool jdk.javadoc jdk.jcmd jdk.management jdk.management.agent jdk.jconsole jdk.jdeps jdk.jdwp.agent jdk.jdi jdk.jfr jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.random jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported jdk.unsupported.desktop jdk.xml.dom"
Environment Variables:
JAVA_HOME=C:\Program Files\Microsoft\jdk-17.0.14.7-hotspot\
PATH=C:\Python313\Scripts\;C:\Python313\;C:\Program Files\Microsoft\jdk-17.0.14.7-hotspot\bin;C:\Program Files\Java\jdk-17\bin;C:\Users\Lincpay\AppData\Local\Android\Sdk\platform-tools;C:\ProgramData\chocolatey\bin;C:\Users\DELL\AppData\Local\nvm;C:\nvm4w\nodejs;C:\Program Files\nodejs\;C:\Users\Lincpay\AppData\Local\Android\Sdk\emulator;C:\Users\Lincpay\.console-ninja\.bin;C:\Users\Lincpay\AppData\Local\Microsoft\WindowsApps;C:\Users\Lincpay\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Lincpay\AppData\Local\Programs\Git\cmd;C:\Users\Lincpay\AppData\Local\Microsoft\WindowsApps;C:\Users\Lincpay\AppData\Roaming\npm
USERNAME=Lincpay
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 12, GenuineIntel
TMP=C:\Users\Lincpay\AppData\Local\Temp
TEMP=C:\Users\Lincpay\AppData\Local\Temp
Periodic native trim disabled
--------------- S Y S T E M ---------------
OS:
Windows 11 , 64 bit Build 26100 (10.0.26100.6725)
OS uptime: 0 days 0:42 hours
Hyper-V role detected
CPU: total 8 (initial active 8) (4 cores per cpu, 2 threads per core) family 6 model 142 stepping 12 microcode 0x100, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, fma, vzeroupper, clflush, clflushopt, hv, rdtscp, f16c
Processor Information for the first 8 processors :
Max Mhz: 2112, Current Mhz: 1910, Mhz Limit: 1900
Memory: 4k page, system-wide physical 16198M (563M free)
TotalPageFile size 28990M (AvailPageFile size 3M)
current process WorkingSet (physical memory assigned to process): 36M, peak: 373M
current process commit charge ("private bytes"): 386M, peak: 439M
vm_info: OpenJDK 64-Bit Server VM (21.0.9+10-LTS) for windows-amd64 JRE (21.0.9+10-LTS), built on 2025-10-21T00:00:00Z by "admin" with unknown MS VC++:1942
END.
+264 -72
View File
@@ -30,8 +30,9 @@
"react-native": "0.79.0", "react-native": "0.79.0",
"react-native-alert-notification": "^0.4.2", "react-native-alert-notification": "^0.4.2",
"react-native-app-intro-slider": "^4.0.4", "react-native-app-intro-slider": "^4.0.4",
"react-native-bouncy-checkbox": "^4.1.2", "react-native-bouncy-checkbox": "^4.1.3",
"react-native-date-picker": "^5.0.13", "react-native-date-picker": "^5.0.13",
"react-native-element-dropdown": "^2.12.4",
"react-native-gesture-handler": "^2.30.0", "react-native-gesture-handler": "^2.30.0",
"react-native-gifted-charts": "^1.4.70", "react-native-gifted-charts": "^1.4.70",
"react-native-haptic-feedback": "^2.3.3", "react-native-haptic-feedback": "^2.3.3",
@@ -55,7 +56,7 @@
"@babel/core": "^7.25.2", "@babel/core": "^7.25.2",
"@babel/preset-env": "^7.25.3", "@babel/preset-env": "^7.25.3",
"@babel/runtime": "^7.25.0", "@babel/runtime": "^7.25.0",
"@react-native-community/cli": "18.0.0", "@react-native-community/cli": "^18.0.1",
"@react-native-community/cli-platform-android": "18.0.0", "@react-native-community/cli-platform-android": "18.0.0",
"@react-native-community/cli-platform-ios": "18.0.0", "@react-native-community/cli-platform-ios": "18.0.0",
"@react-native/babel-preset": "0.79.0", "@react-native/babel-preset": "0.79.0",
@@ -105,7 +106,6 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.27.1", "@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.5", "@babel/generator": "^7.28.5",
@@ -137,7 +137,6 @@
"integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==", "integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
"eslint-visitor-keys": "^2.1.0", "eslint-visitor-keys": "^2.1.0",
@@ -2784,19 +2783,18 @@
} }
}, },
"node_modules/@react-native-community/cli": { "node_modules/@react-native-community/cli": {
"version": "18.0.0", "version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-18.0.1.tgz",
"integrity": "sha512-DyKptlG78XPFo7tDod+we5a3R+U9qjyhaVFbOPvH4pFNu5Dehewtol/srl44K6Cszq0aEMlAJZ3juk0W4WnOJA==", "integrity": "sha512-nEEYwfyP00j9i4nr/HhwPabDscoBhhCjxDBpcKERi2oTYHcBr3FTu9PV1gbeJCa4vRCHr6b6VgOcVTdy99NddQ==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@react-native-community/cli-clean": "18.0.0", "@react-native-community/cli-clean": "18.0.1",
"@react-native-community/cli-config": "18.0.0", "@react-native-community/cli-config": "18.0.1",
"@react-native-community/cli-doctor": "18.0.0", "@react-native-community/cli-doctor": "18.0.1",
"@react-native-community/cli-server-api": "18.0.0", "@react-native-community/cli-server-api": "18.0.1",
"@react-native-community/cli-tools": "18.0.0", "@react-native-community/cli-tools": "18.0.1",
"@react-native-community/cli-types": "18.0.0", "@react-native-community/cli-types": "18.0.1",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"commander": "^9.4.1", "commander": "^9.4.1",
"deepmerge": "^4.3.0", "deepmerge": "^4.3.0",
@@ -2815,26 +2813,58 @@
} }
}, },
"node_modules/@react-native-community/cli-clean": { "node_modules/@react-native-community/cli-clean": {
"version": "18.0.0", "version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-18.0.1.tgz",
"integrity": "sha512-+k64EnJaMI5U8iNDF9AftHBJW+pO/isAhncEXuKRc6IjRtIh6yoaUIIf5+C98fgjfux7CNRZAMQIkPbZodv2Gw==", "integrity": "sha512-brXqk//lmA2Vs5lGq9YLhk7X4IYBSrDRte6t1AktouJpCrH4Tp1sl45yJDS2CHOi/OY1oOfI3kA61tXNX5a/5A==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@react-native-community/cli-tools": "18.0.0", "@react-native-community/cli-tools": "18.0.1",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"execa": "^5.0.0", "execa": "^5.0.0",
"fast-glob": "^3.3.2" "fast-glob": "^3.3.2"
} }
}, },
"node_modules/@react-native-community/cli-config": { "node_modules/@react-native-community/cli-clean/node_modules/@react-native-community/cli-tools": {
"version": "18.0.0", "version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-18.0.1.tgz",
"integrity": "sha512-GUGvyek06JRF4mfd9zXao9YQW4+H8ny69HznqNXVRtVSIIekFyjOpKQeSEzdcyqJEEa5gej22GOz1JCHMKBccg==", "integrity": "sha512-WxWFXwfYhHR2eYiB4lkHZVC/PmIkRWeVHBQKmn0h1mecr3GrHYO4BzW1jpD5Xt6XZ9jojQ9wE5xrCqXjiMSAIQ==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@react-native-community/cli-tools": "18.0.0", "@vscode/sudo-prompt": "^9.0.0",
"appdirsjs": "^1.2.4",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"find-up": "^5.0.0",
"launch-editor": "^2.9.1",
"mime": "^2.4.1",
"ora": "^5.4.1",
"prompts": "^2.4.2",
"semver": "^7.5.2"
}
},
"node_modules/@react-native-community/cli-clean/node_modules/semver": {
"version": "7.7.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"devOptional": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@react-native-community/cli-config": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-18.0.1.tgz",
"integrity": "sha512-O4DDJVMx+DYfwEgF/6lB4hoI9sVjrYW6AlLqeJY/D2XH2e4yqK/Pr3SAi4sOMgvjvYZKzLHqIQVxx54v+LyMQA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@react-native-community/cli-tools": "18.0.1",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"cosmiconfig": "^9.0.0", "cosmiconfig": "^9.0.0",
"deepmerge": "^4.3.0", "deepmerge": "^4.3.0",
@@ -2846,7 +2876,7 @@
"version": "18.0.0", "version": "18.0.0",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-18.0.0.tgz",
"integrity": "sha512-pgnhEO2cmOeb+bBFEBZFYjeFjDTqWoV0JTorTiugj9bb4RQRCl8cr35baVlBGhxAuaio3722CsJ9GRF1oHjP8w==", "integrity": "sha512-pgnhEO2cmOeb+bBFEBZFYjeFjDTqWoV0JTorTiugj9bb4RQRCl8cr35baVlBGhxAuaio3722CsJ9GRF1oHjP8w==",
"devOptional": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@react-native-community/cli-tools": "18.0.0", "@react-native-community/cli-tools": "18.0.0",
@@ -2859,7 +2889,7 @@
"version": "18.0.0", "version": "18.0.0",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-18.0.0.tgz",
"integrity": "sha512-6edjTt3mlNMFBuB/Xd6u0O7GEkhJiKvQgmcoBH18FsNy5cpiHDwQsG8EWM5cHeINp1gMK845qq9fFsTko6gqyQ==", "integrity": "sha512-6edjTt3mlNMFBuB/Xd6u0O7GEkhJiKvQgmcoBH18FsNy5cpiHDwQsG8EWM5cHeINp1gMK845qq9fFsTko6gqyQ==",
"devOptional": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@react-native-community/cli-tools": "18.0.0", "@react-native-community/cli-tools": "18.0.0",
@@ -2868,18 +2898,50 @@
"fast-glob": "^3.3.2" "fast-glob": "^3.3.2"
} }
}, },
"node_modules/@react-native-community/cli-doctor": { "node_modules/@react-native-community/cli-config/node_modules/@react-native-community/cli-tools": {
"version": "18.0.0", "version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-18.0.1.tgz",
"integrity": "sha512-cD3LJfu2h2QSFmZai+fl7RrORKodd5XHSuB7Y9oF1zkebpRYN720vaUtK+GsepqBOElwKk5gl8uVolJ3j+xm8A==", "integrity": "sha512-WxWFXwfYhHR2eYiB4lkHZVC/PmIkRWeVHBQKmn0h1mecr3GrHYO4BzW1jpD5Xt6XZ9jojQ9wE5xrCqXjiMSAIQ==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@react-native-community/cli-config": "18.0.0", "@vscode/sudo-prompt": "^9.0.0",
"@react-native-community/cli-platform-android": "18.0.0", "appdirsjs": "^1.2.4",
"@react-native-community/cli-platform-apple": "18.0.0", "chalk": "^4.1.2",
"@react-native-community/cli-platform-ios": "18.0.0", "execa": "^5.0.0",
"@react-native-community/cli-tools": "18.0.0", "find-up": "^5.0.0",
"launch-editor": "^2.9.1",
"mime": "^2.4.1",
"ora": "^5.4.1",
"prompts": "^2.4.2",
"semver": "^7.5.2"
}
},
"node_modules/@react-native-community/cli-config/node_modules/semver": {
"version": "7.7.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"devOptional": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@react-native-community/cli-doctor": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-18.0.1.tgz",
"integrity": "sha512-B1UWpiVeJ45DX0ip1Et62knAHLzeA1B3XcTJu16PscednnNxV6GBH52kRUoWMsB8HQ8f9IWdFTol8LAp5Y0wwg==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@react-native-community/cli-config": "18.0.1",
"@react-native-community/cli-platform-android": "18.0.1",
"@react-native-community/cli-platform-apple": "18.0.1",
"@react-native-community/cli-platform-ios": "18.0.1",
"@react-native-community/cli-tools": "18.0.1",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"command-exists": "^1.2.8", "command-exists": "^1.2.8",
"deepmerge": "^4.3.0", "deepmerge": "^4.3.0",
@@ -2892,6 +2954,89 @@
"yaml": "^2.2.1" "yaml": "^2.2.1"
} }
}, },
"node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-config-android": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-18.0.1.tgz",
"integrity": "sha512-1wzmGLfS7qgzm0ZfwX/f6Lat/af8/UYdjwtb3ap6RfKNclvIoap0wN6uBeiANmLfk0/BhoG8K1vKtIPwlU/V1A==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@react-native-community/cli-tools": "18.0.1",
"chalk": "^4.1.2",
"fast-glob": "^3.3.2",
"fast-xml-parser": "^4.4.1"
}
},
"node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-config-apple": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-18.0.1.tgz",
"integrity": "sha512-ybr1ZrOSd/Z+oCJ1qVSKVQauvneObTu3VjvYPhhrme7tUUSaYmd3iikaWonbKk5rVp+2WqOFR6Cy7XqVfwwG8A==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@react-native-community/cli-tools": "18.0.1",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"fast-glob": "^3.3.2"
}
},
"node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-platform-android": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-18.0.1.tgz",
"integrity": "sha512-DCltVWDR7jfZZG5MXREVKG0fmIr1b0irEhmdkk/R87dG6HJ8tGXWXnAa4Kap8bx2v6lKFXDW5QxNecyyLCOkVw==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@react-native-community/cli-config-android": "18.0.1",
"@react-native-community/cli-tools": "18.0.1",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"logkitty": "^0.7.1"
}
},
"node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-platform-apple": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-18.0.1.tgz",
"integrity": "sha512-7WxGXT/ui7VtyLVjx5rkYkkTMlbufI6p5BdRKjGp/zQDnDzs/0rle0JEHJxwgvs5VQnt+VOnHBMipkQAhydIqQ==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@react-native-community/cli-config-apple": "18.0.1",
"@react-native-community/cli-tools": "18.0.1",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"fast-xml-parser": "^4.4.1"
}
},
"node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-platform-ios": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-18.0.1.tgz",
"integrity": "sha512-GtO1FB+xaz+vcHIdvl94AkD5B8Y+H8XHb6QwnYX+A3WwteGsHrR8iD/bLLcRtNPtLaAWMa/RgWJpgs4KG+eU4w==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@react-native-community/cli-platform-apple": "18.0.1"
}
},
"node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-tools": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-18.0.1.tgz",
"integrity": "sha512-WxWFXwfYhHR2eYiB4lkHZVC/PmIkRWeVHBQKmn0h1mecr3GrHYO4BzW1jpD5Xt6XZ9jojQ9wE5xrCqXjiMSAIQ==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@vscode/sudo-prompt": "^9.0.0",
"appdirsjs": "^1.2.4",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"find-up": "^5.0.0",
"launch-editor": "^2.9.1",
"mime": "^2.4.1",
"ora": "^5.4.1",
"prompts": "^2.4.2",
"semver": "^7.5.2"
}
},
"node_modules/@react-native-community/cli-doctor/node_modules/semver": { "node_modules/@react-native-community/cli-doctor/node_modules/semver": {
"version": "7.7.3", "version": "7.7.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
@@ -2909,7 +3054,7 @@
"version": "18.0.0", "version": "18.0.0",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-18.0.0.tgz",
"integrity": "sha512-3Y3RleN/des1C3oRS6s6fDvFYKN0KwsLrYFRpVx9vzdDnH1OGyFJOy4DbrruSPtdNiHUpvvHnOOxeLMj0+/tmw==", "integrity": "sha512-3Y3RleN/des1C3oRS6s6fDvFYKN0KwsLrYFRpVx9vzdDnH1OGyFJOy4DbrruSPtdNiHUpvvHnOOxeLMj0+/tmw==",
"devOptional": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@react-native-community/cli-config-android": "18.0.0", "@react-native-community/cli-config-android": "18.0.0",
@@ -2923,7 +3068,7 @@
"version": "18.0.0", "version": "18.0.0",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-18.0.0.tgz",
"integrity": "sha512-zD18gdP5Wr8BSLJ79xtHuPYcg2Vi/nL+WsGsPm7TZjzR5ZU2WbY/tZ+qTGVTQYhQaah+92sU+Dam7gStMrF/fA==", "integrity": "sha512-zD18gdP5Wr8BSLJ79xtHuPYcg2Vi/nL+WsGsPm7TZjzR5ZU2WbY/tZ+qTGVTQYhQaah+92sU+Dam7gStMrF/fA==",
"devOptional": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@react-native-community/cli-config-apple": "18.0.0", "@react-native-community/cli-config-apple": "18.0.0",
@@ -2937,20 +3082,20 @@
"version": "18.0.0", "version": "18.0.0",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-18.0.0.tgz",
"integrity": "sha512-05Nvkkre/4Gao1TYqyP1wGet8td1dAH0CLJKqLNl9Te6ihnrQ8/8OhjIna5xw0iEFr9An8VdLfaPu1Dgv2qAnQ==", "integrity": "sha512-05Nvkkre/4Gao1TYqyP1wGet8td1dAH0CLJKqLNl9Te6ihnrQ8/8OhjIna5xw0iEFr9An8VdLfaPu1Dgv2qAnQ==",
"devOptional": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@react-native-community/cli-platform-apple": "18.0.0" "@react-native-community/cli-platform-apple": "18.0.0"
} }
}, },
"node_modules/@react-native-community/cli-server-api": { "node_modules/@react-native-community/cli-server-api": {
"version": "18.0.0", "version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-18.0.1.tgz",
"integrity": "sha512-tdmGV7ZntYmzrXWheZNpAy6dVI2yrsX4sQH+xAzU7lCfKHk6J8GucxedduXnB5qBB4JgSrrbzg2RLNxv5v0S/Q==", "integrity": "sha512-ZRy2IjEM4ljP05bZcnXho0sCxVGI/9SkWkLuzXl+cRu/4I8vLRleihn2GJCopg82QHLLrajUCHhpDKE8NJWcRw==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@react-native-community/cli-tools": "18.0.0", "@react-native-community/cli-tools": "18.0.1",
"body-parser": "^1.20.3", "body-parser": "^1.20.3",
"compression": "^1.7.1", "compression": "^1.7.1",
"connect": "^3.6.5", "connect": "^3.6.5",
@@ -2962,11 +3107,43 @@
"ws": "^6.2.3" "ws": "^6.2.3"
} }
}, },
"node_modules/@react-native-community/cli-server-api/node_modules/@react-native-community/cli-tools": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-18.0.1.tgz",
"integrity": "sha512-WxWFXwfYhHR2eYiB4lkHZVC/PmIkRWeVHBQKmn0h1mecr3GrHYO4BzW1jpD5Xt6XZ9jojQ9wE5xrCqXjiMSAIQ==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@vscode/sudo-prompt": "^9.0.0",
"appdirsjs": "^1.2.4",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"find-up": "^5.0.0",
"launch-editor": "^2.9.1",
"mime": "^2.4.1",
"ora": "^5.4.1",
"prompts": "^2.4.2",
"semver": "^7.5.2"
}
},
"node_modules/@react-native-community/cli-server-api/node_modules/semver": {
"version": "7.7.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"devOptional": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@react-native-community/cli-tools": { "node_modules/@react-native-community/cli-tools": {
"version": "18.0.0", "version": "18.0.0",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-18.0.0.tgz",
"integrity": "sha512-oR6FcDEcSDYos79vZy4+Tj8jgAE0Xf5HEiRXMJFGISYLRx7tvslSaK8SodUOW9TZe2bCZOb5QSvj8zeMpORmxg==", "integrity": "sha512-oR6FcDEcSDYos79vZy4+Tj8jgAE0Xf5HEiRXMJFGISYLRx7tvslSaK8SodUOW9TZe2bCZOb5QSvj8zeMpORmxg==",
"devOptional": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@vscode/sudo-prompt": "^9.0.0", "@vscode/sudo-prompt": "^9.0.0",
@@ -2985,7 +3162,7 @@
"version": "7.7.3", "version": "7.7.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"devOptional": true, "dev": true,
"license": "ISC", "license": "ISC",
"bin": { "bin": {
"semver": "bin/semver.js" "semver": "bin/semver.js"
@@ -2995,15 +3172,34 @@
} }
}, },
"node_modules/@react-native-community/cli-types": { "node_modules/@react-native-community/cli-types": {
"version": "18.0.0", "version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-18.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-18.0.1.tgz",
"integrity": "sha512-J84+4IRXl8WlVdoe1maTD5skYZZO9CbQ6LNXEHx1kaZcFmvPZKfjsaxuyQ+8BsSqZnM2izOw8dEWnAp/Zuwb0w==", "integrity": "sha512-pGxr/TSP9Xiw2+9TUn3OWLdcuI4+PJozPsCYZVTGWJ96X6Pv7YX/rNy4emIDkaWaFZ7IWgWXUA725KhEINSf3Q==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"joi": "^17.2.1" "joi": "^17.2.1"
} }
}, },
"node_modules/@react-native-community/cli/node_modules/@react-native-community/cli-tools": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-18.0.1.tgz",
"integrity": "sha512-WxWFXwfYhHR2eYiB4lkHZVC/PmIkRWeVHBQKmn0h1mecr3GrHYO4BzW1jpD5Xt6XZ9jojQ9wE5xrCqXjiMSAIQ==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@vscode/sudo-prompt": "^9.0.0",
"appdirsjs": "^1.2.4",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"find-up": "^5.0.0",
"launch-editor": "^2.9.1",
"mime": "^2.4.1",
"ora": "^5.4.1",
"prompts": "^2.4.2",
"semver": "^7.5.2"
}
},
"node_modules/@react-native-community/cli/node_modules/semver": { "node_modules/@react-native-community/cli/node_modules/semver": {
"version": "7.7.3", "version": "7.7.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
@@ -3032,7 +3228,6 @@
"resolved": "https://registry.npmjs.org/@react-native-masked-view/masked-view/-/masked-view-0.3.2.tgz", "resolved": "https://registry.npmjs.org/@react-native-masked-view/masked-view/-/masked-view-0.3.2.tgz",
"integrity": "sha512-XwuQoW7/GEgWRMovOQtX3A4PrXhyaZm0lVUiY8qJDvdngjLms9Cpdck6SmGAUNqQwcj2EadHC1HwL0bEyoa/SQ==", "integrity": "sha512-XwuQoW7/GEgWRMovOQtX3A4PrXhyaZm0lVUiY8qJDvdngjLms9Cpdck6SmGAUNqQwcj2EadHC1HwL0bEyoa/SQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"peerDependencies": { "peerDependencies": {
"react": ">=16", "react": ">=16",
"react-native": ">=0.57" "react-native": ">=0.57"
@@ -3463,7 +3658,6 @@
"resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.26.tgz", "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.26.tgz",
"integrity": "sha512-RhKmeD0E2ejzKS6z8elAfdfwShpcdkYY8zJzvHYLq+wv183BBcElTeyMLcIX6wIn7QutXeI92Yi21t7aUWfqNQ==", "integrity": "sha512-RhKmeD0E2ejzKS6z8elAfdfwShpcdkYY8zJzvHYLq+wv183BBcElTeyMLcIX6wIn7QutXeI92Yi21t7aUWfqNQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@react-navigation/core": "^7.13.7", "@react-navigation/core": "^7.13.7",
"escape-string-regexp": "^4.0.0", "escape-string-regexp": "^4.0.0",
@@ -3755,7 +3949,6 @@
"resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz",
"integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/core": "^7.21.3", "@babel/core": "^7.21.3",
"@svgr/babel-preset": "8.1.0", "@svgr/babel-preset": "8.1.0",
@@ -4089,7 +4282,6 @@
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
"integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"csstype": "^3.2.2" "csstype": "^3.2.2"
} }
@@ -4158,7 +4350,6 @@
"integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@eslint-community/regexpp": "^4.10.0", "@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "7.18.0", "@typescript-eslint/scope-manager": "7.18.0",
@@ -4193,7 +4384,6 @@
"integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
"dev": true, "dev": true,
"license": "BSD-2-Clause", "license": "BSD-2-Clause",
"peer": true,
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "7.18.0", "@typescript-eslint/scope-manager": "7.18.0",
"@typescript-eslint/types": "7.18.0", "@typescript-eslint/types": "7.18.0",
@@ -4425,7 +4615,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"acorn": "bin/acorn" "acorn": "bin/acorn"
}, },
@@ -5098,7 +5287,6 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"baseline-browser-mapping": "^2.9.0", "baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759", "caniuse-lite": "^1.0.30001759",
@@ -6424,7 +6612,6 @@
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1", "@eslint-community/regexpp": "^4.6.1",
@@ -8623,7 +8810,6 @@
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@jest/core": "^29.7.0", "@jest/core": "^29.7.0",
"@jest/types": "^29.6.3", "@jest/types": "^29.6.3",
@@ -11213,7 +11399,6 @@
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"prettier": "bin-prettier.js" "prettier": "bin-prettier.js"
}, },
@@ -11451,7 +11636,6 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz",
"integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
@@ -11516,7 +11700,6 @@
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.79.0.tgz", "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.79.0.tgz",
"integrity": "sha512-fLG/zl/YF30TWTmp2bbo3flHSFGe4WTyVkb7/wJnMEC39jjXVSCxfDtvSUVavhCc03fA/RTkWWvlmg7NEJk7Vg==", "integrity": "sha512-fLG/zl/YF30TWTmp2bbo3flHSFGe4WTyVkb7/wJnMEC39jjXVSCxfDtvSUVavhCc03fA/RTkWWvlmg7NEJk7Vg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@jest/create-cache-key-function": "^29.7.0", "@jest/create-cache-key-function": "^29.7.0",
"@react-native/assets-registry": "0.79.0", "@react-native/assets-registry": "0.79.0",
@@ -11598,12 +11781,13 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/react-native-bouncy-checkbox": { "node_modules/react-native-bouncy-checkbox": {
"version": "4.1.2", "version": "4.1.4",
"resolved": "https://registry.npmjs.org/react-native-bouncy-checkbox/-/react-native-bouncy-checkbox-4.1.2.tgz", "resolved": "https://registry.npmjs.org/react-native-bouncy-checkbox/-/react-native-bouncy-checkbox-4.1.4.tgz",
"integrity": "sha512-hB7YwCGTNoMpTPOPiP+RWyQH35S6vxUbc7IGEW/Rqyp7GonEyhtqtthmxiphneRXnywMh8CZwND7OnvppJZscg==", "integrity": "sha512-JK/ib8nICVhbi6RJpRQwozqEr6mHneAECSHYh6ZreMj8f27t95xiihZPrTF/rVPHWcC3FQm7+eSfgtihMXDncg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@freakycoder/react-native-bounceable": "^1.0.3" "@freakycoder/react-native-bounceable": "^1.0.3",
"react-native-bouncy-checkbox": "^4.1.2"
} }
}, },
"node_modules/react-native-date-picker": { "node_modules/react-native-date-picker": {
@@ -11616,12 +11800,27 @@
"react-native": ">= 0.64.3" "react-native": ">= 0.64.3"
} }
}, },
"node_modules/react-native-element-dropdown": {
"version": "2.12.4",
"resolved": "https://registry.npmjs.org/react-native-element-dropdown/-/react-native-element-dropdown-2.12.4.tgz",
"integrity": "sha512-abZc5SVji9FIt7fjojRYrbuvp03CoeZJrgvezQoDoSOrpiTqkX69ix5m+j06W2AVncA0VWvbT+vCMam8SoVadw==",
"license": "MIT",
"dependencies": {
"lodash": "^4.17.21"
},
"engines": {
"node": ">= 16.0.0"
},
"peerDependencies": {
"react": "*",
"react-native": "*"
}
},
"node_modules/react-native-gesture-handler": { "node_modules/react-native-gesture-handler": {
"version": "2.30.0", "version": "2.30.0",
"resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz",
"integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@egjs/hammerjs": "^2.0.17", "@egjs/hammerjs": "^2.0.17",
"hoist-non-react-statics": "^3.3.0", "hoist-non-react-statics": "^3.3.0",
@@ -11683,7 +11882,6 @@
"resolved": "https://registry.npmjs.org/react-native-linear-gradient/-/react-native-linear-gradient-2.8.3.tgz", "resolved": "https://registry.npmjs.org/react-native-linear-gradient/-/react-native-linear-gradient-2.8.3.tgz",
"integrity": "sha512-KflAXZcEg54PXkLyflaSZQ3PJp4uC4whM7nT/Uot9m0e/qxFV3p6uor1983D1YOBJbJN7rrWdqIjq0T42jOJyA==", "integrity": "sha512-KflAXZcEg54PXkLyflaSZQ3PJp4uC4whM7nT/Uot9m0e/qxFV3p6uor1983D1YOBJbJN7rrWdqIjq0T42jOJyA==",
"license": "MIT", "license": "MIT",
"peer": true,
"peerDependencies": { "peerDependencies": {
"react": "*", "react": "*",
"react-native": "*" "react-native": "*"
@@ -11757,7 +11955,6 @@
"resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz",
"integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==",
"license": "MIT", "license": "MIT",
"peer": true,
"peerDependencies": { "peerDependencies": {
"react": "*", "react": "*",
"react-native": "*" "react-native": "*"
@@ -11768,7 +11965,6 @@
"resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.12.0.tgz", "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.12.0.tgz",
"integrity": "sha512-T2KL6RcDSYDRZswh9glRe600Hvaeq240U21eaqv0uxCNmJz05UeFc4YGQgbFPI8XsakPKx3HjNonItxElFy+QA==", "integrity": "sha512-T2KL6RcDSYDRZswh9glRe600Hvaeq240U21eaqv0uxCNmJz05UeFc4YGQgbFPI8XsakPKx3HjNonItxElFy+QA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"react-freeze": "^1.0.0", "react-freeze": "^1.0.0",
"react-native-is-edge-to-edge": "^1.1.7", "react-native-is-edge-to-edge": "^1.1.7",
@@ -11796,7 +11992,6 @@
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.1.tgz", "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.1.tgz",
"integrity": "sha512-ZUD1xwc3Hwo4cOmOLumjJVoc7lEf9oQFlHnLmgccLC19fNm6LVEdtB+Cnip6gEi0PG3wfvVzskViEtrySQP8Fw==", "integrity": "sha512-ZUD1xwc3Hwo4cOmOLumjJVoc7lEf9oQFlHnLmgccLC19fNm6LVEdtB+Cnip6gEi0PG3wfvVzskViEtrySQP8Fw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"css-select": "^5.1.0", "css-select": "^5.1.0",
"css-tree": "^1.1.3", "css-tree": "^1.1.3",
@@ -11904,7 +12099,6 @@
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz",
"integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/use-sync-external-store": "^0.0.6", "@types/use-sync-external-store": "^0.0.6",
"use-sync-external-store": "^1.4.0" "use-sync-external-store": "^1.4.0"
@@ -11965,8 +12159,7 @@
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
"integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==",
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/redux-persist": { "node_modules/redux-persist": {
"version": "6.0.0", "version": "6.0.0",
@@ -13443,7 +13636,6 @@
"integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
"devOptional": true, "devOptional": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
+1
View File
@@ -34,6 +34,7 @@
"react-native-app-intro-slider": "^4.0.4", "react-native-app-intro-slider": "^4.0.4",
"react-native-bouncy-checkbox": "^4.1.3", "react-native-bouncy-checkbox": "^4.1.3",
"react-native-date-picker": "^5.0.13", "react-native-date-picker": "^5.0.13",
"react-native-element-dropdown": "^2.12.4",
"react-native-gesture-handler": "^2.30.0", "react-native-gesture-handler": "^2.30.0",
"react-native-gifted-charts": "^1.4.70", "react-native-gifted-charts": "^1.4.70",
"react-native-haptic-feedback": "^2.3.3", "react-native-haptic-feedback": "^2.3.3",
+22 -2
View File
@@ -12,8 +12,27 @@ export const apiCall = async <R, D = {}>(
): Promise<R> => { ): Promise<R> => {
try { try {
const token: any = store.getState().token.token; const token: any = store.getState().token.token;
console.log("url : ", url)
console.log("token : ", token) console.log("token : ", token)
// Generate curl command
let curlCmd = `curl -X ${method.toUpperCase()} "${url}"`;
if (token?.token) curlCmd += ` -H "Authentication: Bearer ${token.token}"`;
curlCmd += ` -H "Content-Type: ${contentType || 'application/json'}"`;
if (data) {
if (contentType === 'multipart/form-data') {
curlCmd += ` --form "${JSON.stringify(data).slice(1,-1).replace(/"/g, '\\"')}"`;
} else {
curlCmd += ` -d '${JSON.stringify(data)}'`;
}
}
if (params) {
curlCmd += ` ${Object.entries(params).map(([k,v]) => `-${k}=${v}`).join(' ')}`;
}
console.log("=== CURL ===");
console.log(curlCmd);
console.log("============");
const response = await axios({ const response = await axios({
method, method,
url, url,
@@ -26,7 +45,8 @@ export const apiCall = async <R, D = {}>(
'Content-Type': contentType || 'application/json', 'Content-Type': contentType || 'application/json',
}, },
}); });
console.log("url : ", url)
console.log("Api response",response)
return response.data; return response.data;
} catch (error: any) { } catch (error: any) {
const errorMessage = error?.response?.data?.error; const errorMessage = error?.response?.data?.error;
+137
View File
@@ -0,0 +1,137 @@
import React from 'react';
import { StyleSheet, Text, View, StyleProp, ViewStyle, TextStyle } from 'react-native';
import { Dropdown } from 'react-native-element-dropdown';
import { Shield } from 'lucide-react-native';
const colors = {
primary: '#F97316',
primaryLight: '#FDBA74',
primaryHighlight: '#f4f1efff',
secondary: '#1B4B66',
secondaryLight: '#639599',
success: '#22C55E',
error: '#EF4444',
warning: '#F59E0B',
info: '#3B82F6',
golden: '#FFD700',
white: '#FFFFFF',
black: '#000000',
darkText: '#2B2B2B',
grayText: '#6B7280',
lightText: '#9CA3AF',
border: '#E5E7EB',
lightGray: '#F9FAFB',
disabled: '#D1D5DB',
placeholder: '#9CA3AF',
backdrop: 'rgba(0,0,0,0.5)',
shadow: 'rgba(0,0,0,0.12)',
Orange: '#F97316',
OrangeLight: '#FDBA74',
OrangeSoft: '#FFF3E8',
darkGray: '#5f6368',
lightestGray: '#f1f3f4',
successLight: '#e6f4ea',
};
type DropdownItem = {
[key: string]: any;
};
type MyDropdownProps = {
label?: string;
data: DropdownItem[];
placeholder?: string;
labelField: string;
valueField: string;
value: any;
onChange: (item: DropdownItem) => void;
style?: StyleProp<ViewStyle>;
containerStyle?: StyleProp<ViewStyle>;
placeholderStyle?: StyleProp<TextStyle>;
selectedTextStyle?: StyleProp<TextStyle>;
focusedField?: boolean;
onFocus?: () => void;
onBlur?: () => void;
dropdownStyle?: StyleProp<ViewStyle>;
[key: string]: any;
};
const MyDropdown: React.FC<MyDropdownProps> = ({
label,
data,
placeholder = 'Select an option',
labelField,
valueField,
value,
onChange,
style,
containerStyle,
placeholderStyle,
selectedTextStyle,
focusedField,
onFocus,
onBlur,
dropdownStyle,
...rest
}) => {
return (
<View style={[{ zIndex: 4000 }, containerStyle]}>
{label && <Text style={styles.label}>{label}</Text>}
<Dropdown
data={data}
labelField={labelField}
valueField={valueField}
placeholder={placeholder}
value={value}
onChange={onChange}
style={[
styles.dropdown,
style,
{ borderColor: focusedField ? colors.primary : '#e0e0e0' },
]}
containerStyle={[styles.dropdownContainer, dropdownStyle]}
selectedTextStyle={[styles.selectedText, selectedTextStyle]}
placeholderStyle={[styles.placeholderText, placeholderStyle]}
onFocus={onFocus}
onBlur={onBlur}
search
searchPlaceholder="Search Class"
renderLeftIcon={() => (
<Shield
style={{ marginRight: 10 }}
color={focusedField ? colors.primary : '#aaa'}
size={20}
/>
)}
{...rest}
/>
</View>
);
};
export default MyDropdown;
const styles = StyleSheet.create({
label: {
marginVertical: 10,
color: colors.darkText,
},
dropdown: {
borderWidth: 1,
borderRadius: 8,
paddingHorizontal: 10,
paddingVertical: 12,
borderColor: colors.border,
backgroundColor: colors.white,
},
dropdownContainer: {
borderRadius: 12,
borderColor: colors.border,
},
selectedText: {
color: colors.darkText,
},
placeholderText: {
color: colors.placeholder,
},
});
@@ -0,0 +1,75 @@
import { StyleSheet, Text, TouchableOpacity, ViewStyle } from 'react-native';
import React from 'react';
import LinearGradient from 'react-native-linear-gradient';
import colors from '../../Constant/Color';
type PrimaryButtonProps = {
title: string;
onPress: () => void | any;
style?: ViewStyle;
disabled?: boolean;
};
const PrimaryButton: React.FC<PrimaryButtonProps> = ({ title, onPress, style, disabled }) => {
return (
<LinearGradient
colors={[
colors.primary, // #F97316 (Orange)
colors.primaryLight, // #FDBA74 (OrangeLight)
colors.OrangeLight, // #FDBA74 (backup)
colors.OrangeSoft // #FFF3E8 (super soft orange end)
]}
start={{ x: 0, y: 0 }}
end={{ x: 1, y: 1 }}
locations={[0.0, 0.4, 0.7, 1.0]}
style={[styles.primaryButton, style]}
>
<TouchableOpacity
style={styles.touchable}
onPress={onPress}
activeOpacity={0.82}
disabled={disabled}
>
<Text style={styles.buttonText}>{title}</Text>
</TouchableOpacity>
</LinearGradient>
);
};
export default PrimaryButton;
const styles = StyleSheet.create({
primaryButton: {
borderRadius: 14,
paddingVertical: 16,
paddingHorizontal: 28,
marginBottom: 20,
minHeight: 54,
// Orange-themed shadows
shadowColor: colors.primary,
shadowOffset: { width: 0, height: 6 },
shadowOpacity: 0.3,
shadowRadius: 12,
elevation: 10,
overflow: 'hidden',
},
touchable: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
buttonText: {
textAlign: 'center',
color: colors.white,
fontWeight: '800', // Extra bold for orange contrast
fontSize: 16,
letterSpacing: 0.3,
textShadowColor: 'rgba(0,0,0,0.2)',
textShadowOffset: { width: 0, height: 1 },
textShadowRadius: 2,
includeFontPadding: false,
},
});
+109
View File
@@ -0,0 +1,109 @@
import React, { useRef, useEffect } from 'react';
import {
View,
Text,
TouchableOpacity,
StyleSheet,
Animated,
} from 'react-native';
import colors from '../Constant/Color';
type StepProgressBarProps = {
currentStep: number;
steps: string[];
onStepPress?: (stepIndex: number) => void;
};
const StepProgressBar: React.FC<StepProgressBarProps> = ({
currentStep,
steps,
onStepPress = () => {},
}) => {
const animations = useRef<Animated.Value[]>(
steps.map(() => new Animated.Value(1))
).current;
useEffect(() => {
animations.forEach((anim, index) => {
Animated.timing(anim, {
toValue: index === currentStep ? 1.2 : 1,
duration: 300,
useNativeDriver: true,
}).start();
});
}, [currentStep]);
return (
<View style={styles.container}>
{steps.map((label, index) => {
const isActive = index === currentStep;
const isCompleted = index < currentStep;
return (
<TouchableOpacity
key={index}
onPress={() => onStepPress(index)}
style={styles.stepContainer}
activeOpacity={0.8}
>
<Animated.View
style={[
styles.circle,
isCompleted && styles.completedCircle,
isActive && styles.activeCircle,
{
transform: [{ scale: animations[index] }],
},
]}
/>
<Text
style={[
styles.label,
isCompleted && { color: '#4caf50' },
isActive && { color: '#2196f3' },
]}
>
{label}
</Text>
</TouchableOpacity>
);
})}
</View>
);
};
export default StepProgressBar;
const styles = StyleSheet.create({
container: {
flexDirection: 'row',
alignItems: 'center',
paddingVertical: 20,
flexWrap: 'wrap',
justifyContent: 'center',
},
stepContainer: {
alignItems: 'center',
width: 70,
},
circle: {
width: 50,
height: 5,
borderRadius: 25,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: colors.primary,
},
completedCircle: {
backgroundColor: '#4caf50',
},
activeCircle: {
backgroundColor: '#2196f3',
},
label: {
// marginTop: 6,
// fontSize: 12,
textAlign: 'center',
color: '#555',
},
});
@@ -0,0 +1,201 @@
import React, { ReactNode } from 'react';
import { View, Text, Modal, ScrollView, TouchableOpacity, StyleSheet, Dimensions } from 'react-native';
import { CheckCircle, X } from 'lucide-react-native'; // Updated icons
import colors from '../../Constant/Color';
type ModalProps = {
visible: boolean;
onClose: () => void;
onChecked: () => void
}
const TermsAndConditionsModal: React.FC<ModalProps> = ({ visible, onClose, onChecked }) => {
return (
<Modal
animationType="slide"
transparent={false}
visible={visible}
onRequestClose={onClose}
>
<View style={styles.container}>
<ScrollView contentContainerStyle={styles.scrollContainer}>
<View style={styles.header}>
<Text style={styles.title}>Terms & Conditions</Text>
<Text style={styles.subtitle}>Last updated: {new Date().toLocaleDateString()}</Text>
</View>
<View style={styles.content}>
<Section title="1. Acceptance of Terms">
<Text style={styles.paragraph}>
By accessing or using our services, you agree to be bound by these Terms and Conditions.
If you do not agree with any part of these terms, you must not use our services.
</Text>
</Section>
<Section title="2. User Responsibilities">
<Text style={styles.paragraph}>
You are responsible for maintaining the confidentiality of your account information and
for all activities that occur under your account. You agree to notify us immediately
of any unauthorized use of your account.
</Text>
</Section>
<Section title="3. Intellectual Property">
<Text style={styles.paragraph}>
All content included on our platform, such as text, graphics, logos, and software, is
the property of our company and protected by intellectual property laws. You may not
reproduce, distribute, or create derivative works without our express permission.
</Text>
</Section>
<Section title="4. Limitation of Liability">
<Text style={styles.paragraph}>
Our company shall not be liable for any indirect, incidental, special, or consequential
damages resulting from the use or inability to use our services, even if we have been
advised of the possibility of such damages.
</Text>
</Section>
<Section title="5. Privacy Policy">
<Text style={styles.paragraph}>
Your use of our services is also governed by our Privacy Policy, which explains how we
collect, use, and protect your personal information. Please review our Privacy Policy
to understand our practices.
</Text>
</Section>
<Section title="6. Changes to Terms">
<Text style={styles.paragraph}>
We reserve the right to modify these terms at any time. We will notify you of any changes
by posting the new Terms and Conditions on this page. Your continued use of the service
after such modifications constitutes your acceptance of the new terms.
</Text>
</Section>
<Section title="7. Governing Law">
<Text style={styles.paragraph}>
These Terms shall be governed by and construed in accordance with the laws of the
jurisdiction in which our company is registered, without regard to its conflict of law provisions.
</Text>
</Section>
<Text style={styles.footerText}>
If you have any questions about these Terms, please contact us at legal@company.com.
</Text>
</View>
{/* Accept Button */}
<TouchableOpacity
style={styles.acceptButton}
onPress={() => {
onClose();
onChecked();
}}
>
<CheckCircle color={colors.white} size={28} />
<Text style={styles.acceptButtonText}>I Accept</Text>
</TouchableOpacity>
</ScrollView>
</View>
</Modal>
);
};
// Reusable Section component
type SectionProps = {
title: string;
children: ReactNode;
};
const Section: React.FC<SectionProps> = ({ title, children }) => (
<View style={styles.section}>
<Text style={styles.sectionTitle}>{title}</Text>
{children}
</View>
);
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: colors.lightGray, // Updated with your colors
},
scrollContainer: {
paddingBottom: 120, // Space for accept button
flexGrow: 1,
},
header: {
backgroundColor: colors.primary, // Orange header
paddingVertical: 32,
paddingHorizontal: 24,
borderBottomLeftRadius: 24,
borderBottomRightRadius: 24,
marginBottom: 24,
shadowColor: colors.shadow,
shadowOffset: { width: 0, height: 6 },
shadowOpacity: 0.25,
shadowRadius: 12,
elevation: 8,
},
title: {
fontSize: 28,
fontWeight: '800',
color: colors.white,
marginBottom: 4,
},
subtitle: {
fontSize: 14,
color: 'rgba(255,255,255,0.85)',
},
content: {
paddingHorizontal: 24,
paddingBottom: 40,
},
section: {
marginBottom: 28,
},
sectionTitle: {
fontSize: 20,
fontWeight: '700',
color: colors.darkText,
marginBottom: 12,
},
paragraph: {
fontSize: 16,
lineHeight: 25,
color: colors.grayText,
},
footerText: {
fontSize: 15,
fontStyle: 'italic',
color: colors.lightText,
marginTop: 24,
textAlign: 'center',
lineHeight: 22,
},
acceptButton: {
position: 'absolute',
bottom: 40,
left: 24,
right: 24,
backgroundColor: colors.primary,
borderRadius: 16,
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
paddingVertical: 18,
paddingHorizontal: 20,
shadowColor: colors.shadow,
shadowOffset: { width: 0, height: 8 },
shadowOpacity: 0.35,
shadowRadius: 16,
elevation: 12,
},
acceptButtonText: {
color: colors.white,
fontSize: 18,
fontWeight: '700',
marginLeft: 12,
letterSpacing: 0.5,
},
});
export default TermsAndConditionsModal;
+2
View File
@@ -17,5 +17,7 @@ const NavigationString = {
ProceedToPurTender:'ProceedToPurTender', ProceedToPurTender:'ProceedToPurTender',
TenderBidding:'TenderBidding', TenderBidding:'TenderBidding',
ProceedToBidDetail:'ProceedToBidDetail', ProceedToBidDetail:'ProceedToBidDetail',
Signup:'Signup',
Registration:'Registration',
} }
export default NavigationString export default NavigationString
+18
View File
@@ -0,0 +1,18 @@
export const formatDateInput = (text: string) => {
// Remove any non-digit characters
const cleaned = text.replace(/\D/g, '');
let formatted = '';
if (cleaned.length <= 2) {
formatted = cleaned;
} else if (cleaned.length <= 4) {
formatted = `${cleaned.slice(0, 2)}/${cleaned.slice(2)}`;
} else {
formatted = `${cleaned.slice(0, 2)}/${cleaned.slice(
2,
4,
)}/${cleaned.slice(4, 8)}`;
}
return formatted;
};
+9
View File
@@ -0,0 +1,9 @@
import { Platform, ToastAndroid } from "react-native";
export const showToast = (message: string) => {
if (Platform.OS === 'android') {
ToastAndroid.show(message, ToastAndroid.SHORT);
} else {
console.log(message); // Fallback for iOS or other platforms
}
};
+3 -1
View File
@@ -29,8 +29,10 @@ export default function MainStack() {
}} }}
> >
<Stack.Screen name={NavigationString.Splash} component={Screens.Splash} options={option} /> <Stack.Screen name={NavigationString.Splash} component={Screens.Splash} options={option} />
<Stack.Screen name={NavigationString.Signup} component={Screens.Signup} options={option} />
<Stack.Screen name={NavigationString.Onboarding} component={Screens.Onboarding} options={option} /> <Stack.Screen name={NavigationString.Onboarding} component={Screens.Onboarding} options={option} />
<Stack.Screen name={NavigationString.Login} component={Screens.Login} options={option} /> <Stack.Screen name={NavigationString.Login} component={Screens.Login} options={option} />
<Stack.Screen name={NavigationString.Home} component={BottomTab} options={option} /> <Stack.Screen name={NavigationString.Home} component={BottomTab} options={option} />
<Stack.Screen name={NavigationString.PurchaseList} component={Screens.PurchaseList} options={option} /> <Stack.Screen name={NavigationString.PurchaseList} component={Screens.PurchaseList} options={option} />
<Stack.Screen name={NavigationString.Emd} component={Screens.Emd} options={option} /> <Stack.Screen name={NavigationString.Emd} component={Screens.Emd} options={option} />
@@ -41,7 +43,7 @@ export default function MainStack() {
<Stack.Screen name={NavigationString.TenderBidding} component={Screens.TenderBidding} options={option} /> <Stack.Screen name={NavigationString.TenderBidding} component={Screens.TenderBidding} options={option} />
<Stack.Screen name={NavigationString.ProceedToBidDetail} component={Screens.ProceedToBidDetail} options={option} /> <Stack.Screen name={NavigationString.ProceedToBidDetail} component={Screens.ProceedToBidDetail} options={option} />
<Stack.Screen name={NavigationString.StartReverseBidding} component={Screens.StartReverseBidding} options={option} /> <Stack.Screen name={NavigationString.StartReverseBidding} component={Screens.StartReverseBidding} options={option} />
<Stack.Screen name={NavigationString.Registration} component={Screens.Registration} options={option} />
</Stack.Navigator> </Stack.Navigator>
); );
} }
+208 -71
View File
@@ -1,5 +1,5 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { View, Text, Dimensions, TextInput, TouchableOpacity, StyleSheet, StatusBar, KeyboardAvoidingView, Platform, ScrollView } from 'react-native'; import { View, Text, Dimensions, TextInput, TouchableOpacity, StyleSheet, KeyboardAvoidingView, Platform, ScrollView, Alert } from 'react-native';
import LinearGradient from 'react-native-linear-gradient'; import LinearGradient from 'react-native-linear-gradient';
import { Formik } from 'formik'; import { Formik } from 'formik';
import * as Yup from 'yup'; import * as Yup from 'yup';
@@ -7,17 +7,18 @@ import Animated, { FadeInUp, FadeInDown } from 'react-native-reanimated';
import { Mail, Lock, Eye, EyeOff, ArrowRight } from 'lucide-react-native'; import { Mail, Lock, Eye, EyeOff, ArrowRight } from 'lucide-react-native';
import colors from '../../Constant/Color'; import colors from '../../Constant/Color';
import ImagePath from '../../Constant/ImagePath'; import ImagePath from '../../Constant/ImagePath';
import { useLogin } from '../../Services/BBPS/Hooks'; import { useAuctionLogin, usefetchMasterData, useGetDesignation, useLogin, useRagistrationState } from '../../Services/BBPS/Hooks';
import { useDispatch } from 'react-redux'; import { useDispatch } from 'react-redux';
import { setToken } from '../../Redux/Slices/Token'; import { setToken } from '../../Redux/Slices/Token';
import { showErrorAlert } from '../../Constant/ShowDailog'; import { showErrorAlert } from '../../Constant/ShowDailog';
import { useNavigation, CommonActions } from '@react-navigation/native'; import { useNavigation, CommonActions } from '@react-navigation/native';
import NavigationString from '../../Constant/NavigationString'; import NavigationString from '../../Constant/NavigationString';
import ReactNativeHapticFeedback from "react-native-haptic-feedback"; import ReactNativeHapticFeedback from 'react-native-haptic-feedback';
import { Loader } from '../../Component/Index'; import { Loader } from '../../Component/Index';
const hapticOptions = { const hapticOptions = {
enableVibrateFallback: true, enableVibrateFallback: true,
ignoreAndroidSystemSettings: false ignoreAndroidSystemSettings: false,
}; };
const { height, width } = Dimensions.get('window'); const { height, width } = Dimensions.get('window');
@@ -27,51 +28,145 @@ const LoginSchema = Yup.object().shape({
}); });
const Login = () => { const Login = () => {
const Navigation: any = useNavigation() const Navigation: any = useNavigation();
const Dispatch = useDispatch() const Dispatch = useDispatch();
const [passwordVisible, setPasswordVisible] = React.useState(false); const [passwordVisible, setPasswordVisible] = React.useState(false);
const [loading, setLoading] = useState(false) const [activeType, setActiveType] = useState<'tender' | 'auction'>('tender');
const { mutate, isPending } = useLogin() const [loginLoading, setLoginLoading] = useState(false);
const [auctionLoading, setAuctionLoading] = useState(false);
const { mutate: loginMutate } = useLogin();
const { mutate: auctionMutate } = useAuctionLogin();
const {data}=useGetDesignation();
const { mutate: registrationStateMutate } = useRagistrationState();
const HandleLogin = async (values: any) => { const { data: MasterData}=usefetchMasterData()
setLoading(true) console.log("master data ",MasterData)
mutate({ password: values.password, emailAdd: values.email }, {
onSuccess: (res) => { const handleGetData = async () => {
if (res.statusCode == 200) {
console.log("login token : ", res)
Dispatch(setToken({ ...res.data, token: res.token })) registrationStateMutate(undefined, {
Navigation.dispatch( onSuccess: (res: any) => {
CommonActions.reset({ console.log('Registration status response try :', res);
index: 0,
routes: [ if (res?.statusCode === 200) {
{ name: NavigationString.Home }, const { registrationStatus, contOtherId, contOrganization } = res.data;
], const params = { otherId: contOtherId, orgType: contOrganization };
})
); console.log('==========pop', registrationStatus);
switch (registrationStatus) {
case null:
case undefined:
Navigation.replace(NavigationString.Registration);
break;
case 'Pending':
// handleRoute(params);
break;
case 'Complete':
case 'Completed':
Navigation.dispatch(
CommonActions.reset({
index: 0,
routes: [{ name: NavigationString.Home }],
}),
);
break;
default:
{
console.log("attempting navigation to Ragistration")
Navigation.replace(NavigationString.Registration);}
break;
} }
setLoading(false) return;
},
onError: (err) => {
showErrorAlert(err.message)
setLoading(false)
} }
})
} if (res?.statusCode === 404) {
console.warn('Registration API returned 404');
Navigation.replace('Registration');
return;
}
Navigation.replace('Registration');
},
onError: (error: any) => {
console.error('Registration status error catch :', error);
if (error?.response?.status === 500) {
Alert.alert('Server error', 'Something went wrong. Please try again later.');
return;
}
if (error?.request) {
Alert.alert('Network Error', 'Please check your internet connection.');
return;
}
Alert.alert('Error', error?.message || 'Something went wrong');
Navigation.replace('Registration');
},
});
};
const HandleLogin = async (values: any) => {
if (activeType === 'tender') {
setLoginLoading(true);
loginMutate(
{ password: values.password, emailAdd: values.email },
{
onSuccess: res => {
if (res.statusCode == 200) {
Dispatch(setToken({ ...res.data, token: res.token }));
handleGetData();
}
setLoginLoading(false);
},
onError: err => {
showErrorAlert(err.message);
setLoginLoading(false);
},
},
);
} else {
setAuctionLoading(true);
auctionMutate(
{ password: values.password, emailAdd: values.email },
{
onSuccess: res => {
if (res.statusCode == 200) {
Dispatch(setToken({ ...res.data, token: res.token }));
Navigation.dispatch(
CommonActions.reset({
index: 0,
routes: [{ name: NavigationString.Home }],
}),
);
}
setAuctionLoading(false);
},
onError: err => {
showErrorAlert(err.message);
setAuctionLoading(false);
},
},
);
}
};
const isLoading = activeType === 'tender' ? loginLoading : auctionLoading;
return ( return (
<View style={styles.container}> <View style={styles.container}>
<KeyboardAvoidingView <KeyboardAvoidingView behavior={Platform.OS === 'ios' ? 'padding' : 'height'} style={{ flex: 1 }}>
behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
style={{ flex: 1 }}
>
<ScrollView contentContainerStyle={{ flexGrow: 1 }} bounces={false}> <ScrollView contentContainerStyle={{ flexGrow: 1 }} bounces={false}>
{/* Header */}
<View style={styles.header}> <View style={styles.header}>
<LinearGradient <LinearGradient colors={[colors.primary, colors.primaryLight || '#4c669f']} style={styles.gradient}>
colors={[colors.primary, colors.primaryLight || '#4c669f']}
style={styles.gradient}
>
<Animated.Image <Animated.Image
entering={FadeInDown.delay(200).duration(800)} entering={FadeInDown.delay(200).duration(800)}
source={ImagePath.Icon.Logo} source={ImagePath.Icon.Logo}
@@ -81,24 +176,42 @@ const Login = () => {
</LinearGradient> </LinearGradient>
</View> </View>
<Animated.View <Animated.View entering={FadeInUp.springify().damping(15)} style={styles.formContainer}>
entering={FadeInUp.springify().damping(15)}
style={styles.formContainer}
>
<View style={styles.sheetHandle} /> <View style={styles.sheetHandle} />
<View style={styles.toggleWrapper}>
<View style={styles.toggleContainer}>
<TouchableOpacity
activeOpacity={0.8}
style={[styles.toggleButton, activeType === 'tender' && styles.toggleButtonActive]}
onPress={() => setActiveType('tender')}
disabled={isLoading}
>
<Text style={[styles.toggleText, activeType === 'tender' && styles.toggleTextActive]}>Tender</Text>
</TouchableOpacity>
<TouchableOpacity
activeOpacity={0.8}
style={[styles.toggleButton, activeType === 'auction' && styles.toggleButtonActive]}
onPress={() => setActiveType('auction')}
disabled={isLoading}
>
<Text style={[styles.toggleText, activeType === 'auction' && styles.toggleTextActive]}>Auction</Text>
</TouchableOpacity>
</View>
</View>
<Text style={styles.title}>Welcome Back</Text> <Text style={styles.title}>Welcome Back</Text>
<Text style={styles.subtitle}>Enter your details to access your account</Text> <Text style={styles.subtitle}>Enter your details to access your account</Text>
<Formik <Formik
initialValues={{ email: '', password: '' }} initialValues={{ email: '', password: '' }}
validationSchema={LoginSchema} validationSchema={LoginSchema}
onSubmit={(values) => { onSubmit={values => {
HandleLogin(values) HandleLogin(values);
}} }}
> >
{({ handleChange, handleBlur, handleSubmit, values, errors, touched }) => ( {({ handleChange, handleBlur, handleSubmit, values, errors, touched }) => (
<View style={{}}> <View>
<Text style={styles.label}>Email Address</Text> <Text style={styles.label}>Email Address</Text>
<View style={[styles.inputWrapper, touched.email && errors.email && styles.inputError]}> <View style={[styles.inputWrapper, touched.email && errors.email && styles.inputError]}>
<Mail size={20} color={touched.email && !errors.email ? colors.primary : colors.grayText} /> <Mail size={20} color={touched.email && !errors.email ? colors.primary : colors.grayText} />
@@ -140,11 +253,11 @@ const Login = () => {
<TouchableOpacity <TouchableOpacity
activeOpacity={0.8} activeOpacity={0.8}
onPress={() => { onPress={() => {
ReactNativeHapticFeedback.trigger("impactLight", hapticOptions); ReactNativeHapticFeedback.trigger('impactLight', hapticOptions);
handleSubmit(); handleSubmit();
}} }}
style={styles.buttonShadow} style={styles.buttonShadow}
disabled={isLoading}
> >
<LinearGradient <LinearGradient
colors={[colors.primary, colors.primaryLight || '#4c669f']} colors={[colors.primary, colors.primaryLight || '#4c669f']}
@@ -152,13 +265,25 @@ const Login = () => {
end={{ x: 1, y: 0 }} end={{ x: 1, y: 0 }}
style={styles.button} style={styles.button}
> >
{ {isLoading ? (
loading ? <Loader color={colors.white} size='small'/> : <> <Loader color={colors.white} size="small" />
) : (
<>
<Text style={styles.buttonText}>Sign In</Text> <Text style={styles.buttonText}>Sign In</Text>
<ArrowRight size={20} color={colors.white} style={{ marginLeft: 8, marginTop: 5 }} /></> <ArrowRight size={20} color={colors.white} style={{ marginLeft: 8, marginTop: 5 }} />
} </>
)}
</LinearGradient> </LinearGradient>
</TouchableOpacity> </TouchableOpacity>
<View style={{ alignItems: 'center', marginTop: 16 }}>
<View style={{ flexDirection: 'row' }}>
<Text>Don&apos;t have an account? </Text>
<TouchableOpacity onPress={() => Navigation.navigate('Signup')}>
<Text style={{ color: colors.primary, fontWeight: '700' }}>Sign up</Text>
</TouchableOpacity>
</View>
</View>
</View> </View>
)} )}
</Formik> </Formik>
@@ -195,12 +320,10 @@ const styles = StyleSheet.create({
borderTopRightRadius: 35, borderTopRightRadius: 35,
paddingHorizontal: 28, paddingHorizontal: 28,
paddingTop: 10, paddingTop: 10,
// Shadow for iOS
shadowColor: '#000', shadowColor: '#000',
shadowOffset: { width: 0, height: -10 }, shadowOffset: { width: 0, height: -10 },
shadowOpacity: 0.1, shadowOpacity: 0.1,
shadowRadius: 10, shadowRadius: 10,
// Elevation for Android
elevation: 20, elevation: 20,
}, },
sheetHandle: { sheetHandle: {
@@ -209,8 +332,37 @@ const styles = StyleSheet.create({
backgroundColor: '#E0E0E0', backgroundColor: '#E0E0E0',
borderRadius: 10, borderRadius: 10,
alignSelf: 'center', alignSelf: 'center',
marginBottom: 16,
},
toggleWrapper: {
alignItems: 'center',
marginBottom: 20, marginBottom: 20,
}, },
toggleContainer: {
flexDirection: 'row',
backgroundColor: '#F1F3F5',
borderRadius: 20,
padding: 4,
width: width * 0.5,
},
toggleButton: {
flex: 1,
paddingVertical: 8,
borderRadius: 16,
alignItems: 'center',
justifyContent: 'center',
},
toggleButtonActive: {
backgroundColor: colors.primary,
},
toggleText: {
fontSize: 14,
fontWeight: '600',
color: '#7C7C7C',
},
toggleTextActive: {
color: colors.white,
},
title: { title: {
fontSize: 28, fontSize: 28,
fontWeight: '800', fontWeight: '800',
@@ -287,21 +439,6 @@ const styles = StyleSheet.create({
fontSize: 18, fontSize: 18,
fontWeight: '700', fontWeight: '700',
}, },
footer: {
flexDirection: 'row',
justifyContent: 'center',
marginTop: 30,
paddingBottom: 20,
},
footerText: {
color: '#7C7C7C',
fontSize: 15,
},
signUpText: {
color: colors.primary,
fontWeight: '700',
fontSize: 15,
},
}); });
export default Login; export default Login;
+866
View File
@@ -0,0 +1,866 @@
import React, { useEffect, useState } from 'react';
import { View, Text, TouchableOpacity, StyleSheet, Platform, KeyboardAvoidingView, SafeAreaView, ScrollView, BackHandler, ToastAndroid, Button, Alert } from 'react-native';
// import AntDesign from 'react-native-vector-icons/AntDesign';
import { ArrowLeft } from 'lucide-react-native';
import { NavigationProp, RouteProp, useNavigation, useRoute } from '@react-navigation/native';
import AsyncStorage from '@react-native-async-storage/async-storage';
// import { sendAadhaarOtp, verifyAadhaarOtp, verifyGstNumber, verifyPanHandlerRes } from '../../utils/helper/ragisterationApiCalls';
// import { getAllMsMeOrg, getCityDropdown, getClassDropdown, getMsmeDropdown, getOrgDropdown, getSocialDropdown, getStateDropdown } from '../../utils/helper/dropdownApis';
import { ApiResponse, DocumentsType, FormDataType, OrgType, UserData } from './types/types';
import { pick } from '@react-native-documents/picker';
// import { REJ_STAGE_TWO } from '../../utils/services/apiUrl';
// import LoaderModel from '../../component/LoaderModal';
import axios from 'axios';
import StageOne from './ragistrationStages/StageOne';
import StageTwo from './ragistrationStages/StageTwo';
import StageZero from './ragistrationStages/StageZero';
import StageThree from './ragistrationStages/StageThree';
import StageFour from './ragistrationStages/StageFour';
import colors from '../../Constant/Color';
import PrimaryButton from '../../Component/PrimaryButton/PrimaryButton';
import StepProgressBar from '../../Component/StepProgressBar';
import { formatDateInput } from '../../Helper/formatDateInput';
import { showToast } from '../../Constant/ShowDailog';
import { useCityDropdown, useContractorStageTwoSubmit, usefetchMasterData, useSendAadhaarOtp, useVerifyAadhaarOtp, useVerifyGstNumber, useVerifyPan } from '../../Services/BBPS/Hooks';
import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { useSelector } from 'react-redux';
type RouteParams = {
userData?: {
firstName?: string;
lastName?: string;
mobileNo?: string;
middleName?: string;
email?: string;
};
};
const Registration: React.FC = () => {
const navigation = useNavigation<any>();
const { params } = useRoute<RouteProp<Record<string, RouteParams>, string>>();
const userData = params as RouteParams;
const [stage, setStage] = useState(0);
const insets = useSafeAreaInsets();
const [focusedField, setFocusedField] = useState<null | string>(null);
const [selectedOrg, setSelectedOrg] = useState<OrgType>(0);
const [documents, setDocuments] = useState<DocumentsType>({
panCard: null,
gstnCertificate: null,
registrationCertificate: null,
msmefile: null,
constractorClass: null,
aadharCard: null,
});
const [formData, setFormData] = useState<FormDataType>({
firstName: '',
middleName: '',
lastName: '',
email: '',
mobileNumber: '',
organizationName: '',
officialWebsite: '',
registrationNumber: '',
contractorClass: '',
orgType: '',
registrationDetail: '',
socialCategory: '',
orgPanNumber: '',
dateOfIncorp: '',
orgPanName: '',
gstnNo: '',
aadhaarNumber: '',
aadhaarOtp: '',
address: '',
state: '',
city: '',
pinCode: '',
agentContact2: '',
expiryDate: '',
});
const [loader, setloader] = useState(false);
const [aadhaarVerifying, setAadhaarVerifying] = useState(false);
const [aadhaarVerified, setAadhaarVerified] = useState(false);
const [panVerifying, setPanVerifying] = useState(false);
const [panVerified, setPanVerified] = useState(false);
const [contractorClassItems, setContractorClassItems] = useState([]);
const [allOrganizations, setAllOrganizations] = useState([]);
const [allSocialCategories, setAllSocialCategories] = useState([]);
const [allMsmeOrgs, setAllMsmeOrgs] = useState([]);
const [adharreference, setadharreference] = useState('');
const [adharotpsend, setadharotpsend] = useState(false);
const [gstverifying, setgstverifying] = useState(false);
const [gstverified, setgstverified] = useState(false);
const [states, setstates] = useState([]);
const [cities, setCities] = useState([]);
const [allMSME, setAllMSME] = useState([]);
const [loading, setLoading] = useState(false);
const { mutateAsync: verifyPanHandlerRes } = useVerifyPan();
const { mutateAsync: sendAadhaarOtp } = useSendAadhaarOtp();
const { mutateAsync: verifyAadhaarOtp } = useVerifyAadhaarOtp();
const { mutateAsync: verifyGstNumber } = useVerifyGstNumber();
const { mutateAsync: contractorStageTwoSubmit } = useContractorStageTwoSubmit();
const { data: masterData } = usefetchMasterData();
console.log("master",masterData)
useEffect(() => {
if (!masterData?.data) return;
const contractorClasses = masterData.data.contractorClasses || [];
const msmeOrgs = masterData.data.msmeOrgs || [];
const mappedmsmeOrgs = msmeOrgs.map((item:any)=> ({
label: item.comName,
value: item.msmeId,
}));
const orgs = masterData.data.organizationTypes || [];
const mappedcontractorClasses = contractorClasses.map((item:any)=> ({
label: item.contClassName || '',
value: item.contClassId,
}));
const mapped = orgs.map((item:any)=> ({
label: item.organizationType,
value: item.orgId,
}));
const socialCategories = masterData.data.socialCategories || [];
const mappedsocialCategories = socialCategories.map((item:any)=> ({
label: item.categoryName,
value: item.socialCategoryId,
}));
const stateList = masterData.data.states || [];
const mappedStates = stateList.map((item:any)=> ({
label: item.stateName,
value: item.stateId,
}));
setAllMsmeOrgs(mappedmsmeOrgs);
setAllSocialCategories(mappedsocialCategories);
setContractorClassItems(mappedcontractorClasses);
setAllOrganizations(mapped);
setstates(mappedStates);
}, [masterData?.data]);
const { mutate: cityDropdownMutate } = useCityDropdown();
const { data: MasterData}=usefetchMasterData()
const user = useSelector((state: any) => state.token.token);
const steps = ['', '', '', '', ''];
const dropdownStyle = {
borderWidth: 1,
borderColor: '#e0e0e0',
borderRadius: 12,
paddingHorizontal: 14,
height: 50,
backgroundColor: '#fff',
marginBottom: 10,
}
useEffect(() => {
const fetchUserData = async (user:any) => {
console.log("hitting it ")
try {
console.log("hitting it 1 ")
console.log("object====",user)
if (user) {
const parsedUser = user;
console.log(parsedUser);
setFormData(prev => ({
...prev,
firstName: parsedUser?.firstName || userData?.userData?.firstName,
lastName: parsedUser?.lastName || userData?.userData?.lastName,
mobileNumber: parsedUser?.mobileNo || userData?.userData?.mobileNo,
middleName: parsedUser?.middleName || userData?.userData?.middleName,
email: parsedUser?.email || userData?.userData?.email,
}));
console.log('User Data from Storage:', parsedUser);
} else {
console.log('No user data found');
}
} catch (error) {
console.error('Error fetching user data:', error);
}
};
fetchUserData(user);
}, []);
const isPANLinkedToGSTIN = (pan: string, gstin: string): { valid: boolean; message: string } => {
pan = pan.toUpperCase();
gstin = gstin.toUpperCase();
const panRegex = /^[A-Z]{5}[0-9]{4}[A-Z]$/;
const gstinRegex = /^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][1-9A-Z]Z[0-9A-Z]$/;
if (!panRegex.test(pan)) {
return { valid: false, message: "Invalid PAN format. It should be like 'ABCDE1234F'." };
}
// if (!gstinRegex.test(gstin)) {
// return { valid: false, message: "Invalid GSTIN format. It should be like '22ABCDE1234F1Z5'." };
// }
// const gstinPAN = gstin.slice(2, 12); // Extract PAN part from GSTIN
// if (pan !== gstinPAN) {
// return {
// valid: false,
// message: "PAN does not match the PAN embedded in GSTIN.",
// };
// }
return { valid: true, message: 'PAN and GSTIN are correctly linked.' };
};
const handleChange = (field: string, value: string) => {
setFormData(prev => ({ ...prev, [field]: value }));
};
const verifyPanHandler = async () => {
setPanVerifying(true); // Start loading
const payload = {
dob: formData?.dateOfIncorp.trim(),
name: formData?.orgPanName.trim(),
panNumber: formData?.orgPanNumber.trim(),
};
const result = await verifyPanHandlerRes(payload);
if (result) {
setPanVerified(true);
} else {
setPanVerified(false);
}
setPanVerifying(false); // Stop loading
};
const sendAdharOTPHandler = async (text: string) => {
console.log('Sending Aadhaar OTP...');
setAadhaarVerifying(true);
setadharreference('');
const payload = {
aadhaarNumber: text.trim(),
};
const response = await sendAadhaarOtp(payload);
if (response) {
setadharotpsend(true);
setadharreference(response);
} else {
setadharotpsend(false);
ToastAndroid.show('Failed to send Aadhaar OTP', ToastAndroid.SHORT);
}
setAadhaarVerifying(false);
};
const verifyAdharOtpHandler = async () => {
if (formData?.aadhaarOtp?.length !== 6) {
ToastAndroid.show('Please enter a valid 6-digit OTP', ToastAndroid.SHORT);
return;
}
setAadhaarVerifying(true);
const payload = {
otp: formData.aadhaarOtp,
refNumber: adharreference,
};
const response = await verifyAadhaarOtp(payload);
if (response) {
setAadhaarVerified(true);
ToastAndroid.show('Aadhaar Verified', ToastAndroid.SHORT);
} else {
ToastAndroid.show('Verification failed', ToastAndroid.SHORT);
}
setAadhaarVerifying(false);
};
const verifyGSTHandler = async () => {
setgstverifying(true);
const payload = {
gstNumber: formData?.gstnNo.trim(),
};
const response = await verifyGstNumber(payload);
if (response) {
setgstverified(true);
} else {
ToastAndroid.show('GST verification failed', ToastAndroid.SHORT);
}
setgstverifying(false);
};
const handleDocumentPick = async (field: string) => {
try {
const response = await pick({
type: 'application/pdf',
allowMultiSelection: false,
presentationStyle: 'fullScreen',
});
if (response && response?.length > 0) {
const selectedFile = response[0];
setDocuments(prev => ({
...prev,
[field]: selectedFile,
}));
}
} catch (err) {
console.error('Document pick error:', err);
}
};
const handleSubmit = async () => {
setLoading(true);
const dtoData = {
agentAddress: formData.address,
agentCity: formData.city,
agentState: formData.state,
agentPincode: formData.pinCode,
agentWebsite: formData.officialWebsite,
agentContact2: formData.agentContact2,
indianOrgName: formData.organizationName,
contractorClass: formData.contractorClass,
contOrganization: formData.orgType,
expiryDate: formData.expiryDate,
msmeOrg: formData.registrationDetail,
socialCategory: formData.socialCategory,
agentRegno: formData.registrationNumber,
orgPANdob: formData.dateOfIncorp,
orgPANname: formData.orgPanName,
orgPAN: formData.orgPanNumber,
comAadharNo: formData.aadhaarNumber,
gistnNo: formData.gstnNo,
};
console.log('Form Data for registration',formData);
try {
const fileData = new FormData();
fileData.append('requestDto', JSON.stringify(dtoData));
fileData.append('aadharcardfile', documents.aadharCard as any);
fileData.append('conclassfile', documents.constractorClass as any);
fileData.append('gistnfile', documents.gstnCertificate as any);
fileData.append('msmefile', documents.registrationCertificate as any);
fileData.append('pancardfile', documents.panCard as any);
fileData.append('regfile', documents.registrationCertificate as any);
console.log('File Data for registration',fileData);
const res = await contractorStageTwoSubmit(fileData);
console.log('Register contractor Response : ', res);
if (res.status === 200) {
if (res) {
showToast('Form submitted successfully!');
console.log('response?.data?.contOtherId : ', res?.data?.contOtherId);
const orgType = selectedOrg;
const params = { otherId: res?.data?.contOtherId, orgType: orgType };
if ([4, 5, 6].includes(orgType)) {
navigation.replace('StageThree' as never, params as never);
} else if (orgType === 7) {
console.log('org type else if : ', orgType);
navigation.replace('PartnerShip' as never, { otherId: res?.data?.contOtherId } as never);
} else {
console.log('org type else : ', orgType);
navigation.replace('Dashboard' as never);
}
} else {
showToast('Form submission failed');
}
} else {
showToast(res.message || 'Form submission failed. Please try again.');
}
} catch (error: any) {
if (axios.isAxiosError(error)) {
console.log('11111', error.response?.status);
console.log('22222', error.response?.data);
console.log('3333333', error.response?.headers);
} else {
console.error('Unexpected error', error);
}
console.error('Form submission failed:', error);
showToast(error.message || 'Form submission failed. Please try again.');
} finally {
setLoading(false);
}
};
// const fetchAllMSME = async () => {
// try {
// console.log('Fetching MSME');
// const msmeOption = await getAllMsMeOrg();
// console.log('msme options fetched:', msmeOption);
// setAllMSME(msmeOption);
// } catch (error) {
// setAllMSME([]);
// console.error('Error in city fetch:', error);
// }
// };
const fetchCity = async (stateId: number) => {
cityDropdownMutate(stateId, {
onSuccess: (data) => {
console.log('City options fetched:', data);
// const cityList = data.data || [];
// const mappedCity = cityList.map((item:any)=> ({
// label: item.name,
// value: item.id,
// }));
setCities(data);
},
onError: (error) => {
setCities([]);
console.error('Error in city fetch:', error);
}
});
// try {
// console.log('Fetching cities for state ID:', stateId);
// console.log('City options fetched:', cityOptions);
// setCities(cityOptions);
// } catch (error) {
// setCities([]);
// console.error('Error in city fetch:', error);
// }
};
// const contactorClassHandler = async () => {
// try {
// setloader(true);
// const mappedItems = await getClassDropdown();
// console.log(mappedItems, 'Contractor class items');
// setContractorClassItems(mappedItems);
// } catch (error) {
// console.log('Contractor class fetch error:', error);
// } finally {
// setloader(false);
// }
// };
// const contactorORG = async () => {
// try {
// setloader(true);
// const mappedItems = await getOrgDropdown();
// setAllOrganizations(mappedItems);
// } catch (error) {
// console.log('Contractor ORG fetch error:', error);
// } finally {
// setloader(false);
// }
// };
// const contactorRegistration = async () => {
// try {
// setloader(true);
// const mappedItems = await getMsmeDropdown();
// setAllMsmeOrgs(mappedItems);
// } catch (error) {
// console.log('Contractor ORG fetch error:', error);
// } finally {
// setloader(false);
// }
// };
console.log('formdata : ', formData);
// const contactorSocial = async () => {
// try {
// setloader(true);
// const mappedItems = await getSocialDropdown();
// setAllSocialCategories(mappedItems);
// } catch (error) {
// console.log('Contractor ORG fetch error:', error);
// } finally {
// setloader(false);
// }
// };
// const allState = async () => {
// try {
// setloader(true);
// const mappedItems = await getStateDropdown();
// setstates(mappedItems);
// } catch (error) {
// console.log('all states error:', error);
// } finally {
// setloader(false);
// }
// };
// useEffect(() => {
// contactorClassHandler();
// contactorORG();
// contactorRegistration();
// contactorSocial();
// allState();
// fetchAllMSME();
// }, []);
useEffect(() => {
if (formData?.state) {
fetchCity(Number(formData.state));
}
}, [formData?.state]);
useEffect(() => {
const backHandler = BackHandler.addEventListener('hardwareBackPress', () => {
if (stage > 1) {
setStage(prev => prev - 1);
return true;
} else {
return false;
}
});
return () => backHandler.remove();
}, [stage]);
const validateStage = (stage: number) => {
console.log(stage, 'validateStage');
switch (stage) {
case 0:
if (!formData.organizationName?.trim()) {
showToast('Please fill all required details.');
return false;
}
return true;
case 1:
if (selectedOrg == 8) {
if (!formData.orgType || !formData.socialCategory) {
showToast('Please enter all valid details.');
return false;
}
} else {
if (
!formData.registrationNumber ||
!formData.registrationDetail ||
!formData.socialCategory ||
!formData.orgType
) {
showToast('Please enter all valid details.');
return false;
}
}
return true;
case 2:
if (
!formData.orgPanNumber ||
!formData.dateOfIncorp ||
!formData.orgPanName ||
(selectedOrg == 8 && !formData.gstnNo) ||
!formData.aadhaarNumber ||
!formData.aadhaarOtp
) {
Alert.alert('aadhar otp : ', formData?.aadhaarOtp);
showToast('Please fill all required KYC and Aadhaar details.');
return false;
}
if (formData.aadhaarNumber.length !== 12) {
showToast('Aadhaar number must be 12 digits.');
return false;
}
if (formData.aadhaarOtp.length !== 6) {
showToast('OTP must be 6 digits.');
return false;
}
return true;
case 3:
if (!formData.address || !formData.state || !formData.city || !formData.pinCode) {
showToast('Please fill all required address details.');
return false;
}
if (formData.pinCode.length !== 6) {
showToast('Please enter a valid 6-digit pin code.');
return false;
}
return true;
case 4:
if (selectedOrg == 8) {
if (!documents.panCard || !documents.aadharCard) {
showToast('Please upload all required documents.');
return false;
}
} else {
if (formData?.contractorClass !== 1) {
if (!documents.constractorClass) {
showToast('Please upload CONTRACTOR CLASS documents.');
return false;
}
}
if (formData?.registrationDetail !== 3) {
if (!documents.msmefile) {
showToast('Please upload MSME FILE.');
return false;
}
}
if (!documents.gstnCertificate || !documents.registrationCertificate) {
showToast('Please upload all required documents.');
return false;
}
}
return true;
default:
return true;
}
};
return (
<View style={{ flex: 1, backgroundColor: colors.white }}>
<KeyboardAvoidingView
style={{ flex: 1 }}
behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
keyboardVerticalOffset={40}
>
<ScrollView contentContainerStyle={styles.scrollContainer} keyboardShouldPersistTaps="handled" bounces={false}>
<View style={{ paddingBottom: 20, marginTop: insets.top, flex: 1 }}>
<TouchableOpacity
onPress={() => {
if (stage > 0) {
setStage(prev => prev - 1);
}
}}
style={styles.backBtn}
>
{/* Replaced AntDesign with Lucide ArrowLeft */}
<ArrowLeft size={25} color={colors.primary} />
</TouchableOpacity>
<StepProgressBar currentStep={stage} steps={steps} />
{stage === 0 && (
<StageZero
formData={formData}
handleChange={(key: string, value: string) =>
handleChange(key as keyof FormDataType, value)
}
focusedField={focusedField}
setFocusedField={setFocusedField}
styles={styles}
/>
)}
{stage === 1 && (
<StageOne
formData={formData}
handleChange={(key: string, value: string) =>
handleChange(key as keyof FormDataType, value)
}
focusedField={focusedField}
setFocusedField={setFocusedField}
contractorClassItems={contractorClassItems}
allOrganizations={allOrganizations}
allMsmeOrgs={allMsmeOrgs}
allSocialCategories={allSocialCategories}
allMSME={allMSME}
dropdownStyle={dropdownStyle}
setSelectedOrg={setSelectedOrg}
selectedOrg={selectedOrg}
/>
)}
{stage === 2 && (
<StageTwo
formData={formData}
handleChange={(key: string, value: string) =>
handleChange(key as keyof FormDataType, value)
}
focusedField={focusedField}
setFocusedField={setFocusedField}
panVerified={panVerified}
setPanVerified={setPanVerified}
verifyPanHandler={verifyPanHandler}
panVerifying={panVerifying}
aadhaarVerified={aadhaarVerified}
setAadhaarVerified={setAadhaarVerified}
sendAdharOTPHandler={sendAdharOTPHandler}
adharotpsend={adharotpsend}
setadharotpsend={setadharotpsend}
verifyAdharOtpHandler={verifyAdharOtpHandler}
aadhaarVerifying={aadhaarVerifying}
verifyGSTHandler={verifyGSTHandler}
gstverifying={gstverifying}
color={colors}
styles={styles}
formatDateInput={formatDateInput}
selectedOrg={selectedOrg}
/>
)}
{stage === 3 && (
<StageThree
formData={formData}
handleChange={(key: string, value: string) =>
handleChange(key as keyof FormDataType, value)
}
setFocusedField={setFocusedField}
focusedField={focusedField}
states={states}
cities={cities}
fetchCity={() => {
fetchCity(Number(formData.state))}}
dropdownStyle={dropdownStyle}
styles={styles}
/>
)}
{stage === 4 && (
<StageFour
formData={formData}
handleDocumentPick={handleDocumentPick}
documents={documents}
styles={styles}
selectedOrg={selectedOrg}
/>
)}
</View>
<PrimaryButton
title={stage === 4 ? (loading ? 'Loading...' : 'Submit') : 'Next'}
onPress={() => {
if (validateStage(stage)) {
switch (stage) {
case 0:
case 1:
setStage(prev => prev + 1);
break;
case 2:
if (!panVerified) {
showToast('Please verify PAN details.');
return;
}
if (!aadhaarVerified) {
showToast('Please verify Aadhar Number.');
return;
}
const { valid, message } = isPANLinkedToGSTIN(
formData.orgPanNumber,
formData.gstnNo,
);
if (!valid) {
showToast(message);
return;
}
setStage(prev => prev + 1);
break;
case 3:
setStage(prev => prev + 1);
break;
case 4:
handleSubmit();
break;
default:
console.log(stage, 'stage');
setStage(prev => prev + 1);
break;
}
} else {
showToast('Please fill all required fields.');
}
}}
/>
</ScrollView>
</KeyboardAvoidingView>
</View>
);
};
export default Registration;
const styles = StyleSheet.create({
scrollContainer: {
flexGrow: 1,
paddingHorizontal:14
},
label: {
fontSize: 15,
fontWeight: '600',
marginVertical: 10,
color: colors.black,
},
row: {
flexDirection: 'row',
justifyContent: 'space-between',
marginBottom: 10,
},
backBtn: {
padding: 5,
width: 50,
marginBottom: 5,
},
sectionTitle: {
fontSize: 24,
fontWeight: '700',
color: colors.black,
marginBottom: 20,
marginTop: 10,
textAlign: 'center',
},
uploadGrid: {
flexDirection: 'row',
flexWrap: 'wrap',
justifyContent: 'space-between',
},
uploadCard: {
width: '48%',
backgroundColor: '#fdfdfd',
borderRadius: 20,
padding: 20,
alignItems: 'center',
marginBottom: 20,
shadowColor: '#000',
shadowOffset: { width: 0, height: 4 },
shadowOpacity: 0.08,
shadowRadius: 6,
elevation: 4,
borderWidth: 1,
borderColor: '#ddd',
},
iconCircle: {
width: 50,
height: 50,
borderRadius: 25,
backgroundColor: colors.primary,
justifyContent: 'center',
alignItems: 'center',
marginBottom: 10,
},
cardTitle: {
fontSize: 15,
fontWeight: '600',
color: colors.black,
marginBottom: 4,
textAlign: 'center',
},
cardHint: {
fontSize: 12,
color: '#888',
textAlign: 'center',
},
dropdown: {
height: 55,
borderColor: '#e0e0e0',
borderWidth: 1,
borderRadius: 12,
paddingHorizontal: 14,
marginTop: 8,
marginBottom: 14,
backgroundColor: '#fff',
},
selectedTextStyle: {
fontSize: 14,
color: colors.black,
},
placeholderStyle: {
fontSize: 14,
color: colors.black,
},
itemTextStyle: {
fontSize: 14,
color: colors.black,
},
});
+255
View File
@@ -0,0 +1,255 @@
import {
KeyboardAvoidingView,
SafeAreaView,
ScrollView,
StyleSheet,
Text,
TouchableOpacity,
View,
Platform,
} from 'react-native';
import React, { useState } from 'react';
import { useNavigation, useRoute, RouteProp } from '@react-navigation/native';
import colors from '../../Constant/Color';
import PrimaryButton from '../../Component/PrimaryButton/PrimaryButton';
import MyInput from '../../Component/MyInput';
import { showToast } from '../../Constant/ShowDailog';
import { STAGETHREE } from '../../Services/BBPS/ApiUrls';
type Company = {
director: string;
DINNumber: string;
panNumber: string;
aadharNumber: string;
mobileNumber: string;
};
type StageThreeRouteParams = {
orgType: string;
otherId: string | number
};
const StageThreeScreen = () => {
const route = useRoute<RouteProp<{ params: StageThreeRouteParams }, 'params'>>();
const navigation = useNavigation<any>();
const [company, setCompany] = useState<Company[]>([
{
director: '',
DINNumber: '',
panNumber: '',
aadharNumber: '',
mobileNumber: '',
},
]);
const [focusedField, setFocusedField] = useState<string | null>(null);
const [loading, setLoading] = useState<boolean>(false);
const handleChange = (index: number, field: keyof Company, value: string) => {
const updated = [...company];
updated[index][field] = value;
setCompany(updated);
};
const handleAddMore = () => {
setCompany(prev => [
...prev,
{
director: '',
DINNumber: '',
panNumber: '',
aadharNumber: '',
mobileNumber: '',
},
]);
};
console.log("first company route : ", route);
const handleSubmit = async () => {
setLoading(true);
try {
const payload = company.map(p => ({
contOtherId: route?.params?.otherId,
dinNo: p.DINNumber,
shAadharNo: p.aadharNumber,
shDirName: p.director,
shMobNo: p.mobileNumber,
shPANNo: p.panNumber,
}));
console.log('stage 3 payload : ', payload);
// const response = await apiCallForPostWithToken (STAGETHREE, payload);
console.log('✅ company submitted successfully:', response);
if (response.statusCode === 200 || response.statusCode === 201) {
navigation.replace('Dashboard');
showToast('Submitted successfully!');
}
} catch (error: any) {
console.error('❌ Submission failed:', error.message);
showToast('Submission failed. Please try again.');
} finally {
setLoading(false);
}
};
const handleRemove = (index: number) => {
const updated = [...company];
updated.splice(index, 1);
setCompany(
updated.length > 0
? updated
: [
{
director: '',
DINNumber: '',
panNumber: '',
aadharNumber: '',
mobileNumber: '',
},
]
);
};
return (
<View style={{ flex: 1 }}>
<Text style={styles.heading}>Stage Three For {route.params?.orgType == '4' ? 'Public' : route.params?.orgType == '5' ? 'Private' : route.params?.orgType == '6' ? 'Limited Liability Partnership (LLP)' : route.params?.orgType} Organization</Text>
<SafeAreaView style={{ flex: 1 }}>
<KeyboardAvoidingView
style={{ flex: 1 }}
behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
keyboardVerticalOffset={40}
>
<ScrollView contentContainerStyle={styles.scrollContainer} keyboardShouldPersistTaps="handled">
{company.map((partner, index) => (
<View style={{ marginBottom: 20 }} key={index}>
<Text style={styles.partnerTitle}>Company {index + 1}</Text>
<MyInput
icon="user"
placeholder="Name of Director *"
value={partner.director}
onChangeText={(text:any) => handleChange(index, 'director', text)}
onFocus={() => setFocusedField(`director-${index}`)}
onBlur={() => setFocusedField(null)}
focused={focusedField === `director-${index}`}
/>
<MyInput
icon="id-card"
placeholder="DIN Number in Firm *"
value={partner.DINNumber}
onChangeText={(text:any) => handleChange(index, 'DINNumber', text)}
onFocus={() => setFocusedField(`DINNumber-${index}`)}
onBlur={() => setFocusedField(null)}
focused={focusedField === `DINNumber-${index}`}
keyboardType="numeric"
maxlength={8}
/>
<MyInput
icon="id-card"
placeholder="PAN of Director *"
value={partner.panNumber}
onChangeText={(text:any) => handleChange(index, 'panNumber', text)}
onFocus={() => setFocusedField(`panNumber-${index}`)}
onBlur={() => setFocusedField(null)}
focused={focusedField === `panNumber-${index}`}
maxlength={12}
autoCapitalize="characters"
/>
<MyInput
icon="credit-card"
placeholder="Aadhar Number *"
value={partner.aadharNumber}
onChangeText={(text:any) => handleChange(index, 'aadharNumber', text)}
onFocus={() => setFocusedField(`aadharNumber-${index}`)}
onBlur={() => setFocusedField(null)}
focused={focusedField === `aadharNumber-${index}`}
keyboardType="numeric"
maxlength={12}
/>
<MyInput
icon="phone"
placeholder="Mobile Number *"
value={partner.mobileNumber}
onChangeText={(text:any) => handleChange(index, 'mobileNumber', text)}
onFocus={() => setFocusedField(`mobileNumber-${index}`)}
onBlur={() => setFocusedField(null)}
focused={focusedField === `mobileNumber-${index}`}
keyboardType="phone-pad"
maxlength={10}
/>
{company.length > 1 && (
<TouchableOpacity style={styles.deleteButton} onPress={() => handleRemove(index)}>
<Text style={styles.deleteText}>Delete Company</Text>
</TouchableOpacity>
)}
</View>
))}
<TouchableOpacity style={styles.addButton} onPress={handleAddMore}>
<Text style={styles.addText}>+ Add Company</Text>
</TouchableOpacity>
</ScrollView>
</KeyboardAvoidingView>
</SafeAreaView>
<PrimaryButton title={loading ? 'Loading...' : 'Submit'} onPress={handleSubmit} />
</View>
);
};
export default StageThreeScreen;
const styles = StyleSheet.create({
heading: {
fontSize: 18,
fontWeight: 'bold',
marginBottom: 10,
marginTop: 10,
textAlign: 'center',
},
partnerTitle: {
fontWeight: '600',
fontSize: 16,
marginBottom: 10,
},
scrollContainer: {
// backgroundColor: color.background,
flexGrow: 1,
},
addButton: {
backgroundColor: colors.primary,
padding: 10,
marginTop: 10,
borderRadius: 10,
alignItems: 'center',
width: 140,
alignSelf: 'flex-end',
},
addText: {
color: 'white',
fontWeight: '600',
},
deleteButton: {
backgroundColor: '#FF5C5C',
padding: 10,
marginTop: 10,
borderRadius: 10,
alignItems: 'center',
width: 140,
alignSelf: 'flex-end',
},
deleteText: {
color: 'white',
fontWeight: '600',
},
});
@@ -0,0 +1,110 @@
import React from 'react';
import { View, Text, TouchableOpacity } from 'react-native';
import {
IdCard,
FileText,
FileBadge,
ShieldCheck,
Building2,
ScrollText,
} from 'lucide-react-native'; // lucide icons
interface DocumentItem {
key: string;
label: string;
icon: 'pan' | 'aadhar' | 'gst' | 'contractor' | 'msme' | 'registration';
}
interface UploadDocumentsSectionProps {
handleDocumentPick: (key: string) => void;
documents: { [key: string]: { name: string } | null };
styles: any;
formData: any;
selectedOrg: number | string;
}
const StageFour: React.FC<UploadDocumentsSectionProps> = ({
handleDocumentPick,
documents,
styles,
formData,
selectedOrg,
}) => {
const documentItems: DocumentItem[] = [
{ key: 'panCard', label: 'PAN Card', icon: 'pan' },
{ key: 'aadharCard', label: 'Aadhar Card', icon: 'aadhar' },
{ key: 'gstnCertificate', label: 'GSTN Certificate', icon: 'gst' },
{ key: 'constractorClass', label: 'Contractor Class File', icon: 'contractor' },
{ key: 'msmefile', label: 'MSME Organization', icon: 'msme' },
{ key: 'registrationCertificate', label: 'Registration Certificate', icon: 'registration' },
];
const shouldRenderItem = (itemKey: string): boolean => {
if (formData.registrationDetail === 3 && itemKey === 'msmefile') return false;
if (formData.contractorClass == 1 && itemKey === 'constractorClass') return false;
if (
selectedOrg == 8 &&
['msmefile', 'constractorClass', 'gstnCertificate', 'registrationCertificate'].includes(
itemKey,
)
) {
return false;
}
return true; // pan + aadhar + rest (unless filtered above)
};
const renderIcon = (iconType: DocumentItem['icon']) => {
const commonProps = { size: 26, color: '#fff', strokeWidth: 2 };
switch (iconType) {
case 'pan':
return <IdCard {...commonProps} />; // PAN → ID card feel [web:19]
case 'aadhar':
return <IdCard {...commonProps} />; // Same icon, different label
case 'gst':
return <FileBadge {...commonProps} />; // File with badge [web:20]
case 'contractor':
return <ShieldCheck {...commonProps} />; // Safety / verification feel
case 'msme':
return <Building2 {...commonProps} />; // Organization / company
case 'registration':
return <ScrollText {...commonProps} />; // Certificate / document scroll
default:
return <FileText {...commonProps} />;
}
};
return (
<>
<Text style={styles.sectionTitle}>Upload Required Documents</Text>
<View style={styles.uploadGrid}>
{documentItems.map(item => {
if (!shouldRenderItem(item.key)) return null;
return (
<TouchableOpacity
key={item.key}
style={styles.uploadCard}
onPress={() => handleDocumentPick(item.key)}
>
<View style={styles.iconCircle}>{renderIcon(item.icon)}</View>
<Text style={styles.cardTitle}>{item.label}</Text>
<Text style={styles.cardHint}>
{documents[item.key]
? `${documents[item.key]?.name} ✅`
: 'Tap to upload PDF'}
</Text>
</TouchableOpacity>
);
})}
</View>
</>
);
};
export default StageFour;
@@ -0,0 +1,195 @@
import React, { useState } from 'react';
import { Text, View, StyleSheet } from 'react-native';
import DatePicker from 'react-native-date-picker'
import MyInput from '../../../Component/MyInput';
import MyDropdown from '../../../Component/Dropdown/MyDropdown';
import colors from '../../../Constant/Color';
import { DropdownOption } from '../types/types';
interface Props {
formData: {
registrationNumber: string;
contractorClass: string | number;
orgType: string;
registrationDetail: string | number;
socialCategory: string;
expiryDate: string
};
handleChange: (key: string, value: string) => void;
focusedField: string | null;
setFocusedField: (field: string | null | any) => void;
contractorClassItems: DropdownOption[];
allOrganizations: DropdownOption[];
allMsmeOrgs: DropdownOption[];
allSocialCategories: DropdownOption[];
allMSME: DropdownOption[];
dropdownStyle: object;
setSelectedOrg: (val: number) => void;
selectedOrg: string | number
}
const StageOne: React.FC<Props> = ({
formData,
handleChange,
focusedField,
setFocusedField,
contractorClassItems,
allOrganizations,
allMsmeOrgs,
allSocialCategories,
dropdownStyle,
setSelectedOrg,
selectedOrg
}) => {
const [selectedAllMSME, setSelectedAllMSME] = useState()
const [open, setOpen] = useState(false)
const [date, setDate] = useState(new Date())
const handleDateConfirm = (selectedDate: Date) => {
setOpen(false);
setDate(selectedDate);
handleChange('expiryDate', selectedDate.toISOString().split('T')[0]); // Format as YYYY-MM-DD
};
return (
<View>
<Text style={styles.label}>Registration & Type Details</Text>
<MyDropdown
label="Type of Organization"
data={allOrganizations}
labelField="label"
valueField="value"
placeholder="Select Organization Type"
value={formData.orgType}
onChange={item => {
setSelectedOrg(item.value);
handleChange('orgType', item.value);
}}
style={dropdownStyle}
onFocus={() => setFocusedField('orgType')}
onBlur={() => setFocusedField(null)}
focusedField={focusedField === 'orgType'}
/>
{
selectedOrg !== 8 &&
<MyInput
icon="file"
placeholder="Registration Number *"
value={formData.registrationNumber}
onChangeText={text => handleChange('registrationNumber', text)}
onFocus={() => setFocusedField('registrationNumber')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'registrationNumber'}
autoCapitalize='characters' />
}
{selectedOrg &&
<MyDropdown
label="Contractor Class"
data={contractorClassItems}
labelField="label"
valueField="value"
placeholder="Select Class"
value={selectedOrg == 8 ? contractorClassItems[0]?.value : formData.contractorClass}
style={dropdownStyle}
disable={selectedOrg == 8 ? true : false}
onChange={item => {
handleChange('contractorClass', item.value);
}}
onFocus={() => setFocusedField('contractorClass')}
onBlur={() => setFocusedField(null)}
focusedField={focusedField === 'contractorClass'}
/>}
{selectedOrg !== 8 &&
<MyDropdown
label="Registration Detail (MSME/NSIC etc.)"
data={allMsmeOrgs}
labelField="label"
valueField="value"
placeholder="Select Registration Type"
value={formData.registrationDetail}
onChange={item => {
setSelectedAllMSME(item.value)
console.log('first', item)
handleChange('registrationDetail', item.value)
}}
style={dropdownStyle}
onFocus={() => setFocusedField('registrationDetail')}
onBlur={() => setFocusedField(null)}
focusedField={focusedField === 'registrationDetail'}
/>}
{/* <MyDropdown
label="MSME Details"
data={allMSME}
labelField="label"
valueField="value"
placeholder="Select MSME Type"
value={''}
onChange={item => {
setSelectedAllMSME(item.value)
handleChange('allMsme', item.value)
}}
style={dropdownStyle}
onFocus={() => setFocusedField('allMsme')}
onBlur={() => setFocusedField(null)}
focusedField={focusedField === 'allMsme'}
/> */}
<MyDropdown
label="Social Category"
data={allSocialCategories}
labelField="label"
valueField="value"
placeholder="Select Social Category"
value={formData.socialCategory}
onChange={item => handleChange('socialCategory', item.value)}
style={dropdownStyle}
onFocus={() => setFocusedField('socialCategory')}
onBlur={() => setFocusedField(null)}
focusedField={focusedField === 'socialCategory'}
/>
{
selectedAllMSME !== 3 && selectedOrg !== 8 &&
<>
<MyInput
icon="calendar-alt"
placeholder="Expiry Date *"
value={formData.expiryDate}
onChangeText={text => handleChange('expiryDate', text)}
onFocus={() => setFocusedField('expiryDate')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'expiryDate'}
rightIcon='wallet'
editable={true}
rightIconPress={() => setOpen(true)}
/>
<DatePicker
modal
open={open}
date={date}
onConfirm={handleDateConfirm}
onCancel={() => setOpen(false)}
mode="date" // Ensure you're using date mode
/>
</>
}
</View>
);
};
const styles = StyleSheet.create({
label: {
fontSize: 16,
fontWeight: '600',
color: colors.black,
marginBottom: 10,
},
});
export default StageOne;
@@ -0,0 +1,120 @@
import React from 'react';
import { Text } from 'react-native';
import { DropdownOption } from '../types/types';
import MyInput from '../../../Component/MyInput';
import MyDropdown from '../../../Component/Dropdown/MyDropdown';
interface AddressDetailsSectionProps {
formData: {
address: string;
agentContact2: string;
pinCode: string;
state: string;
city: string;
};
handleChange: (field: string, value: string) => void;
setFocusedField: (field: string | null | any) => void;
focusedField: string | null;
states: DropdownOption[];
cities: DropdownOption[];
fetchCity: (stateValue: number) => void;
dropdownStyle?: object;
styles?: any; // Optional styles prop for custom styling
}
const StageThree: React.FC<AddressDetailsSectionProps> = ({
formData,
handleChange,
setFocusedField,
focusedField,
states,
cities,
fetchCity,
styles
}) => {
const dropdownStyle = {
borderWidth: 1,
borderColor: '#e0e0e0',
borderRadius: 12,
paddingHorizontal: 14,
height: 50,
backgroundColor: '#fff',
marginBottom: 10,
};
return (
<>
<Text style={styles.label}>Address Details</Text>
<MyInput
icon="home"
placeholder="Enter Address *"
value={formData.address}
onChangeText={text => handleChange('address', text)}
onFocus={() => setFocusedField('address')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'address'}
/>
<MyInput
maxlength={10}
icon="phone"
placeholder="Contact Number *"
value={formData.agentContact2}
onChangeText={text => handleChange('agentContact2', text)}
onFocus={() => setFocusedField('agentContact2')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'agentContact2'}
keyboardType="numeric"
/>
<MyInput
icon="lock"
placeholder="Pin Code *"
keyboardType="numeric"
maxlength={6}
value={formData.pinCode}
onChangeText={text => handleChange('pinCode', text)}
onFocus={() => setFocusedField('pinCode')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'pinCode'}
/>
<MyDropdown
label="State"
data={states}
labelField="label"
valueField="value"
placeholder="Select State"
value={formData.state}
onChange={item => {
handleChange('state', item.value);
handleChange('city', '');
fetchCity(item.value);
}}
style={dropdownStyle}
onFocus={() => setFocusedField('state')}
onBlur={() => setFocusedField(null)}
focusedField={focusedField === 'state'}
/>
<MyDropdown
label="City"
data={cities}
labelField="label"
valueField="value"
placeholder="Select City"
value={formData.city}
onChange={item => handleChange('city', item.value)}
style={dropdownStyle}
onFocus={() => setFocusedField('city')}
onBlur={() => setFocusedField(null)}
focusedField={focusedField === 'city'}
/>
</>
);
};
export default StageThree;
@@ -0,0 +1,264 @@
import React from 'react';
import {
Text,
TouchableOpacity,
ActivityIndicator,
View,
} from 'react-native';
import MyInput from '../../../Component/MyInput';
// Adjust the path to your custom input
interface Props {
formData: {
orgPanNumber: string;
dateOfIncorp: string;
orgPanName: string;
aadhaarNumber: string;
aadhaarOtp: string;
gstnNo: string;
};
handleChange: (key: string, value: string) => void;
focusedField: string | null;
setFocusedField: (field: string | null | any) => void;
// PAN
panVerified: boolean;
setPanVerified: (value: boolean) => void;
verifyPanHandler: () => void;
panVerifying: boolean;
// Aadhaar
aadhaarVerified: boolean;
setAadhaarVerified: (value: boolean) => void;
sendAdharOTPHandler: (aadhaarNumber: string) => void;
adharotpsend: boolean;
setadharotpsend: (value: boolean) => void;
verifyAdharOtpHandler: () => void;
aadhaarVerifying: boolean;
// GST
verifyGSTHandler: () => void;
gstverifying: boolean;
color: any;
styles: any;
formatDateInput: (text: string) => string;
selectedOrg:string|number
}
const StageTwo: React.FC<Props> = ({
formData,
handleChange,
focusedField,
setFocusedField,
panVerified,
setPanVerified,
verifyPanHandler,
panVerifying,
aadhaarVerified,
setAadhaarVerified,
sendAdharOTPHandler,
adharotpsend,
setadharotpsend,
verifyAdharOtpHandler,
aadhaarVerifying,
verifyGSTHandler,
gstverifying,
color,
styles,
formatDateInput,
selectedOrg
}) => {
return (
<>
{/* ---------- PAN Details ---------- */}
<Text style={styles.label}>PAN Details</Text>
<MyInput
icon="file"
placeholder={selectedOrg == 8 ? "Pan Number *" : "Organization PAN Number *"}
value={formData.orgPanNumber}
onChangeText={(text) => {
setPanVerified(false);
handleChange('orgPanNumber', text);
}}
isVarify={panVerified}
onFocus={() => setFocusedField('pan')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'pan'}
editable={!panVerified}
autoCapitalize="characters"
maxlength={10}
/>
<MyInput
icon="calendar"
placeholder={selectedOrg == 8 ? "Date of Birth *" :"Date of Incorporation *"}
value={formData.dateOfIncorp}
onChangeText={(text) => {
const formatted = formatDateInput(text);
setPanVerified(false);
handleChange('dateOfIncorp', formatted);
}}
isVarify={panVerified}
onFocus={() => setFocusedField('dob')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'dob'}
editable={!panVerified}
keyboardType='numeric'
/>
<MyInput
icon="file-signature"
placeholder="PAN Name *"
value={formData.orgPanName}
onChangeText={(text) => {
setPanVerified(false);
handleChange('orgPanName', text);
}}
isVarify={panVerified}
onFocus={() => setFocusedField('panName')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'panName'}
editable={!panVerified}
autoCapitalize="characters"
/>
{formData.orgPanNumber &&
formData.dateOfIncorp &&
formData.orgPanName &&
!panVerified && (
<TouchableOpacity
style={{
backgroundColor: color.primary,
padding: 10,
marginTop: 10,
borderRadius: 10,
alignItems: 'center',
width: 120,
alignSelf: 'flex-end',
}}
disabled={panVerifying}
onPress={verifyPanHandler}
>
<Text style={{ color: 'white', fontWeight: '600' }}>
{panVerifying ? 'Verifying' : 'Verify PAN'}
</Text>
</TouchableOpacity>
)}
{/* ---------- Aadhaar Details ---------- */}
<Text style={styles.label}>Aadhaar Details</Text>
<MyInput
icon="address-card"
placeholder="Aadhaar Number *"
keyboardType="numeric"
maxlength={12}
value={formData.aadhaarNumber}
onChangeText={(text) => {
handleChange('aadhaarNumber', text);
setAadhaarVerified(false);
setadharotpsend(false);
handleChange('aadhaarOtp', '');
}}
isVarify={aadhaarVerified}
onFocus={() => setFocusedField('adhar')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'adhar'}
editable={!aadhaarVerified}
/>
{formData.aadhaarNumber.length === 12 && !adharotpsend && (
<TouchableOpacity
style={{
backgroundColor: color.primary,
padding: 10,
marginTop: 10,
borderRadius: 10,
alignItems: 'center',
width: 120,
alignSelf: 'flex-end',
}}
onPress={() => sendAdharOTPHandler(formData.aadhaarNumber)}
disabled={aadhaarVerifying}
>
{aadhaarVerifying ? (
<ActivityIndicator color="#fff" />
) : (
<Text style={{ color: 'white', fontWeight: '600' }}>Send OTP</Text>
)}
</TouchableOpacity>
)}
{adharotpsend && !aadhaarVerified && (
<>
<MyInput
icon="lock"
placeholder="Enter OTP *"
keyboardType="numeric"
maxlength={6}
value={formData.aadhaarOtp}
onChangeText={(text) => handleChange('aadhaarOtp', text)}
onFocus={() => setFocusedField('adharOtp')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'adharOtp'}
/>
<TouchableOpacity
style={{
backgroundColor: color.primary,
padding: 10,
marginTop: 10,
borderRadius: 10,
alignItems: 'center',
width: 120,
alignSelf: 'flex-end',
}}
onPress={verifyAdharOtpHandler}
disabled={aadhaarVerifying}
>
<Text style={{ color: 'white', fontWeight: '600' }}>
{aadhaarVerifying ? 'Verifying...' : 'Verify'}
</Text>
</TouchableOpacity>
</>
)}
{/* ---------- GST Section ---------- */}
{selectedOrg !== 11 &&
<>
<MyInput
icon="file-invoice"
placeholder="GSTN No"
value={formData.gstnNo}
onChangeText={(text) => handleChange('gstnNo', text)}
onFocus={() => setFocusedField('gstNumber')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'gstNumber'}
autoCapitalize="characters"
/>
{/* {formData?.gstnNo?.length === 15 && (
<TouchableOpacity
style={{
backgroundColor: color.primary,
padding: 10,
marginTop: 10,
borderRadius: 10,
alignItems: 'center',
width: 120,
alignSelf: 'flex-end',
}}
onPress={verifyGSTHandler}
>
<Text style={{ color: 'white', fontWeight: '600' }}>
{gstverifying ? 'Verifying...' : 'Verify GST'}
</Text>
</TouchableOpacity>
)} */}
</>}
</>
);
};
export default StageTwo;
@@ -0,0 +1,124 @@
import React, { useEffect } from 'react';
import { Text, View, StyleSheet } from 'react-native';
import MyInput from '../../../Component/MyInput';
interface Props {
formData: {
agentContact2: string;
organizationName: string;
officialWebsite: string;
mobileNumber: string;
email: string;
firstName: string;
middleName: string;
lastName: string
};
handleChange: (key: string, value: string) => void;
focusedField: string | null;
setFocusedField: (field: string | null | any) => void;
styles: any;
}
const StageZero: React.FC<Props> = ({
formData,
handleChange,
focusedField,
setFocusedField,
styles,
}) => {
return (
<>
<Text style={styles.label}>Personal & Contact Details</Text>
{/* <View style={styles.row}> */}
<MyInput
icon="user"
placeholder="First Name *"
value={formData.firstName}
onChangeText={(text: string) => handleChange('firstName', text)}
onFocus={() => setFocusedField('firstname')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'firstname'}
editable={false}
/>
<View style={{ width: 10 }} />
{
formData.middleName ?
<MyInput
icon="user"
placeholder="Middle Name"
value={formData.middleName}
onChangeText={(text: string) => handleChange('middleName', text)}
onFocus={() => setFocusedField('middleName')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'middleName'}
editable={false}
/>
: null}
<MyInput
icon="user"
placeholder="Last Name *"
value={formData.lastName}
onChangeText={(text: string) => handleChange('lastName', text)}
onFocus={() => setFocusedField('lastName')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'lastName'}
editable={false}
/>
<MyInput
icon="envelope"
placeholder="Email *"
keyboardType="email-address"
value={formData.email}
onChangeText={(text: string) => handleChange('email', text)}
onFocus={() => setFocusedField('email')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'email'}
editable={false}
/>
<MyInput
icon="phone"
placeholder="Mobile Number *"
keyboardType="phone-pad"
value={formData.mobileNumber}
onChangeText={(text: string) => handleChange('mobileNumber', text)}
onFocus={() => setFocusedField('mobileNumber')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'mobileNumber'}
editable={false}
/>
<MyInput
icon="building"
placeholder="Organization Name *"
value={formData.organizationName}
onChangeText={(text: string) => handleChange('organizationName', text)}
onFocus={() => setFocusedField('organizationName')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'organizationName'}
autoCapitalize="none"
/>
<MyInput
icon="globe"
placeholder="Official Website (optional)"
value={formData.officialWebsite}
onChangeText={(text: string) => handleChange('officialWebsite', text)}
onFocus={() => setFocusedField('officialWebsite')}
onBlur={() => setFocusedField(null)}
focused={focusedField === 'officialWebsite'}
autoCapitalize="none"
/>
</>
);
};
export default StageZero;
+63
View File
@@ -0,0 +1,63 @@
export type FormDataType = {
firstName: string;
middleName: string;
lastName: string;
email: string;
mobileNumber: string;
organizationName: string;
officialWebsite: string;
registrationNumber: string;
contractorClass: string | number;
orgType: string;
registrationDetail: string | number;
socialCategory: string;
orgPanNumber: string;
dateOfIncorp: string;
orgPanName: string;
gstnNo: string;
aadhaarNumber: string;
aadhaarOtp: string;
address: string;
state: string;
city: string;
pinCode: string;
agentContact2: string;
expiryDate:string
};
export type UserData = {
firstName: string;
lastName: string;
middleName?: string;
email: string;
mobileNumber: string;
};
export type DocumentFile = {
uri: string;
type: string;
name: string;
};
export type DocumentsType = {
panCard: DocumentFile | null;
gstnCertificate: DocumentFile | null;
registrationCertificate: DocumentFile | null;
msmefile: DocumentFile | null;
constractorClass: DocumentFile | null;
aadharCard: DocumentFile | null;
};
export type OrgType = 4 | 5 | 6 | 7 | number;
export type ApiResponse = {
status: number|string;
message?: string;
data?: any;
contOtherId : number|any
};
export type DropdownOption = {
label: string;
value: string | number;
};
+511
View File
@@ -0,0 +1,511 @@
import { useNavigation } from '@react-navigation/native';
import React, { useEffect, useState } from 'react';
import {
View,
Text,
TextInput,
TouchableOpacity,
StyleSheet,
Alert,
Platform,
KeyboardAvoidingView,
SafeAreaView,
ScrollView,
ToastAndroid,
} from 'react-native';
import colors from '../../Constant/Color';
import { User, Phone, Mail, Lock, Eye, EyeOff, ArrowLeft, CheckSquare, Square } from 'lucide-react-native';
import { useGetDesignation, useRegisterContractor } from '../../Services/BBPS/Hooks';
import MyDropdown from '../../Component/Dropdown/MyDropdown';
import PrimaryButton from '../../Component/PrimaryButton/PrimaryButton';
import TermsAndConditionsModal from '../../Component/TermsAndConditionsModal/TermsAndConditionsModal';
import { Formik } from 'formik';
import * as Yup from 'yup';
import Animated, { FadeInUp } from 'react-native-reanimated';
import { InsideHeader } from '../../Component/Index';
export type ContractorFormData = {
firstName: string;
middleName: string;
lastName: string;
dialCode: string;
mobNo: string;
emailAdd: string;
contractorType: string;
designation: number;
password: string;
conPassword: string;
otherDesignation: null;
};
type DesignationOption = {
label: string;
value: string; // string id from API
};
const SignupSchema = Yup.object().shape({
bidderType: Yup.string().required('Please select bidder type.'),
firstName: Yup.string().required('First name is required.'),
middleName: Yup.string().optional(),
lastName: Yup.string().required('Last name is required.'),
designation: Yup.string().required('Please select a designation.'), // string
mobileNumber: Yup.string()
.matches(/^[6-9]\d{9}$/, 'Invalid mobile number.')
.required('Mobile number is required.'),
email: Yup.string().email('Invalid email address.').required('Email is required.'),
password: Yup.string()
.matches(
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,
'Password must be at least 8 characters and include uppercase, lowercase, number, and special character.',
)
.required('Password is required.'),
confirmPassword: Yup.string()
.oneOf([Yup.ref('password')], 'Passwords do not match.')
.required('Confirm password is required.'),
});
const Signup = () => {
const navigation = useNavigation<any>();
const [designation, setDesignation] = useState<DesignationOption[]>([]);
const { data, isLoading: isDesignationLoading } = useGetDesignation();
const [checkModal, setCheckModal] = useState(false);
const [isCheck, setIsCheck] = useState(false);
const { mutate: registerContractor, isPending: isRegistering } = useRegisterContractor();
const [showPassword, setShowPassword] = useState(false);
const [showConfirmPassword, setShowConfirmPassword] = useState(false);
useEffect(() => {
const list = (data as any)?.data;
if (!Array.isArray(list)) return;
const formattedDesignation: DesignationOption[] = list.map((item: any) => ({
label: item.designationName,
value: String(item.designationid), // e.g. "3"
}));
setDesignation(formattedDesignation);
}, [data]);
const dropdownStyle = {
borderWidth: 1,
borderColor: colors.border,
borderRadius: 12,
paddingHorizontal: 14,
height: 50,
backgroundColor: colors.white,
marginBottom: 10,
};
const renderInputWithIcon = (
icon: 'user' | 'phone' | 'mail',
placeholder: string,
value: string,
onChangeText: (text: string) => void,
onBlur: () => void,
error?: string,
touched?: boolean,
props: object = {},
) => {
const IconComponent = icon === 'user' ? User : icon === 'phone' ? Phone : Mail;
return (
<>
<View style={styles.inputWrapper}>
<IconComponent size={18} color={colors.grayText} style={styles.icon} />
<TextInput
placeholder={placeholder}
style={styles.input}
placeholderTextColor={colors.placeholder}
value={value}
onChangeText={onChangeText}
onBlur={onBlur}
{...props}
/>
</View>
{touched && error && <Text style={styles.errorText}>{error}</Text>}
</>
);
};
const renderPasswordInput = (
placeholder: string,
value: string,
onChangeText: (text: string) => void,
onBlur: () => void,
show: boolean,
setShow: (show: boolean) => void,
error?: string,
touched?: boolean,
) => (
<>
<View style={styles.inputWrapper}>
<Lock size={18} color={colors.grayText} style={styles.icon} />
<TextInput
placeholder={placeholder}
style={styles.input}
placeholderTextColor={colors.placeholder}
value={value}
onChangeText={onChangeText}
onBlur={onBlur}
secureTextEntry={!show}
/>
<TouchableOpacity onPress={() => setShow(!show)}>
{show ? <Eye size={18} color={colors.grayText} /> : <EyeOff size={18} color={colors.grayText} />}
</TouchableOpacity>
</View>
{touched && error && <Text style={styles.errorText}>{error}</Text>}
</>
);
const handleSubmitForm = (values: any) => {
console.log('values', values);
if (!isCheck) {
Alert.alert('Check terms and condition');
return;
}
const formData: ContractorFormData = {
firstName: values.firstName.trim(),
middleName: values.middleName.trim(),
lastName: values.lastName.trim(),
dialCode: '+91',
mobNo: values.mobileNumber.trim(),
emailAdd: values.email.trim(),
contractorType: values.bidderType,
designation: values.designation ? Number(values.designation) : 0, // convert string -> number
password: values.password.trim(),
otherDesignation: null,
conPassword: values.confirmPassword.trim(),
};
registerContractor(formData, {
onSuccess: (res: any) => {
if (res?.status === '201') {
ToastAndroid.show(`${res.message}`, ToastAndroid.SHORT);
navigation.pop();
} else {
ToastAndroid.show(`Registration failed : ${res.message}`, ToastAndroid.SHORT);
}
},
onError: (error: any) => {
ToastAndroid.show(error.message, ToastAndroid.SHORT);
},
});
};
return (
<View style={styles.container}>
<SafeAreaView style={styles.container}>
<InsideHeader title="Sign Up" showArrow />
<KeyboardAvoidingView
style={styles.container}
behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
keyboardVerticalOffset={40}
>
<Formik
initialValues={{
bidderType: '',
firstName: '',
middleName: '',
lastName: '',
designation: '', // string, not 0
mobileNumber: '',
email: '',
password: '',
confirmPassword: '',
}}
validationSchema={SignupSchema}
onSubmit={handleSubmitForm}
>
{({
handleChange,
handleBlur,
handleSubmit,
values,
errors,
touched,
setFieldValue,
}) => (
<ScrollView
contentContainerStyle={styles.scrollContainer}
keyboardShouldPersistTaps="handled"
bounces={false}
>
<Animated.View entering={FadeInUp.duration(450).delay(80)}>
<Text style={styles.label}>Bidder Type</Text>
<View style={styles.toggleContainer}>
{['Indian', 'Foreign'].map(type => (
<TouchableOpacity
key={type}
style={[
styles.toggleButton,
values.bidderType === type && styles.selectedToggle,
]}
onPress={() => setFieldValue('bidderType', type)}
>
<Text
style={[
styles.toggleText,
values.bidderType === type && styles.selectedToggleText,
]}
>
{type}
</Text>
</TouchableOpacity>
))}
</View>
{touched.bidderType && errors.bidderType && (
<Text style={styles.errorText}>{errors.bidderType}</Text>
)}
</Animated.View>
<Animated.View entering={FadeInUp.duration(450).delay(120)}>
<View style={styles.row}>
<View style={styles.halfInput}>
{renderInputWithIcon(
'user',
'First Name *',
values.firstName,
handleChange('firstName'),
() => handleBlur('firstName'),
errors.firstName,
touched.firstName,
)}
</View>
<View style={styles.halfInput}>
{renderInputWithIcon(
'user',
'Middle Name',
values.middleName,
handleChange('middleName'),
() => handleBlur('middleName'),
errors.middleName,
touched.middleName,
)}
</View>
</View>
{renderInputWithIcon(
'user',
'Last Name *',
values.lastName,
handleChange('lastName'),
() => handleBlur('lastName'),
errors.lastName,
touched.lastName,
)}
</Animated.View>
<Animated.View entering={FadeInUp.duration(450).delay(160)}>
<Text style={styles.label}>Designation</Text>
<MyDropdown
label="Select Designation"
labelField="label"
valueField="value"
data={designation}
value={values.designation}
onChange={(item: any) => {
setFieldValue('designation', item.value);
}}
placeholder={isDesignationLoading ? 'Loading...' : 'Choose Designation'}
style={dropdownStyle}
/>
{touched.designation && errors.designation && (
<Text style={styles.errorText}>{errors.designation}</Text>
)}
</Animated.View>
<Animated.View entering={FadeInUp.duration(450).delay(200)}>
{renderInputWithIcon(
'phone',
'Mobile Number *',
values.mobileNumber,
handleChange('mobileNumber'),
() => handleBlur('mobileNumber'),
errors.mobileNumber,
touched.mobileNumber,
{
keyboardType: 'phone-pad',
maxLength: 10,
},
)}
{renderInputWithIcon(
'mail',
'Email *',
values.email,
handleChange('email'),
() => handleBlur('email'),
errors.email,
touched.email,
{
keyboardType: 'email-address',
autoCapitalize: 'none',
},
)}
</Animated.View>
<Animated.View entering={FadeInUp.duration(450).delay(240)}>
{renderPasswordInput(
'Password *',
values.password,
handleChange('password'),
() => handleBlur('password'),
showPassword,
setShowPassword,
errors.password,
touched.password,
)}
{renderPasswordInput(
'Confirm Password *',
values.confirmPassword,
handleChange('confirmPassword'),
() => handleBlur('confirmPassword'),
showConfirmPassword,
setShowConfirmPassword,
errors.confirmPassword,
touched.confirmPassword,
)}
</Animated.View>
<Animated.View entering={FadeInUp.duration(450).delay(280)}>
<View style={styles.termsRow}>
<TouchableOpacity onPress={() => setCheckModal(true)}>
{isCheck ? (
<CheckSquare size={20} color={colors.primary} />
) : (
<Square size={20} color={colors.black} />
)}
</TouchableOpacity>
<Text style={styles.termsText}>
By continuing, I agree to the Terms and Conditions
</Text>
</View>
</Animated.View>
<Animated.View entering={FadeInUp.duration(450).delay(320)} style={styles.buttonWrapper}>
<PrimaryButton
title={isRegistering ? 'Submitting...' : 'Submit'}
disabled={isRegistering}
onPress={() => handleSubmit()}
/>
</Animated.View>
{checkModal && (
<TermsAndConditionsModal
visible={checkModal}
onClose={() => setCheckModal(false)}
onChecked={() => setIsCheck(true)}
/>
)}
</ScrollView>
)}
</Formik>
</KeyboardAvoidingView>
</SafeAreaView>
</View>
);
};
export default Signup;
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: colors.white,
},
scrollContainer: {
flexGrow: 1,
paddingHorizontal: 16,
paddingTop: 12,
paddingBottom: 24,
justifyContent: 'flex-start',
},
label: {
fontSize: 15,
fontWeight: '600',
marginTop: 6,
marginBottom: 4,
color: colors.darkText,
},
toggleContainer: {
flexDirection: 'row',
justifyContent: 'space-between',
marginBottom: 4,
},
toggleButton: {
flex: 1,
paddingVertical: 10,
borderRadius: 10,
borderWidth: 1,
borderColor: colors.primary,
alignItems: 'center',
marginHorizontal: 4,
backgroundColor: colors.white,
},
selectedToggle: {
backgroundColor: colors.primary,
borderColor: colors.primary,
},
toggleText: {
fontSize: 14,
color: colors.grayText,
},
selectedToggleText: {
color: colors.white,
fontWeight: '600',
},
row: {
flexDirection: 'row',
justifyContent: 'space-between',
marginTop: 6,
},
halfInput: {
width: '48%',
},
inputWrapper: {
flexDirection: 'row',
alignItems: 'center',
backgroundColor: colors.white,
borderRadius: 12,
borderWidth: 1,
borderColor: colors.border,
paddingHorizontal: 10,
marginTop: 8,
height: 52,
},
icon: {
marginRight: 10,
},
input: {
flex: 1,
fontSize: 15,
color: colors.darkText,
paddingVertical: 0,
},
errorText: {
color: colors.error,
fontSize: 12,
marginTop: 3,
marginLeft: 4,
},
termsRow: {
flexDirection: 'row',
alignItems: 'center',
marginTop: 14,
marginHorizontal: 2,
},
termsText: {
flex: 1,
fontSize: 13,
color: colors.darkText,
marginLeft: 8,
},
buttonWrapper: {
marginTop: 18,
},
});
+211 -27
View File
@@ -1,40 +1,224 @@
import { View, Text } from 'react-native'; import React, { useEffect, useRef, useState, useCallback } from 'react';
import React, { useEffect } from 'react'; import { Animated, StyleSheet, View } from 'react-native';
import FontsFamily from '../../Constant/FontsFamily'; import { useNavigation, useIsFocused } from '@react-navigation/native';
import { useNavigation } from '@react-navigation/native';
import NavigationString from '../../Constant/NavigationString';
import AsyncStorage from '@react-native-async-storage/async-storage'; import AsyncStorage from '@react-native-async-storage/async-storage';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import { useStore } from 'react-redux'; // For hydration check
const Splash = () => { import { showToast } from '../../Constant/ShowDailog';
const navigation: any = useNavigation(); import { useRagistrationState } from '../../Services/BBPS/Hooks';
const Token = useSelector((state: any) => state.token.token) import NavigationString from '../../Constant/NavigationString';
const handleSplashNavigation = async () => { // Navigation type
try { export type Navigation = {
const isOnboardingDone = await AsyncStorage.getItem('onBoarding'); reset(arg0: {
if (isOnboardingDone != 'true') { index: number;
navigation.replace(NavigationString.Onboarding); routes: { name: string; }[];
} else if (Token.token) { }): unknown;
navigation.replace(NavigationString.Home); navigate: (route: string, params?: { [key: string]: any }) => void;
} else { replace: (route: string, params?: { [key: string]: any }) => void;
navigation.replace(NavigationString.Login); };
}
} catch (error) { const Splash: React.FC = () => {
navigation.replace(NavigationString.Onboarding); const navigation = useNavigation() as Navigation;
} const isFocused = useIsFocused();
}; const fadeAnim = useRef(new Animated.Value(0)).current;
const reduxToken = useSelector((state: any) => state.token?.token);
const store = useStore();
const { mutateAsync: registrationStateMutate } = useRagistrationState();
const [isHydrated, setIsHydrated] = useState(false);
const [isLoading, setIsLoading] = useState(true);
// Wait for Redux hydration (works with/without redux-persist)
useEffect(() => { useEffect(() => {
handleSplashNavigation() let unsubscribe: any;
const checkHydration = () => {
const token = (store.getState() as any).token?.token;
if (token !== undefined) { // Defined = hydrated (null/empty/string ok)
setIsHydrated(true);
unsubscribe?.();
}
};
unsubscribe = store.subscribe(checkHydration);
checkHydration(); // Check immediately
return () => unsubscribe?.();
}, []); }, []);
const getToken = useCallback(async (): Promise<string | null> => {
try {
// Redux first (post-hydration), then AsyncStorage fallback
let token = reduxToken;
if (token === undefined) {
token = await AsyncStorage.getItem('token');
}
return token || null;
} catch (error) {
console.error('Token fetch error:', error);
return null;
}
}, [reduxToken]);
const routeByOrgType = (params: { otherId: any; orgType: any }) => {
const orgType = String(params.orgType);
if (orgType === '4' || orgType === '5' || orgType === '6') {
navigation.replace('StageThree', params);
return;
}
if (orgType === '7') {
navigation.replace('PartnerShip', params);
return;
}
navigation.replace('Dashboard');
};
const handleGetData = async () => {
try {
const res = await registrationStateMutate();
console.log('Registration status response:', res?.statusCode);
if (res?.statusCode === 404 || res?.statusCode === 401) {
navigation.replace('Registration');
return;
}
if (res?.statusCode === 200 && res?.data) {
const { registrationStatus, contOtherId, contOrganization } = res.data;
const params = { otherId: contOtherId, orgType: contOrganization };
console.log('Registration status:', registrationStatus);
switch (registrationStatus) {
case null:
case undefined:
navigation.replace(NavigationString.Registration);
break;
case 'Pending':
routeByOrgType(params);
break;
case 'Complete':
case 'Completed':
navigation.replace(NavigationString.Home);
break;
default:
navigation.replace(NavigationString.Registration);
break;
}
return;
}
console.error('API error:', res);
showToast(res?.message || 'Something went wrong');
navigation.replace('Registration');
} catch (error: any) {
console.error('Registration status error:', error);
showToast(error?.message || 'Something went wrong');
if (error?.response?.status === 404) {
navigation.replace('Registration');
} else {
await AsyncStorage.removeItem('token');
navigation.replace('Signin');
}
}
};
useEffect(() => {
if (!isFocused || !isHydrated) return;
const runSplash = async () => {
try {
setIsLoading(true);
Animated.timing(fadeAnim, {
toValue: 1,
duration: 500,
useNativeDriver: true,
}).start();
const token = await getToken();
console.log("Token after hydration -", token, typeof token, !!token);
if (!token) {
console.log('No valid token, navigating to Login');
navigation.reset({
index: 0,
routes: [{ name: NavigationString.Login || 'Signin' }], // Fallback
});
return;
}
console.log('Valid token, fetching registration data');
await handleGetData();
} catch (error) {
console.error('Splash Error:', error);
navigation.reset({
index: 0,
routes: [{ name: NavigationString.Login || 'Signin' }],
});
} finally {
setIsLoading(false);
}
};
// Small delay ensures hydration + native animation complete
const timeoutId = setTimeout(runSplash, 200);
return () => clearTimeout(timeoutId);
}, [isFocused, isHydrated, getToken]);
if (!isHydrated) {
return (
<View style={styles.loadingContainer}>
<Animated.Image
source={require('../../Images/logo.png')}
style={[styles.logo, { opacity: fadeAnim }]}
resizeMode="contain"
/>
</View>
);
}
return ( return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <View style={styles.appView}>
<Text style={{ fontFamily: FontsFamily.poppinsBlack }}> <View style={styles.container}>
Splash <Animated.Image
</Text> source={require('../../Images/logo.png')}
style={[styles.logo, { opacity: fadeAnim }]}
resizeMode="contain"
/>
{isLoading && (
<View style={{ marginTop: 20 }}>
{/* Optional spinner */}
</View>
)}
</View>
</View> </View>
); );
}; };
export default Splash; export default Splash;
const styles = StyleSheet.create({
appView: {
flex: 1,
backgroundColor: '#fff',
},
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
logo: {
width: 160,
height: 160,
marginBottom: 20,
},
loadingContainer: {
flex: 1,
backgroundColor: '#fff',
justifyContent: 'center',
alignItems: 'center',
},
});
+7 -1
View File
@@ -7,6 +7,8 @@ import StartReverseBidding from "./Bidding/StartReverseBidding";
import Home from "./Home/Home"; import Home from "./Home/Home";
import Login from "./Login/Login"; import Login from "./Login/Login";
import Onboarding from "./Onboarding/Onboarding"; import Onboarding from "./Onboarding/Onboarding";
import Registration from "./Ragistration/Ragistration";
import Signup from "./SignUp/SignUp";
import Splash from "./Splash/Splash"; import Splash from "./Splash/Splash";
import ProceedToBidDetail from "./Tender/ProceedToBidDetail"; import ProceedToBidDetail from "./Tender/ProceedToBidDetail";
import ProceedToPurTender from "./Tender/ProceedToPurTender"; import ProceedToPurTender from "./Tender/ProceedToPurTender";
@@ -30,6 +32,10 @@ const Screens = {
ProceedToPurTender, ProceedToPurTender,
TenderBidding, TenderBidding,
ProceedToBidDetail, ProceedToBidDetail,
StartReverseBidding StartReverseBidding,
Signup,
Registration
} }
export default Screens export default Screens
+1
View File
@@ -64,6 +64,7 @@ const ITEM_DOCUMENT_DOWNLOAD = `${BASE_URL_Auction}api/auction/home/downloadDocu
const DASHBOARD_COUNT = `${BASE_URL_Auction}api/auction/home/dashboard/counts` const DASHBOARD_COUNT = `${BASE_URL_Auction}api/auction/home/dashboard/counts`
const AUCTION_ONE_TIME_BID =`${BASE_URL_Auction}api/bidding/getBidForAuction` const AUCTION_ONE_TIME_BID =`${BASE_URL_Auction}api/bidding/getBidForAuction`
//tender //tender
const TENDER_LOGIN = `${BASE_URL}eproc/loginWithoutDecryption` const TENDER_LOGIN = `${BASE_URL}eproc/loginWithoutDecryption`
+89 -2
View File
@@ -1,14 +1,21 @@
import { useInfiniteQuery, useMutation, useQuery } from '@tanstack/react-query'; import { useInfiniteQuery, useMutation, useQuery } from '@tanstack/react-query';
import { fetchAuctionItem, fetchDashboard, fetchEmdCheck, fetchLiveAuction, fetchLiveTender, fetchPurchaseAuction, fetchPurchaseTender, offlineAuctionPurchase, userLogin } from './apis'; import { contractorStageThreeSubmit, contractorStageTwoSubmit, fetchAuctionItem, fetchCityDropdown, fetchDashboard, fetchEmdCheck, fetchLiveAuction, fetchLiveTender, fetchMasterData, fetchPurchaseAuction, fetchPurchaseTender, fetchTenderById, getDesignation, getRagistrationState, offlineAuctionPurchase, offlineTenderPurchase, proceedToBid, registerContractor, sendAadhaarOtp, userAuctionLogin, userLogin, verifyAadhaarOtp, verifyGstNumber, verifyPanHandler } from './apis';
import { fetchDashboard, fetchLiveAuction, fetchLiveTender, fetchPurchaseAuction, fetchPurchaseTender, offlineAuctionPurchase, userLogin, offlineTenderPurchase, fetchTenderById, proceedToBid } from './apis'; import { apiCall } from '../../Axios/Axios';
// User // User
export const useLogin = () => { export const useLogin = () => {
console.log("hitting here")
return useMutation({ return useMutation({
mutationFn: (payload: { emailAdd: string, password: string }) => userLogin(payload), mutationFn: (payload: { emailAdd: string, password: string }) => userLogin(payload),
}); });
}; };
export const useAuctionLogin = () => {
console.log("hitting here")
return useMutation({
mutationFn: (payload: { emailAdd: string, password: string }) => userAuctionLogin(payload),
});
};
// Dashboard // Dashboard
export const useDashboard = () => { export const useDashboard = () => {
@@ -120,4 +127,84 @@ export const useProceedToBid = (tenderId?: string) => {
}); });
}; };
export const useAuctionItem = () => {
return useMutation({
mutationFn: (payload: any) => fetchAuctionItem(payload),
});
};
// EMD
export const useEmdCheck = () => {
return useMutation({
mutationFn: (payload: any) => fetchEmdCheck(payload),
});
};
export const useGetDesignation = () => {
return useQuery({
queryKey: ['Designation'],
queryFn: () => getDesignation()
});
}
export const useRegisterContractor = () => {
return useMutation({
mutationFn: (payload: any) => registerContractor(payload),
});
};
export const useRagistrationState = () => {
return useMutation({
mutationFn: () => getRagistrationState(),
});
};
//////////////////////////////////////////////////////
export const usefetchMasterData = () => {
return useQuery({
queryKey: ['MasterData'],
queryFn: () => fetchMasterData()
});
}
export const useCityDropdown = () => {
return useMutation({
mutationFn: (stateId: number) => fetchCityDropdown(stateId),
});
};
export const useVerifyPan = () =>
useMutation({
mutationFn: verifyPanHandler,
});
export const useSendAadhaarOtp = () =>
useMutation({
mutationFn: sendAadhaarOtp,
});
export const useVerifyAadhaarOtp = () =>
useMutation({
mutationFn: verifyAadhaarOtp,
});
export const useVerifyGstNumber = () =>
useMutation({
mutationFn: verifyGstNumber,
});
export const useContractorStageTwoSubmit = () =>
useMutation({
mutationFn: contractorStageTwoSubmit,
});
export const useContractorStageThreeSubmit = () =>
useMutation({
mutationFn: contractorStageThreeSubmit,
});
+152 -1
View File
@@ -1,9 +1,19 @@
import axios from "axios"; import axios from "axios";
import { DASHBOARD_COUNT, EMD_CHECK, FORARD_AUCTION_ITEM, GET_MY_AUCTION, GET_MY_TENDER, GET_TENDER_DETAILS, LIVE_AUCTION, LIVE_TENDER, LOG_IN_URL, PROCEED_PURCHASE_AUCTION, PROCEED_TO_BID, PURCHASE_OFFLINE_AUCTION, PURCHASE_TENDER_OFFLINE, REVERSE_AUCTION_ITEM, TENDER_LOGIN } from "./ApiUrls"; import { ALL_DESIGNATION, DASHBOARD_COUNT, EMD_CHECK, FORARD_AUCTION_ITEM, GET_MASTER_DATA, GET_MY_AUCTION, GET_MY_TENDER, GET_REGISTRATION_STATE, GET_TENDER_DETAILS, GETCONTRACTORBYSTATE, LIVE_AUCTION, LIVE_TENDER, LOG_IN_URL, PROCEED_PURCHASE_AUCTION, PROCEED_TO_BID, PURCHASE_OFFLINE_AUCTION, PURCHASE_TENDER_OFFLINE, REJ_STAGE_TWO, REVERSE_AUCTION_ITEM, SAVE_CONTRACTOR_STAGE1, SEND_ADHAROTP, STAGETHREE, TENDER_LOGIN, VERIFY_ADHAR, VERIFY_GST,VERIFY_ORGPAN } from "./ApiUrls";
import { apiCall } from "../../Axios/Axios"; import { apiCall } from "../../Axios/Axios";
// User // User
type DropdownOption = { label: string; value: number | string };
type State = { stateId: number; stateName: string };
type ContractorClass = { contClassId: number; contClassName?: string };
type Org = { orgId: number; organizationType: string };
type MSME = { msmeId: number; comName: string };
type Social = { socialCategoryId: number; categoryName: string };
type Designation = { designationid: number; designationName: string };
type City = { id: number; name: string };
export const userLogin = async (payload: { emailAdd: string, password: string }): Promise<any> => { export const userLogin = async (payload: { emailAdd: string, password: string }): Promise<any> => {
try { try {
// const response = await axios.post(LOG_IN_URL, { ...payload, divice: "mobileApp" }); // const response = await axios.post(LOG_IN_URL, { ...payload, divice: "mobileApp" });
@@ -13,7 +23,24 @@ export const userLogin = async (payload: { emailAdd: string, password: string })
throw error.response?.data || error.message; throw error.response?.data || error.message;
} }
}; };
export const userAuctionLogin = async (payload: { emailAdd: string, password: string }): Promise<any> => {
try {
const response = await axios.post(LOG_IN_URL, { ...payload, device: "mobileApp" });
return response.data;
} catch (error: any) {
throw error.response?.data || error.message;
}
};
export const registerContractor = async (payload: any): Promise<any> => {
console.log("registerContractor payload : ", payload)
try {
const response = await axios.post(SAVE_CONTRACTOR_STAGE1, { ...payload, device: "mobileApp" });
return response.data;
} catch (error: any) {
throw error.response?.data || error.message;
}
};
export const fetchDashboard = async (): Promise<any> => { export const fetchDashboard = async (): Promise<any> => {
const data = await apiCall<any>('get', `${DASHBOARD_COUNT}`); const data = await apiCall<any>('get', `${DASHBOARD_COUNT}`);
return data return data
@@ -110,3 +137,127 @@ export const proceedToBid = async (tenderId: string): Promise<any> => {
); );
return data; return data;
} }
export const getDesignation = async (): Promise<any> => {
const data = await axios.get(ALL_DESIGNATION).then((response) => response.data);
return data;
}
export const getRagistrationState = async (): Promise<any> => {
const data = await apiCall<any>(
'get',
`${GET_REGISTRATION_STATE}`
);
return data;
}
////////////////////////////////////////////////////////////////////
export const fetchMasterData = async (): Promise<any> => {
const data = await apiCall<any>(
'get',
`${GET_MASTER_DATA}`
);
return data;
};
export const fetchCityDropdown = async (stateId: number): Promise<any> => {
const res = await apiCall<{ statusCode: number; data: City[] }>(
'get',
`${GETCONTRACTORBYSTATE}?stateId=${stateId}`,
);
console.log("--",res)
if (res.statusCode !== 200 || !res.data) {
throw new Error('Failed load cities');
}
return res.data.map(item => ({
label: item.name,
value: item.id,
}));
};
export const verifyPanHandler = (
payload: {
dob: string;
name: string;
panNumber: string;
}
): Promise<any> => {
return apiCall<any>(
'post',
VERIFY_ORGPAN,
payload,
);
};
export const sendAadhaarOtp = (
payload: any
): Promise<any> => {
return apiCall<any>('post', SEND_ADHAROTP, payload);
};
export type VerifyAadhaarOtpPayload = {
otp: string;
refNumber: string;
};
export const verifyAadhaarOtp = (
payload: {
otp: string;
refNumber: string;
}
): Promise<any> => {
return apiCall<any>(
'post',
VERIFY_ADHAR,
payload,
);
};
export type VerifyGstPayload = {
gstNumber: string;
};
export const verifyGstNumber = (
payload: {
gstNumber: string;
}
): Promise<any> => {
return apiCall<any>(
'post',
VERIFY_GST,
payload,
);
};
export const contractorStageTwoSubmit = (
fileData: any
): Promise<any> => {
return apiCall<any>(
'post',
REJ_STAGE_TWO,
fileData,
undefined,
'multipart/form-data'
);
};
export const contractorStageThreeSubmit = (
payload: any
): Promise<any> => {
return apiCall<any>(
'post',
STAGETHREE,
payload,
);
};
View File