- App.tsx: full navigation (Auth stack + Main tabs with 5 screens) - Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen - HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors - MapScreen: interactive map with layer toggles (6 layers) - MarketplaceScreen: categories (6), products (5), search - ChatScreen: AI chat with quick prompts (4), bot responses - ProfileScreen: user info, stats, menu (9 items), logout - AlertsScreen: alert list with severity, acknowledge - SensorsScreen: sensor list with type filters (6 types), search - ZonesScreen: zone cards with stats - SettingsScreen: language picker (FR/EN/ES/DE), privacy, about - Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n - Hooks: useSensors, useAlerts, useNotifications, useLocation - Components: Card, Button, LoadingSpinner, ErrorBoundary, Header - Services: iotService, notificationService (with axios API client) - Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN) - Theme: colors.ts with full design system (Blue Ocean palette) - Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
115 lines
3.9 KiB
C++
115 lines
3.9 KiB
C++
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
// This C++ file is part of the default configuration used by apps and is placed
|
|
// inside react-native to encapsulate it from user space (so you won't need to
|
|
// touch C++/Cmake code at all on Android).
|
|
//
|
|
// If you wish to customize it (because you want to manually link a C++ library
|
|
// or pass a custom compilation flag) you can:
|
|
//
|
|
// 1. Copy this CMake file inside the `android/app/src/main/jni` folder of your
|
|
// project
|
|
// 2. Copy the OnLoad.cpp (in this same folder) file inside the same folder as
|
|
// above.
|
|
// 3. Extend your `android/app/build.gradle` as follows
|
|
//
|
|
// android {
|
|
// // Other config here...
|
|
// externalNativeBuild {
|
|
// cmake {
|
|
// path "src/main/jni/CMakeLists.txt"
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
#include <DefaultComponentsRegistry.h>
|
|
#include <DefaultTurboModuleManagerDelegate.h>
|
|
#include <fbjni/fbjni.h>
|
|
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
|
|
#include <rncli.h>
|
|
|
|
#ifdef REACT_NATIVE_APP_CODEGEN_HEADER
|
|
#include REACT_NATIVE_APP_CODEGEN_HEADER
|
|
#endif
|
|
#ifdef REACT_NATIVE_APP_COMPONENT_DESCRIPTORS_HEADER
|
|
#include REACT_NATIVE_APP_COMPONENT_DESCRIPTORS_HEADER
|
|
#endif
|
|
|
|
namespace facebook::react {
|
|
|
|
void registerComponents(
|
|
std::shared_ptr<const ComponentDescriptorProviderRegistry> registry) {
|
|
// Custom Fabric Components go here. You can register custom
|
|
// components coming from your App or from 3rd party libraries here.
|
|
//
|
|
// providerRegistry->add(concreteComponentDescriptorProvider<
|
|
// MyComponentDescriptor>());
|
|
|
|
// We link app local components if available
|
|
#ifdef REACT_NATIVE_APP_COMPONENT_REGISTRATION
|
|
REACT_NATIVE_APP_COMPONENT_REGISTRATION(registry);
|
|
#endif
|
|
|
|
// And we fallback to the components autolinked by RN CLI
|
|
rncli_registerProviders(registry);
|
|
}
|
|
|
|
std::shared_ptr<TurboModule> cxxModuleProvider(
|
|
const std::string& name,
|
|
const std::shared_ptr<CallInvoker>& jsInvoker) {
|
|
// Here you can provide your CXX Turbo Modules coming from
|
|
// either your application or from external libraries. The approach to follow
|
|
// is similar to the following (for a module called `NativeCxxModuleExample`):
|
|
//
|
|
// if (name == NativeCxxModuleExample::kModuleName) {
|
|
// return std::make_shared<NativeCxxModuleExample>(jsInvoker);
|
|
// }
|
|
|
|
// And we fallback to the CXX module providers autolinked by RN CLI
|
|
return rncli_cxxModuleProvider(name, jsInvoker);
|
|
}
|
|
|
|
std::shared_ptr<TurboModule> javaModuleProvider(
|
|
const std::string& name,
|
|
const JavaTurboModule::InitParams& params) {
|
|
// Here you can provide your own module provider for TurboModules coming from
|
|
// either your application or from external libraries. The approach to follow
|
|
// is similar to the following (for a library called `samplelibrary`):
|
|
//
|
|
// auto module = samplelibrary_ModuleProvider(name, params);
|
|
// if (module != nullptr) {
|
|
// return module;
|
|
// }
|
|
// return rncore_ModuleProvider(name, params);
|
|
|
|
// We link app local modules if available
|
|
#ifdef REACT_NATIVE_APP_MODULE_PROVIDER
|
|
auto module = REACT_NATIVE_APP_MODULE_PROVIDER(name, params);
|
|
if (module != nullptr) {
|
|
return module;
|
|
}
|
|
#endif
|
|
|
|
// And we fallback to the module providers autolinked by RN CLI
|
|
return rncli_ModuleProvider(name, params);
|
|
}
|
|
|
|
} // namespace facebook::react
|
|
|
|
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
|
|
return facebook::jni::initialize(vm, [] {
|
|
facebook::react::DefaultTurboModuleManagerDelegate::cxxModuleProvider =
|
|
&facebook::react::cxxModuleProvider;
|
|
facebook::react::DefaultTurboModuleManagerDelegate::javaModuleProvider =
|
|
&facebook::react::javaModuleProvider;
|
|
facebook::react::DefaultComponentsRegistry::
|
|
registerComponentDescriptorsFromEntryPoint =
|
|
&facebook::react::registerComponents;
|
|
});
|
|
}
|