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.TaskManagerModule
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     BarCodeScannerPackage(),
89     ConstantsPackage(),
90     ContactsPackage(),
91     FaceDetectorPackage(),
92     FileSystemPackage(),
93     ImageLoaderPackage(),
94     KeepAwakePackage(),
95     LocationPackage(),
96     NavigationBarPackage(),
97     NotificationsPackage(),
98     SensorsPackage(),
99     SplashScreenPackage(),
100     SystemUIPackage(),
101     TaskManagerPackage(),
102     UpdatesPackage(),
103   )
104 
105   /**
106    * Returns all available packages.
107    */
packagesnull108   fun packages(): List<Package> {
109     return EXPO_MODULES_PACKAGES
110   }
111 
112   /**
113    * Returns packages filtered based on the app's manifest.
114    * For now, filtering is not applied but it is on the todo list.
115    */
packagesnull116   fun packages(manifest: Manifest?): List<Package> {
117     return EXPO_MODULES_PACKAGES
118   }
119 
getModulesListnull120   override fun getModulesList(): List<Class<out Module>> = listOf(
121     AVModule::class.java,
122     ApplicationModule::class.java,
123     // Sensors
124     AccelerometerModule::class.java,
125     BarometerModule::class.java,
126     GyroscopeModule::class.java,
127     LightSensorModule::class.java,
128     DeviceMotionModule::class.java,
129     MagnetometerModule::class.java,
130     MagnetometerUncalibratedModule::class.java,
131     PedometerModule::class.java,
132     // End of Sensors
133     // Notifications
134     BadgeModule::class.java,
135     PushTokenModule::class.java,
136     NotificationPermissionsModule::class.java,
137     NotificationChannelManagerModule::class.java,
138     NotificationChannelGroupManagerModule::class.java,
139     ExpoBackgroundNotificationTasksModule::class.java,
140     // End of Notifications
141     BatteryModule::class.java,
142     BackgroundFetchModule::class.java,
143     BarCodeScannerModule::class.java,
144     BlurModule::class.java,
145     CalendarModule::class.java,
146     CameraViewModule::class.java,
147     CellularModule::class.java,
148     ClipboardModule::class.java,
149     CryptoModule::class.java,
150     ConstantsModule::class.java,
151     DeviceModule::class.java,
152     DocumentPickerModule::class.java,
153     EASClientModule::class.java,
154     FileSystemModule::class.java,
155     PrintModule::class.java,
156     GLViewModule::class.java,
157     GLObjectManagerModule::class.java,
158     HapticsModule::class.java,
159     ImagePickerModule::class.java,
160     ImageManipulatorModule::class.java,
161     ExpoImageModule::class.java,
162     IntentLauncherModule::class.java,
163     KeepAwakeModule::class.java,
164     LinearGradientModule::class.java,
165     LocalAuthenticationModule::class.java,
166     LocalizationModule::class.java,
167     MailComposerModule::class.java,
168     MediaLibraryModule::class.java,
169     NavigationBarModule::class.java,
170     NetworkModule::class.java,
171     RandomModule::class.java,
172     ScreenCaptureModule::class.java,
173     ScreenOrientationModule::class.java,
174     // SecureStoreModule is not added here, instead it is added in ExpoModuleRegistryAdapter.kt,
175     // because it needs access to scopedContext for Expo Go support
176     SMSModule::class.java,
177     SharingModule::class.java,
178     SpeechModule::class.java,
179     SplashScreenModule::class.java,
180     StoreReviewModule::class.java,
181     SQLiteModule::class.java,
182     SystemUIModule::class.java,
183     TaskManagerModule::class.java,
184     VideoThumbnailsModule::class.java,
185     VideoViewModule::class.java,
186     WebBrowserModule::class.java,
187     BrightnessModule::class.java,
188   )
189 }
190