@oxyhq/services 5.1.29 → 5.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -24
- package/UI_COMPONENTS.md +48 -0
- package/lib/commonjs/core/index.js +17 -4
- package/lib/commonjs/core/index.js.map +1 -1
- package/lib/commonjs/index.js +0 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/node/index.js +52 -0
- package/lib/commonjs/node/index.js.map +1 -0
- package/lib/commonjs/ui/index.js +9 -1
- package/lib/commonjs/ui/index.js.map +1 -1
- package/lib/commonjs/ui/navigation/OxyRouter.js +5 -0
- package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +6 -3
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +638 -0
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -0
- package/lib/module/core/index.js +17 -4
- package/lib/module/core/index.js.map +1 -1
- package/lib/module/index.js +0 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/node/index.js +20 -0
- package/lib/module/node/index.js.map +1 -0
- package/lib/module/ui/index.js +1 -0
- package/lib/module/ui/index.js.map +1 -1
- package/lib/module/ui/navigation/OxyRouter.js +5 -0
- package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +6 -3
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +632 -0
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -0
- package/lib/typescript/__tests__/ui/screens/AccountSettingsScreen.test.d.ts +2 -0
- package/lib/typescript/__tests__/ui/screens/AccountSettingsScreen.test.d.ts.map +1 -0
- package/lib/typescript/core/index.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +0 -3
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/node/index.d.ts +10 -0
- package/lib/typescript/node/index.d.ts.map +1 -0
- package/lib/typescript/ui/index.d.ts +1 -0
- package/lib/typescript/ui/index.d.ts.map +1 -1
- package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts +8 -0
- package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -0
- package/package.json +5 -22
- package/src/__tests__/ui/screens/AccountSettingsScreen.test.tsx +112 -0
- package/src/core/index.ts +16 -4
- package/src/index.ts +0 -3
- package/src/node/index.ts +17 -0
- package/src/ui/index.ts +1 -0
- package/src/ui/navigation/OxyRouter.tsx +5 -0
- package/src/ui/screens/AccountCenterScreen.tsx +3 -2
- package/src/ui/screens/AccountSettingsScreen.tsx +616 -0
- package/lib/commonjs/backend.js +0 -44
- package/lib/commonjs/backend.js.map +0 -1
- package/lib/commonjs/core-only.js +0 -44
- package/lib/commonjs/core-only.js.map +0 -1
- package/lib/commonjs/test-backend.js +0 -21
- package/lib/commonjs/test-backend.js.map +0 -1
- package/lib/module/backend.js +0 -17
- package/lib/module/backend.js.map +0 -1
- package/lib/module/core-only.js +0 -17
- package/lib/module/core-only.js.map +0 -1
- package/lib/module/test-backend.js +0 -18
- package/lib/module/test-backend.js.map +0 -1
- package/lib/typescript/backend.d.ts +0 -9
- package/lib/typescript/backend.d.ts.map +0 -1
- package/lib/typescript/core-only.d.ts +0 -9
- package/lib/typescript/core-only.d.ts.map +0 -1
- package/lib/typescript/test-backend.d.ts +0 -8
- package/lib/typescript/test-backend.d.ts.map +0 -1
- package/src/backend.ts +0 -14
- package/src/core-only.ts +0 -14
- package/src/test-backend.ts +0 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OxyHQServices Main Export File
|
|
3
|
-
*
|
|
4
|
-
* This is the full package export including React Native components.
|
|
5
|
-
* For Node.js backend usage, import from '@oxyhq/services/backend' instead.
|
|
6
3
|
*/
|
|
7
4
|
import OxyCore from './core';
|
|
8
5
|
import { OxyServices } from './core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,OAAO,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,EAEL,WAAW,EACX,kBAAkB,EAClB,MAAM,EAGN,YAAY,EACZ,YAAY,EACZ,mBAAmB,EAGnB,eAAe,EACf,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACX,MAAM,MAAM,CAAC;AAGd,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAG9C,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,cAAc,QAAQ,CAAC;AAGvB,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,qBAAqB,CAAC;AAGpC,OAAO,EAEL,WAAW,EACX,kBAAkB,EAClB,MAAM,EAGN,YAAY,EACZ,YAAY,EACZ,mBAAmB,EAGnB,eAAe,EACf,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACX,CAAC;AAGF,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAC;AACpD,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OxyHQServices Node.js Entry Point
|
|
3
|
+
*/
|
|
4
|
+
import { OxyServices, OXY_CLOUD_URL } from '../core';
|
|
5
|
+
import * as Models from '../models/interfaces';
|
|
6
|
+
export { OxyServices, OXY_CLOUD_URL };
|
|
7
|
+
export { Models };
|
|
8
|
+
export * from '../models/interfaces';
|
|
9
|
+
export default OxyServices;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,sBAAsB,CAAC;AAGrC,eAAe,WAAW,CAAC"}
|
|
@@ -13,5 +13,6 @@ export { default as SignInScreen } from './screens/SignInScreen';
|
|
|
13
13
|
export { default as SignUpScreen } from './screens/SignUpScreen';
|
|
14
14
|
export { default as AccountCenterScreen } from './screens/AccountCenterScreen';
|
|
15
15
|
export { default as AccountOverviewScreen } from './screens/AccountOverviewScreen';
|
|
16
|
+
export { default as AccountSettingsScreen } from './screens/AccountSettingsScreen';
|
|
16
17
|
export * from './navigation/types';
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,eAAe,EACf,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGnF,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,eAAe,EACf,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGnF,cAAc,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxyRouter.d.ts","sourceRoot":"","sources":["../../../../src/ui/navigation/OxyRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"OxyRouter.d.ts","sourceRoot":"","sources":["../../../../src/ui/navigation/OxyRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAmBnD,OAAO,EAAE,cAAc,EAAe,MAAM,SAAS,CAAC;AAsDtD,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAiGvC,CAAC;AAaF,eAAe,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountCenterScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/AccountCenterScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"AccountCenterScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/AccountCenterScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwIlD,CAAC;AAwFF,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BaseScreenProps } from '../navigation/types';
|
|
3
|
+
interface AccountSettingsScreenProps extends BaseScreenProps {
|
|
4
|
+
activeTab?: 'profile' | 'password' | 'notifications';
|
|
5
|
+
}
|
|
6
|
+
declare const AccountSettingsScreen: React.FC<AccountSettingsScreenProps>;
|
|
7
|
+
export default AccountSettingsScreen;
|
|
8
|
+
//# sourceMappingURL=AccountSettingsScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountSettingsScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/AccountSettingsScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAanD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,UAAU,0BAA2B,SAAQ,eAAe;IACxD,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,eAAe,CAAC;CACxD;AAED,QAAA,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAwc/D,CAAC;AA0IF,eAAe,qBAAqB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,30 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/services",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.30",
|
|
4
4
|
"description": "Reusable OxyHQ module to handle authentication, user management, karma system and more 🚀",
|
|
5
|
-
"main": "lib/commonjs/index.js",
|
|
6
|
-
"module": "lib/module/index.js",
|
|
7
|
-
"types": "lib/typescript/index.d.ts",
|
|
5
|
+
"main": "lib/commonjs/node/index.js",
|
|
6
|
+
"module": "lib/module/node/index.js",
|
|
7
|
+
"types": "lib/typescript/node/index.d.ts",
|
|
8
8
|
"react-native": "src/index.ts",
|
|
9
9
|
"source": "src/index.ts",
|
|
10
|
-
"exports": {
|
|
11
|
-
".": {
|
|
12
|
-
"types": "./lib/typescript/index.d.ts",
|
|
13
|
-
"import": "./lib/module/index.js",
|
|
14
|
-
"require": "./lib/commonjs/index.js",
|
|
15
|
-
"react-native": "./src/index.ts"
|
|
16
|
-
},
|
|
17
|
-
"./core": {
|
|
18
|
-
"types": "./lib/typescript/core-only.d.ts",
|
|
19
|
-
"import": "./lib/module/core-only.js",
|
|
20
|
-
"require": "./lib/commonjs/core-only.js"
|
|
21
|
-
},
|
|
22
|
-
"./backend": {
|
|
23
|
-
"types": "./lib/typescript/backend.d.ts",
|
|
24
|
-
"import": "./lib/module/backend.js",
|
|
25
|
-
"require": "./lib/commonjs/backend.js"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
10
|
"files": [
|
|
29
11
|
"src",
|
|
30
12
|
"lib",
|
|
@@ -64,6 +46,7 @@
|
|
|
64
46
|
"@react-native-async-storage/async-storage": "^2.1.2",
|
|
65
47
|
"axios": "^1.9.0",
|
|
66
48
|
"expo-font": "^13.3.1",
|
|
49
|
+
"form-data": "^4.0.0",
|
|
67
50
|
"expo-linear-gradient": "^14.1.4",
|
|
68
51
|
"invariant": "^2.2.4",
|
|
69
52
|
"jwt-decode": "^4.0.0",
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render, fireEvent, waitFor } from '@testing-library/react-native';
|
|
3
|
+
import AccountSettingsScreen from '../../../ui/screens/AccountSettingsScreen';
|
|
4
|
+
import { OxyContextProvider } from '../../../ui/context/OxyContext';
|
|
5
|
+
import { OxyServices } from '../../../core';
|
|
6
|
+
|
|
7
|
+
// Mock the OxyContext
|
|
8
|
+
jest.mock('../../../ui/context/OxyContext', () => ({
|
|
9
|
+
useOxy: jest.fn(() => ({
|
|
10
|
+
user: {
|
|
11
|
+
id: '123',
|
|
12
|
+
username: 'testuser',
|
|
13
|
+
email: 'test@example.com',
|
|
14
|
+
bio: 'Test bio',
|
|
15
|
+
avatar: { url: 'https://example.com/avatar.jpg' }
|
|
16
|
+
},
|
|
17
|
+
oxyServices: {
|
|
18
|
+
updateUser: jest.fn(() => Promise.resolve({
|
|
19
|
+
id: '123',
|
|
20
|
+
username: 'testuser',
|
|
21
|
+
email: 'test@example.com'
|
|
22
|
+
}))
|
|
23
|
+
},
|
|
24
|
+
isLoading: false
|
|
25
|
+
})),
|
|
26
|
+
OxyContextProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>
|
|
27
|
+
}));
|
|
28
|
+
|
|
29
|
+
// Mock the Avatar component
|
|
30
|
+
jest.mock('../../../ui/components/Avatar', () => 'Avatar');
|
|
31
|
+
|
|
32
|
+
describe('AccountSettingsScreen', () => {
|
|
33
|
+
const mockOxyServices = {
|
|
34
|
+
updateUser: jest.fn(() => Promise.resolve({
|
|
35
|
+
id: '123',
|
|
36
|
+
username: 'testuser',
|
|
37
|
+
email: 'test@example.com'
|
|
38
|
+
}))
|
|
39
|
+
} as unknown as OxyServices;
|
|
40
|
+
|
|
41
|
+
const defaultProps = {
|
|
42
|
+
goBack: jest.fn(),
|
|
43
|
+
theme: 'light' as const,
|
|
44
|
+
navigate: jest.fn(),
|
|
45
|
+
oxyServices: mockOxyServices,
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
it('renders correctly with default props', () => {
|
|
49
|
+
const { getByText, getByTestId } = render(
|
|
50
|
+
<AccountSettingsScreen {...defaultProps} />
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
// Check if the screen title is rendered
|
|
54
|
+
expect(getByText('Account Settings')).toBeTruthy();
|
|
55
|
+
|
|
56
|
+
// Check if profile form is rendered by default
|
|
57
|
+
expect(getByTestId('username-input')).toBeTruthy();
|
|
58
|
+
expect(getByTestId('email-input')).toBeTruthy();
|
|
59
|
+
expect(getByTestId('bio-input')).toBeTruthy();
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('switches between tabs correctly', async () => {
|
|
63
|
+
const { getByText, queryByTestId } = render(
|
|
64
|
+
<AccountSettingsScreen {...defaultProps} />
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
// Initially on profile tab
|
|
68
|
+
expect(queryByTestId('username-input')).toBeTruthy();
|
|
69
|
+
|
|
70
|
+
// Switch to password tab
|
|
71
|
+
fireEvent.press(getByText('Password'));
|
|
72
|
+
expect(queryByTestId('current-password-input')).toBeTruthy();
|
|
73
|
+
expect(queryByTestId('username-input')).toBeFalsy();
|
|
74
|
+
|
|
75
|
+
// Switch to notifications tab
|
|
76
|
+
fireEvent.press(getByText('Notifications'));
|
|
77
|
+
expect(queryByTestId('email-notifications-switch')).toBeTruthy();
|
|
78
|
+
expect(queryByTestId('current-password-input')).toBeFalsy();
|
|
79
|
+
|
|
80
|
+
// Switch back to profile tab
|
|
81
|
+
fireEvent.press(getByText('Profile'));
|
|
82
|
+
expect(queryByTestId('username-input')).toBeTruthy();
|
|
83
|
+
expect(queryByTestId('email-notifications-switch')).toBeFalsy();
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it('validates profile form inputs', async () => {
|
|
87
|
+
const { getByText, getByTestId } = render(
|
|
88
|
+
<AccountSettingsScreen {...defaultProps} />
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
// Clear username (which is required)
|
|
92
|
+
fireEvent.changeText(getByTestId('username-input'), '');
|
|
93
|
+
|
|
94
|
+
// Try to save with empty username
|
|
95
|
+
fireEvent.press(getByTestId('save-profile-button'));
|
|
96
|
+
|
|
97
|
+
// Should display error message
|
|
98
|
+
await waitFor(() => {
|
|
99
|
+
expect(getByText('Username is required')).toBeTruthy();
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it('opens with the specified activeTab', () => {
|
|
104
|
+
const { queryByTestId } = render(
|
|
105
|
+
<AccountSettingsScreen {...defaultProps} activeTab="password" />
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
// Should be on password tab
|
|
109
|
+
expect(queryByTestId('current-password-input')).toBeTruthy();
|
|
110
|
+
expect(queryByTestId('username-input')).toBeFalsy();
|
|
111
|
+
});
|
|
112
|
+
});
|
package/src/core/index.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import axios, { AxiosInstance, AxiosError, AxiosRequestConfig, InternalAxiosRequestConfig } from 'axios';
|
|
2
2
|
import { jwtDecode } from 'jwt-decode';
|
|
3
|
+
|
|
4
|
+
let NodeFormData: any = null;
|
|
5
|
+
if (typeof window === 'undefined') { // Check if in Node.js environment
|
|
6
|
+
try {
|
|
7
|
+
NodeFormData = require('form-data');
|
|
8
|
+
} catch (e) {
|
|
9
|
+
console.warn('form-data module not found, file uploads from Buffer may fail in Node.js');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
3
13
|
import {
|
|
4
14
|
OxyConfig,
|
|
5
15
|
User,
|
|
@@ -835,14 +845,16 @@ export class OxyServices {
|
|
|
835
845
|
): Promise<FileUploadResponse> {
|
|
836
846
|
try {
|
|
837
847
|
// Create form data to handle the file upload
|
|
838
|
-
const formData = new FormData();
|
|
848
|
+
const formData = typeof window === 'undefined' && NodeFormData ? new NodeFormData() : new FormData();
|
|
839
849
|
|
|
840
850
|
// Handle different file types (Browser vs Node.js)
|
|
841
851
|
if (typeof Buffer !== 'undefined' && file instanceof Buffer) {
|
|
842
852
|
// Node.js environment with Buffer
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
853
|
+
if (!NodeFormData) {
|
|
854
|
+
throw new Error('form-data module is required for file uploads from Buffer in Node.js but not found.');
|
|
855
|
+
}
|
|
856
|
+
// No need to convert to Blob; form-data handles Buffers directly.
|
|
857
|
+
formData.append('file', file, { filename }); // Pass filename in options for form-data
|
|
846
858
|
} else {
|
|
847
859
|
// Browser environment with File or Blob
|
|
848
860
|
formData.append('file', file as Blob, filename);
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OxyHQServices Node.js Entry Point
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// ------------- Core Imports -------------
|
|
6
|
+
import { OxyServices, OXY_CLOUD_URL } from '../core'; // Adjusted path
|
|
7
|
+
import * as Models from '../models/interfaces'; // Adjusted path
|
|
8
|
+
|
|
9
|
+
// ------------- Core Exports -------------
|
|
10
|
+
export { OxyServices, OXY_CLOUD_URL };
|
|
11
|
+
|
|
12
|
+
// ------------- Model Exports -------------
|
|
13
|
+
export { Models }; // Export all models as a namespace
|
|
14
|
+
export * from '../models/interfaces'; // Export all models directly
|
|
15
|
+
|
|
16
|
+
// Default export for consistency or specific use cases if needed
|
|
17
|
+
export default OxyServices;
|
package/src/ui/index.ts
CHANGED
|
@@ -24,6 +24,7 @@ export { default as SignInScreen } from './screens/SignInScreen';
|
|
|
24
24
|
export { default as SignUpScreen } from './screens/SignUpScreen';
|
|
25
25
|
export { default as AccountCenterScreen } from './screens/AccountCenterScreen';
|
|
26
26
|
export { default as AccountOverviewScreen } from './screens/AccountOverviewScreen';
|
|
27
|
+
export { default as AccountSettingsScreen } from './screens/AccountSettingsScreen';
|
|
27
28
|
|
|
28
29
|
// Export types
|
|
29
30
|
export * from './navigation/types';
|
|
@@ -7,6 +7,7 @@ import SignInScreen from '../screens/SignInScreen';
|
|
|
7
7
|
import SignUpScreen from '../screens/SignUpScreen';
|
|
8
8
|
import AccountCenterScreen from '../screens/AccountCenterScreen';
|
|
9
9
|
import AccountOverviewScreen from '../screens/AccountOverviewScreen';
|
|
10
|
+
import AccountSettingsScreen from '../screens/AccountSettingsScreen';
|
|
10
11
|
import KarmaCenterScreen from '../screens/karma/KarmaCenterScreen';
|
|
11
12
|
import KarmaLeaderboardScreen from '../screens/karma/KarmaLeaderboardScreen';
|
|
12
13
|
import KarmaRulesScreen from '../screens/karma/KarmaRulesScreen';
|
|
@@ -36,6 +37,10 @@ const routes: Record<string, RouteConfig> = {
|
|
|
36
37
|
component: AccountOverviewScreen,
|
|
37
38
|
snapPoints: ['60%', '85%'],
|
|
38
39
|
},
|
|
40
|
+
AccountSettings: {
|
|
41
|
+
component: AccountSettingsScreen,
|
|
42
|
+
snapPoints: ['60%', '100%'],
|
|
43
|
+
},
|
|
39
44
|
KarmaCenter: {
|
|
40
45
|
component: KarmaCenterScreen,
|
|
41
46
|
snapPoints: ['60%', '100%'],
|
|
@@ -17,6 +17,7 @@ import { fontFamilies } from '../styles/fonts';
|
|
|
17
17
|
const AccountCenterScreen: React.FC<BaseScreenProps> = ({
|
|
18
18
|
onClose,
|
|
19
19
|
theme,
|
|
20
|
+
navigate,
|
|
20
21
|
}) => {
|
|
21
22
|
const { user, logout, isLoading } = useOxy();
|
|
22
23
|
|
|
@@ -94,14 +95,14 @@ const AccountCenterScreen: React.FC<BaseScreenProps> = ({
|
|
|
94
95
|
<View style={styles.actionsContainer}>
|
|
95
96
|
<TouchableOpacity
|
|
96
97
|
style={[styles.actionButton, { borderColor }]}
|
|
97
|
-
onPress={() =>
|
|
98
|
+
onPress={() => navigate('AccountSettings', { activeTab: 'profile' })}
|
|
98
99
|
>
|
|
99
100
|
<Text style={[styles.actionButtonText, { color: textColor }]}>Edit Profile</Text>
|
|
100
101
|
</TouchableOpacity>
|
|
101
102
|
|
|
102
103
|
<TouchableOpacity
|
|
103
104
|
style={[styles.actionButton, { borderColor }]}
|
|
104
|
-
onPress={() =>
|
|
105
|
+
onPress={() => navigate('AccountSettings')}
|
|
105
106
|
>
|
|
106
107
|
<Text style={[styles.actionButtonText, { color: textColor }]}>Account Settings</Text>
|
|
107
108
|
</TouchableOpacity>
|