1 package versioned.host.exp.exponent
2 
3 import expo.modules.application.ApplicationPackage
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.permissions.PermissionsPackage
58 import expo.modules.print.PrintModule
59 import expo.modules.random.RandomModule
60 import expo.modules.screencapture.ScreenCaptureModule
61 import expo.modules.screenorientation.ScreenOrientationModule
62 import expo.modules.sensors.SensorsPackage
63 import expo.modules.sensors.modules.AccelerometerModule
64 import expo.modules.sensors.modules.BarometerModule
65 import expo.modules.sensors.modules.DeviceMotionModule
66 import expo.modules.sensors.modules.GyroscopeModule
67 import expo.modules.sensors.modules.LightSensorModule
68 import expo.modules.sensors.modules.MagnetometerModule
69 import expo.modules.sensors.modules.MagnetometerUncalibratedModule
70 import expo.modules.sensors.modules.PedometerModule
71 import expo.modules.sharing.SharingModule
72 import expo.modules.sms.SMSModule
73 import expo.modules.speech.SpeechModule
74 import expo.modules.splashscreen.SplashScreenModule
75 import expo.modules.splashscreen.SplashScreenPackage
76 import expo.modules.sqlite.SQLiteModule
77 import expo.modules.storereview.StoreReviewModule
78 import expo.modules.systemui.SystemUIModule
79 import expo.modules.systemui.SystemUIPackage
80 import expo.modules.taskManager.TaskManagerPackage
81 import expo.modules.updates.UpdatesPackage
82 import expo.modules.videothumbnails.VideoThumbnailsModule
83 import expo.modules.webbrowser.WebBrowserModule
84 
85 object ExperiencePackagePicker : ModulesProvider {
86   private val EXPO_MODULES_PACKAGES = listOf(
87     AVPackage(),
88     ApplicationPackage(),
89     BarCodeScannerPackage(),
90     ConstantsPackage(),
91     ContactsPackage(),
92     FaceDetectorPackage(),
93     FileSystemPackage(),
94     ImageLoaderPackage(),
95     KeepAwakePackage(),
96     LocationPackage(),
97     NavigationBarPackage(),
98     NotificationsPackage(),
99     PermissionsPackage(),
100     SensorsPackage(),
101     SplashScreenPackage(),
102     SystemUIPackage(),
103     TaskManagerPackage(),
104     UpdatesPackage(),
105   )
106 
107   /**
108    * Returns all available packages.
109    */
110   fun packages(): List<Package> {
111     return EXPO_MODULES_PACKAGES
112   }
113 
114   /**
115    * Returns packages filtered based on the app's manifest.
116    * For now, filtering is not applied but it is on the todo list.
117    */
118   fun packages(manifest: Manifest?): List<Package> {
119     return EXPO_MODULES_PACKAGES
120   }
121 
122   override fun getModulesList(): List<Class<out Module>> = listOf(
123     AVModule::class.java,
124     // Sensors
125     AccelerometerModule::class.java,
126     BarometerModule::class.java,
127     GyroscopeModule::class.java,
128     LightSensorModule::class.java,
129     DeviceMotionModule::class.java,
130     MagnetometerModule::class.java,
131     MagnetometerUncalibratedModule::class.java,
132     PedometerModule::class.java,
133     // End of Sensors
134     // Notifications
135     BadgeModule::class.java,
136     PushTokenModule::class.java,
137     NotificationPermissionsModule::class.java,
138     NotificationChannelManagerModule::class.java,
139     NotificationChannelGroupManagerModule::class.java,
140     ExpoBackgroundNotificationTasksModule::class.java,
141     // End of Notifications
142     BatteryModule::class.java,
143     BackgroundFetchModule::class.java,
144     BarCodeScannerModule::class.java,
145     BlurModule::class.java,
146     CalendarModule::class.java,
147     CameraViewModule::class.java,
148     CellularModule::class.java,
149     ClipboardModule::class.java,
150     CryptoModule::class.java,
151     ConstantsModule::class.java,
152     DeviceModule::class.java,
153     DocumentPickerModule::class.java,
154     EASClientModule::class.java,
155     FileSystemModule::class.java,
156     PrintModule::class.java,
157     GLViewModule::class.java,
158     GLObjectManagerModule::class.java,
159     HapticsModule::class.java,
160     ImagePickerModule::class.java,
161     ImageManipulatorModule::class.java,
162     ExpoImageModule::class.java,
163     IntentLauncherModule::class.java,
164     KeepAwakeModule::class.java,
165     LinearGradientModule::class.java,
166     LocalAuthenticationModule::class.java,
167     LocalizationModule::class.java,
168     MailComposerModule::class.java,
169     MediaLibraryModule::class.java,
170     NavigationBarModule::class.java,
171     NetworkModule::class.java,
172     RandomModule::class.java,
173     ScreenCaptureModule::class.java,
174     ScreenOrientationModule::class.java,
175     // SecureStoreModule is not added here, instead it is added in ExpoModuleRegistryAdapter.kt,
176     // because it needs access to scopedContext for Expo Go support
177     SMSModule::class.java,
178     SharingModule::class.java,
179     SpeechModule::class.java,
180     SplashScreenModule::class.java,
181     StoreReviewModule::class.java,
182     SQLiteModule::class.java,
183     SystemUIModule::class.java,
184     VideoThumbnailsModule::class.java,
185     VideoViewModule::class.java,
186     WebBrowserModule::class.java,
187     BrightnessModule::class.java,
188   )
189 }
190