feat: Implement RSSI service for iOS and Web platforms

- Added IosRssiService to handle synthetic RSSI data for iOS.
- Created WebRssiService to simulate RSSI scanning on the web.
- Defined shared types for WifiNetwork and RssiService in rssi.service.ts.
- Introduced simulation service to generate synthetic sensing data.
- Implemented WebSocket service for real-time data handling with reconnection logic.
- Established Zustand stores for managing application state related to MAT and pose data.
- Developed theme context and utility functions for consistent styling and formatting.
- Added type definitions for various application entities including API responses and sensing data.
- Created utility functions for color mapping and URL validation.
- Configured TypeScript settings for the mobile application.
This commit is contained in:
ruv
2026-03-02 10:30:33 -05:00
parent 02192b0232
commit fdc7142dfa
131 changed files with 24090 additions and 0 deletions
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
+36
View File
@@ -0,0 +1,36 @@
import React, { PropsWithChildren } from 'react';
import { render, type RenderOptions } from '@testing-library/react-native';
import { NavigationContainer } from '@react-navigation/native';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import { ThemeProvider } from '@/theme/ThemeContext';
type TestProvidersProps = PropsWithChildren<object>;
const TestProviders = ({ children }: TestProvidersProps) => (
<GestureHandlerRootView style={{ flex: 1 }}>
<SafeAreaProvider>
<ThemeProvider>{children}</ThemeProvider>
</SafeAreaProvider>
</GestureHandlerRootView>
);
const TestProvidersWithNavigation = ({ children }: TestProvidersProps) => (
<TestProviders>
<NavigationContainer>{children}</NavigationContainer>
</TestProviders>
);
interface RenderWithProvidersOptions extends Omit<RenderOptions, 'wrapper'> {
withNavigation?: boolean;
}
export const renderWithProviders = (
ui: React.ReactElement,
{ withNavigation, ...options }: RenderWithProvidersOptions = {},
) => {
return render(ui, {
...options,
wrapper: withNavigation ? TestProvidersWithNavigation : TestProviders,
});
};
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});
@@ -0,0 +1,5 @@
describe('placeholder', () => {
it('passes', () => {
expect(true).toBe(true);
});
});