Files
Eric FELIXINE e30ae8ed09 feat(smart-app): implement complete mobile app MVP
- 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
2026-06-01 18:00:35 -04:00

3 lines
1.2 KiB
JavaScript

import{share as r,makeSubject as t,mergeMap as e,filter as n,takeUntil as o,delay as a,fromValue as i,merge as u}from"wonka";import{makeOperation as y}from"@urql/core";function c(){return(c=Object.assign||function(r){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n])}return r}).apply(this,arguments)}function f(f){var p=f.retryIf,l=f.retryWith,m=f.initialDelayMs||1e3,v=f.maxDelayMs||15e3,s=f.maxNumberAttempts||2,d=f.randomDelay||!0;return function(f){var k=f.forward;return function(f){var x=r(f),h=t(),w=h.source,D=h.next,b=e((function(r){var t=r.key,e=r.context,u=(e.retryCount||0)+1,f=e.retryDelay||m,p=Math.random()+1.5;d&&f*p<v&&(f*=p);var l=n((function(r){return("query"===r.kind||"teardown"===r.kind)&&r.key===t}))(x);return o(l)(a(f)(i(y(r.kind,r,c({},r.context,{retryDelay:f,retryCount:u})))))}))(w);return n((function(r){if(!r.error||!(p?p(r.error,r.operation):l||r.error.networkError))return!0;if(!((r.operation.context.retryCount||0)>=s-1)){var t=l?l(r.error,r.operation):r.operation;return!t||(D(t),!1)}return!0}))(r(k(u([x,b]))))}}}export{f as retryExchange};
//# sourceMappingURL=urql-exchange-retry.min.mjs.map