1 package versioned.host.exp.exponent
2 
3 import expo.modules.application.ApplicationPackage
4 import expo.modules.av.AVPackage
5 import expo.modules.av.video.VideoViewModule
6 import expo.modules.backgroundfetch.BackgroundFetchPackage
7 import expo.modules.barcodescanner.BarCodeScannerModule
8 import expo.modules.barcodescanner.BarCodeScannerPackage
9 import expo.modules.battery.BatteryModule
10 import expo.modules.blur.BlurModule
11 import expo.modules.brightness.BrightnessModule
12 import expo.modules.calendar.CalendarPackage
13 import expo.modules.camera.CameraViewModule
14 import expo.modules.cellular.CellularModule
15 import expo.modules.clipboard.ClipboardModule
16 import expo.modules.constants.ConstantsModule
17 import expo.modules.constants.ConstantsPackage
18 import expo.modules.contacts.ContactsPackage
19 import expo.modules.core.interfaces.Package
20 import expo.modules.crypto.CryptoModule
21 import expo.modules.device.DeviceModule
22 import expo.modules.documentpicker.DocumentPickerModule
23 import expo.modules.easclient.EASClientModule
24 import expo.modules.print.PrintModule
25 import expo.modules.facedetector.FaceDetectorPackage
26 import expo.modules.filesystem.FileSystemModule
27 import expo.modules.filesystem.FileSystemPackage
28 import expo.modules.font.FontLoaderPackage
29 import expo.modules.gl.GLPackage
30 import expo.modules.gl.GLViewModule
31 import expo.modules.haptics.HapticsModule
32 import expo.modules.image.ExpoImageModule
33 import expo.modules.imageloader.ImageLoaderPackage
34 import expo.modules.imagemanipulator.ImageManipulatorModule
35 import expo.modules.imagepicker.ImagePickerModule
36 import expo.modules.intentlauncher.IntentLauncherModule
37 import expo.modules.keepawake.KeepAwakePackage
38 import expo.modules.kotlin.ModulesProvider
39 import expo.modules.kotlin.modules.Module
40 import expo.modules.lineargradient.LinearGradientModule
41 import expo.modules.localauthentication.LocalAuthenticationPackage
42 import expo.modules.localization.LocalizationModule
43 import expo.modules.location.LocationPackage
44 import expo.modules.mailcomposer.MailComposerModule
45 import expo.modules.manifests.core.Manifest
46 import expo.modules.medialibrary.MediaLibraryModule
47 import expo.modules.navigationbar.NavigationBarPackage
48 import expo.modules.network.NetworkModule
49 import expo.modules.notifications.NotificationsPackage
50 import expo.modules.permissions.PermissionsPackage
51 import expo.modules.random.RandomModule
52 import expo.modules.screencapture.ScreenCaptureModule
53 import expo.modules.screenorientation.ScreenOrientationModule
54 import expo.modules.securestore.SecureStorePackage
55 import expo.modules.sensors.SensorsPackage
56 import expo.modules.sensors.modules.AccelerometerModule
57 import expo.modules.sensors.modules.BarometerModule
58 import expo.modules.sensors.modules.DeviceMotionModule
59 import expo.modules.sensors.modules.GyroscopeModule
60 import expo.modules.sensors.modules.LightSensorModule
61 import expo.modules.sensors.modules.MagnetometerModule
62 import expo.modules.sensors.modules.MagnetometerUncalibratedModule
63 import expo.modules.sensors.modules.PedometerModule
64 import expo.modules.sharing.SharingModule
65 import expo.modules.sms.SMSModule
66 import expo.modules.speech.SpeechModule
67 import expo.modules.splashscreen.SplashScreenModule
68 import expo.modules.splashscreen.SplashScreenPackage
69 import expo.modules.sqlite.SQLiteModule
70 import expo.modules.storereview.StoreReviewModule
71 import expo.modules.systemui.SystemUIModule
72 import expo.modules.systemui.SystemUIPackage
73 import expo.modules.taskManager.TaskManagerPackage
74 import expo.modules.updates.UpdatesPackage
75 import expo.modules.videothumbnails.VideoThumbnailsModule
76 import expo.modules.webbrowser.WebBrowserModule
77 
78 object ExperiencePackagePicker : ModulesProvider {
79   private val EXPO_MODULES_PACKAGES = listOf(
80     AVPackage(),
81     ApplicationPackage(),
82     BackgroundFetchPackage(),
83     BarCodeScannerPackage(),
84     CalendarPackage(),
85     ConstantsPackage(),
86     ContactsPackage(),
87     FaceDetectorPackage(),
88     FileSystemPackage(),
89     FontLoaderPackage(),
90     GLPackage(),
91     ImageLoaderPackage(),
92     KeepAwakePackage(),
93     LocalAuthenticationPackage(),
94     LocationPackage(),
95     NavigationBarPackage(),
96     NotificationsPackage(),
97     PermissionsPackage(),
98     SecureStorePackage(),
99     SensorsPackage(),
100     SplashScreenPackage(),
101     SystemUIPackage(),
102     TaskManagerPackage(),
103     UpdatesPackage(),
104   )
105 
106   /**
107    * Returns all available packages.
108    */
109   fun packages(): List<Package> {
110     return EXPO_MODULES_PACKAGES
111   }
112 
113   /**
114    * Returns packages filtered based on the app's manifest.
115    * For now, filtering is not applied but it is on the todo list.
116    */
117   fun packages(manifest: Manifest?): List<Package> {
118     return EXPO_MODULES_PACKAGES
119   }
120 
121   override fun getModulesList(): List<Class<out Module>> = listOf(
122     // Sensors
123     AccelerometerModule::class.java,
124     BarometerModule::class.java,
125     GyroscopeModule::class.java,
126     LightSensorModule::class.java,
127     DeviceMotionModule::class.java,
128     MagnetometerModule::class.java,
129     MagnetometerUncalibratedModule::class.java,
130     PedometerModule::class.java,
131     // End of Sensors
132     BatteryModule::class.java,
133     BarCodeScannerModule::class.java,
134     BlurModule::class.java,
135     CameraViewModule::class.java,
136     CellularModule::class.java,
137     ClipboardModule::class.java,
138     CryptoModule::class.java,
139     ConstantsModule::class.java,
140     DeviceModule::class.java,
141     DocumentPickerModule::class.java,
142     EASClientModule::class.java,
143     FileSystemModule::class.java,
144     PrintModule::class.java,
145     GLViewModule::class.java,
146     HapticsModule::class.java,
147     ImagePickerModule::class.java,
148     ImageManipulatorModule::class.java,
149     ExpoImageModule::class.java,
150     IntentLauncherModule::class.java,
151     LinearGradientModule::class.java,
152     LocalizationModule::class.java,
153     MailComposerModule::class.java,
154     MediaLibraryModule::class.java,
155     NetworkModule::class.java,
156     RandomModule::class.java,
157     ScreenCaptureModule::class.java,
158     ScreenOrientationModule::class.java,
159     SMSModule::class.java,
160     SharingModule::class.java,
161     SpeechModule::class.java,
162     SplashScreenModule::class.java,
163     StoreReviewModule::class.java,
164     SQLiteModule::class.java,
165     SystemUIModule::class.java,
166     VideoThumbnailsModule::class.java,
167     VideoViewModule::class.java,
168     WebBrowserModule::class.java,
169     BrightnessModule::class.java,
170   )
171 }
172