- 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
80 lines
2.9 KiB
Objective-C
80 lines
2.9 KiB
Objective-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.
|
|
*/
|
|
|
|
#import "RCTLayoutAnimationGroup.h"
|
|
|
|
#import "RCTConvert.h"
|
|
#import "RCTLayoutAnimation.h"
|
|
|
|
@implementation RCTLayoutAnimationGroup
|
|
|
|
- (instancetype)initWithCreatingLayoutAnimation:(RCTLayoutAnimation *)creatingLayoutAnimation
|
|
updatingLayoutAnimation:(RCTLayoutAnimation *)updatingLayoutAnimation
|
|
deletingLayoutAnimation:(RCTLayoutAnimation *)deletingLayoutAnimation
|
|
callback:(RCTResponseSenderBlock)callback
|
|
{
|
|
if (self = [super init]) {
|
|
_creatingLayoutAnimation = creatingLayoutAnimation;
|
|
_updatingLayoutAnimation = updatingLayoutAnimation;
|
|
_deletingLayoutAnimation = deletingLayoutAnimation;
|
|
_callback = callback;
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
- (instancetype)initWithConfig:(NSDictionary *)config callback:(RCTResponseSenderBlock)callback
|
|
{
|
|
if (!config) {
|
|
return nil;
|
|
}
|
|
|
|
if (self = [super init]) {
|
|
NSTimeInterval duration = [RCTConvert NSTimeInterval:config[@"duration"]];
|
|
|
|
if (duration > 0.0 && duration < 0.01) {
|
|
RCTLogError(@"RCTLayoutAnimationGroup expects timings to be in ms, not seconds.");
|
|
duration = duration * 1000.0;
|
|
}
|
|
|
|
_creatingLayoutAnimation = [[RCTLayoutAnimation alloc] initWithDuration:duration config:config[@"create"]];
|
|
_updatingLayoutAnimation = [[RCTLayoutAnimation alloc] initWithDuration:duration config:config[@"update"]];
|
|
_deletingLayoutAnimation = [[RCTLayoutAnimation alloc] initWithDuration:duration config:config[@"delete"]];
|
|
_callback = callback;
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
- (BOOL)isEqual:(RCTLayoutAnimationGroup *)layoutAnimation
|
|
{
|
|
RCTLayoutAnimation *creatingLayoutAnimation = layoutAnimation.creatingLayoutAnimation;
|
|
RCTLayoutAnimation *updatingLayoutAnimation = layoutAnimation.updatingLayoutAnimation;
|
|
RCTLayoutAnimation *deletingLayoutAnimation = layoutAnimation.deletingLayoutAnimation;
|
|
|
|
return (_creatingLayoutAnimation == creatingLayoutAnimation ||
|
|
[_creatingLayoutAnimation isEqual:creatingLayoutAnimation]) &&
|
|
(_updatingLayoutAnimation == updatingLayoutAnimation ||
|
|
[_updatingLayoutAnimation isEqual:updatingLayoutAnimation]) &&
|
|
(_deletingLayoutAnimation == deletingLayoutAnimation ||
|
|
[_deletingLayoutAnimation isEqual:deletingLayoutAnimation]);
|
|
}
|
|
|
|
- (NSString *)description
|
|
{
|
|
return
|
|
[NSString stringWithFormat:
|
|
@"<%@: %p; creatingLayoutAnimation: %@; updatingLayoutAnimation: %@; deletingLayoutAnimation: %@>",
|
|
NSStringFromClass([self class]),
|
|
self,
|
|
[_creatingLayoutAnimation description],
|
|
[_updatingLayoutAnimation description],
|
|
[_deletingLayoutAnimation description]];
|
|
}
|
|
|
|
@end
|