1 package versioned.host.exp.exponent
2 
3 import expo.modules.application.ApplicationModule
4 import expo.modules.av.AVModule
5 import expo.modules.av.AVPackage
6 import expo.modules.av.video.VideoViewModule
7 import expo.modules.backgroundfetch.BackgroundFetchModule
8 import expo.modules.barcodescanner.BarCodeScannerModule
9 import expo.modules.barcodescanner.BarCodeScannerPackage
10 import expo.modules.battery.BatteryModule
11 import expo.modules.blur.BlurModule
12 import expo.modules.brightness.BrightnessModule
13 import expo.modules.calendar.CalendarModule
14 import expo.modules.camera.CameraViewModule
15 import expo.modules.cellular.CellularModule
16 import expo.modules.clipboard.ClipboardModule
17 import expo.modules.constants.ConstantsModule
18 import expo.modules.constants.ConstantsPackage
19 import expo.modules.contacts.ContactsPackage
20 import expo.modules.core.interfaces.Package
21 import expo.modules.crypto.CryptoModule
22 import expo.modules.device.DeviceModule
23 import expo.modules.documentpicker.DocumentPickerModule
24 import expo.modules.easclient.EASClientModule
25 import expo.modules.facedetector.FaceDetectorPackage
26 import expo.modules.filesystem.FileSystemModule
27 import expo.modules.filesystem.FileSystemPackage
28 import expo.modules.gl.GLObjectManagerModule
29 import expo.modules.gl.GLViewModule
30 import expo.modules.haptics.HapticsModule
31 import expo.modules.image.ExpoImageModule
32 import expo.modules.imageloader.ImageLoaderPackage
33 import expo.modules.imagemanipulator.ImageManipulatorModule
34 import expo.modules.imagepicker.ImagePickerModule
35 import expo.modules.intentlauncher.IntentLauncherModule
36 import expo.modules.keepawake.KeepAwakeModule
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.LocalAuthenticationModule
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.NavigationBarModule
48 import expo.modules.navigationbar.NavigationBarPackage
49 import expo.modules.network.NetworkModule
50 import expo.modules.notifications.NotificationsPackage
51 import expo.modules.notifications.badge.BadgeModule
52 import expo.modules.notifications.notifications.background.ExpoBackgroundNotificationTasksModule
53 import expo.modules.notifications.notifications.channels.NotificationChannelGroupManagerModule
54 import expo.modules.notifications.notifications.channels.NotificationChannelManagerModule
55 import expo.modules.notifications.permissions.NotificationPermissionsModule
56 import expo.modules.notifications.tokens.PushTokenModule
57 import expo.modules.print.PrintModule
58 import expo.modules.random.RandomModule
59 import expo.modules.screencapture.ScreenCaptureModule
60 import expo.modules.screenorientation.ScreenOrientationModule
61 import expo.modules.sensors.SensorsPackage
62 import expo.modules.sensors.modules.AccelerometerModule
63 import expo.modules.sensors.modules.BarometerModule
64 import expo.modules.sensors.modules.DeviceMotionModule
65 import expo.modules.sensors.modules.GyroscopeModule
66 import expo.modules.sensors.modules.LightSensorModule
67 import expo.modules.sensors.modules.MagnetometerModule
68 import expo.modules.sensors.modules.MagnetometerUncalibratedModule
69 import expo.modules.sensors.modules.PedometerModule
70 import expo.modules.sharing.SharingModule
71 import expo.modules.sms.SMSModule
72 import expo.modules.speech.SpeechModule
73 import expo.modules.splashscreen.SplashScreenModule
74 import expo.modules.splashscreen.SplashScreenPackage
75 import expo.modules.sqlite.SQLiteModule
76 import expo.modules.storereview.StoreReviewModule
77 import expo.modules.systemui.SystemUIModule
78 import expo.modules.systemui.SystemUIPackage
79 import expo.modules.taskManager.TaskManagerPackage
80 import expo.modules.updates.UpdatesPackage
81 import expo.modules.videothumbnails.VideoThumbnailsModule
82 import expo.modules.webbrowser.WebBrowserModule
83 
84 object ExperiencePackagePicker : ModulesProvider {
85   private val EXPO_MODULES_PACKAGES = listOf(
86     AVPackage(),
87     BarCodeScannerPackage(),
88     ConstantsPackage(),
89     ContactsPackage(),
90     FaceDetectorPackage(),
91     FileSystemPackage(),
92     ImageLoaderPackage(),
93     KeepAwakePackage(),
94     LocationPackage(),
95     NavigationBarPackage(),
96     NotificationsPackage(),
97     SensorsPackage(),
98     SplashScreenPackage(),
99     SystemUIPackage(),
100     TaskManagerPackage(),
101     UpdatesPackage(),
102   )
103 
104   /**
105    * Returns all available packages.
106    */
107   fun packages(): List<Package> {
108     return EXPO_MODULES_PACKAGES
109   }
110 
111   /**
112    * Returns packages filtered based on the app's manifest.
113    * For now, filtering is not applied but it is on the todo list.
114    */
115   fun packages(manifest: Manifest?): List<Package> {
116     return EXPO_MODULES_PACKAGES
117   }
118 
119   override fun getModulesList(): List<Class<out Module>> = listOf(
120     AVModule::class.java,
121     ApplicationModule::class.java,
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     // Notifications
133     BadgeModule::class.java,
134     PushTokenModule::class.java,
135     NotificationPermissionsModule::class.java,
136     NotificationChannelManagerModule::class.java,
137     NotificationChannelGroupManagerModule::class.java,
138     ExpoBackgroundNotificationTasksModule::class.java,
139     // End of Notifications
140     BatteryModule::class.java,
141     BackgroundFetchModule::class.java,
142     BarCodeScannerModule::class.java,
143     BlurModule::class.java,
144     CalendarModule::class.java,
145     CameraViewModule::class.java,
146     CellularModule::class.java,
147     ClipboardModule::class.java,
148     CryptoModule::class.java,
149     ConstantsModule::class.java,
150     DeviceModule::class.java,
151     DocumentPickerModule::class.java,
152     EASClientModule::class.java,
153     FileSystemModule::class.java,
154     PrintModule::class.java,
155     GLViewModule::class.java,
156     GLObjectManagerModule::class.java,
157     HapticsModule::class.java,
158     ImagePickerModule::class.java,
159     ImageManipulatorModule::class.java,
160     ExpoImageModule::class.java,
161     IntentLauncherModule::class.java,
162     KeepAwakeModule::class.java,
163     LinearGradientModule::class.java,
164     LocalAuthenticationModule::class.java,
165     LocalizationModule::class.java,
166     MailComposerModule::class.java,
167     MediaLibraryModule::class.java,
168     NavigationBarModule::class.java,
169     NetworkModule::class.java,
170     RandomModule::class.java,
171     ScreenCaptureModule::class.java,
172     ScreenOrientationModule::class.java,
173     // SecureStoreModule is not added here, instead it is added in ExpoModuleRegistryAdapter.kt,
174     // because it needs access to scopedContext for Expo Go support
175     SMSModule::class.java,
176     SharingModule::class.java,
177     SpeechModule::class.java,
178     SplashScreenModule::class.java,
179     StoreReviewModule::class.java,
180     SQLiteModule::class.java,
181     SystemUIModule::class.java,
182     VideoThumbnailsModule::class.java,
183     VideoViewModule::class.java,
184     WebBrowserModule::class.java,
185     BrightnessModule::class.java,
186   )
187 }
188