@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.
Files changed (73) hide show
  1. package/README.md +71 -24
  2. package/UI_COMPONENTS.md +48 -0
  3. package/lib/commonjs/core/index.js +17 -4
  4. package/lib/commonjs/core/index.js.map +1 -1
  5. package/lib/commonjs/index.js +0 -3
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/node/index.js +52 -0
  8. package/lib/commonjs/node/index.js.map +1 -0
  9. package/lib/commonjs/ui/index.js +9 -1
  10. package/lib/commonjs/ui/index.js.map +1 -1
  11. package/lib/commonjs/ui/navigation/OxyRouter.js +5 -0
  12. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  13. package/lib/commonjs/ui/screens/AccountCenterScreen.js +6 -3
  14. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  15. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +638 -0
  16. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -0
  17. package/lib/module/core/index.js +17 -4
  18. package/lib/module/core/index.js.map +1 -1
  19. package/lib/module/index.js +0 -3
  20. package/lib/module/index.js.map +1 -1
  21. package/lib/module/node/index.js +20 -0
  22. package/lib/module/node/index.js.map +1 -0
  23. package/lib/module/ui/index.js +1 -0
  24. package/lib/module/ui/index.js.map +1 -1
  25. package/lib/module/ui/navigation/OxyRouter.js +5 -0
  26. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  27. package/lib/module/ui/screens/AccountCenterScreen.js +6 -3
  28. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  29. package/lib/module/ui/screens/AccountSettingsScreen.js +632 -0
  30. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -0
  31. package/lib/typescript/__tests__/ui/screens/AccountSettingsScreen.test.d.ts +2 -0
  32. package/lib/typescript/__tests__/ui/screens/AccountSettingsScreen.test.d.ts.map +1 -0
  33. package/lib/typescript/core/index.d.ts.map +1 -1
  34. package/lib/typescript/index.d.ts +0 -3
  35. package/lib/typescript/index.d.ts.map +1 -1
  36. package/lib/typescript/node/index.d.ts +10 -0
  37. package/lib/typescript/node/index.d.ts.map +1 -0
  38. package/lib/typescript/ui/index.d.ts +1 -0
  39. package/lib/typescript/ui/index.d.ts.map +1 -1
  40. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  41. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  42. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts +8 -0
  43. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -0
  44. package/package.json +5 -22
  45. package/src/__tests__/ui/screens/AccountSettingsScreen.test.tsx +112 -0
  46. package/src/core/index.ts +16 -4
  47. package/src/index.ts +0 -3
  48. package/src/node/index.ts +17 -0
  49. package/src/ui/index.ts +1 -0
  50. package/src/ui/navigation/OxyRouter.tsx +5 -0
  51. package/src/ui/screens/AccountCenterScreen.tsx +3 -2
  52. package/src/ui/screens/AccountSettingsScreen.tsx +616 -0
  53. package/lib/commonjs/backend.js +0 -44
  54. package/lib/commonjs/backend.js.map +0 -1
  55. package/lib/commonjs/core-only.js +0 -44
  56. package/lib/commonjs/core-only.js.map +0 -1
  57. package/lib/commonjs/test-backend.js +0 -21
  58. package/lib/commonjs/test-backend.js.map +0 -1
  59. package/lib/module/backend.js +0 -17
  60. package/lib/module/backend.js.map +0 -1
  61. package/lib/module/core-only.js +0 -17
  62. package/lib/module/core-only.js.map +0 -1
  63. package/lib/module/test-backend.js +0 -18
  64. package/lib/module/test-backend.js.map +0 -1
  65. package/lib/typescript/backend.d.ts +0 -9
  66. package/lib/typescript/backend.d.ts.map +0 -1
  67. package/lib/typescript/core-only.d.ts +0 -9
  68. package/lib/typescript/core-only.d.ts.map +0 -1
  69. package/lib/typescript/test-backend.d.ts +0 -8
  70. package/lib/typescript/test-backend.d.ts.map +0 -1
  71. package/src/backend.ts +0 -14
  72. package/src/core-only.ts +0 -14
  73. package/src/test-backend.ts +0 -17
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"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"}
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;;;;;GAKG;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"}
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;AAkBnD,OAAO,EAAE,cAAc,EAAe,MAAM,SAAS,CAAC;AAkDtD,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAiGvC,CAAC;AAaF,eAAe,SAAS,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,CAuIlD,CAAC;AAwFF,eAAe,mBAAmB,CAAC"}
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.29",
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
- // Convert Buffer to Blob for FormData compatibility
844
- const blob = new Blob([file]);
845
- formData.append('file', blob, filename);
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
@@ -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
 
8
5
  // ------------- Core Imports -------------
@@ -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={() => Alert.alert('Profile', 'Edit Profile feature coming soon!')}
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={() => Alert.alert('Settings', 'Account Settings feature coming soon!')}
105
+ onPress={() => navigate('AccountSettings')}
105
106
  >
106
107
  <Text style={[styles.actionButtonText, { color: textColor }]}>Account Settings</Text>
107
108
  </TouchableOpacity>