@oxyhq/services 0.0.85 → 0.1.0
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 +269 -79
- package/dist/components/AuthBottomSheet/types.d.ts +24 -0
- package/dist/components/AuthBottomSheet/types.js +2 -0
- package/dist/components/FileSelectorModal/types.d.ts +35 -0
- package/dist/components/FileSelectorModal/types.js +2 -0
- package/dist/components/SessionProvider.d.ts +26 -0
- package/dist/components/SessionProvider.js +367 -0
- package/dist/config.d.ts +169 -0
- package/dist/config.js +115 -0
- package/dist/constants.d.ts +54 -0
- package/dist/constants.js +61 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.js +23 -0
- package/dist/hooks/useAuth.d.ts +6 -0
- package/dist/hooks/useAuth.js +17 -0
- package/dist/hooks/useFiles.d.ts +10 -0
- package/dist/hooks/useFiles.js +329 -0
- package/dist/hooks/useProfile.d.ts +13 -0
- package/dist/hooks/useProfile.js +154 -0
- package/dist/hooks/useSession.d.ts +2 -0
- package/dist/hooks/useSession.js +12 -0
- package/dist/hooks/useSubscription.d.ts +15 -0
- package/dist/hooks/useSubscription.js +85 -0
- package/dist/index.d.ts +28 -7
- package/dist/index.js +82 -6
- package/dist/package.json +71 -0
- package/dist/reducers/index.d.ts +8 -0
- package/dist/reducers/index.js +29 -0
- package/dist/reducers/profileReducer.d.ts +55 -0
- package/dist/reducers/profileReducer.js +136 -0
- package/dist/services/OxyClient.d.ts +84 -0
- package/dist/services/OxyClient.js +309 -0
- package/dist/services/api.service.d.ts +61 -0
- package/dist/services/api.service.js +289 -0
- package/dist/services/auth.service.d.ts +87 -0
- package/dist/services/auth.service.js +266 -0
- package/dist/services/index.d.ts +30 -0
- package/dist/services/index.js +88 -0
- package/dist/services/payment.service.d.ts +20 -0
- package/dist/services/payment.service.js +56 -0
- package/dist/services/privacy.service.d.ts +16 -0
- package/dist/services/privacy.service.js +69 -0
- package/dist/services/profile.service.d.ts +20 -0
- package/dist/services/profile.service.js +158 -0
- package/dist/services/subscription.service.d.ts +7 -0
- package/dist/services/subscription.service.js +46 -0
- package/dist/services/user.service.d.ts +25 -0
- package/dist/services/user.service.js +109 -0
- package/dist/styles/colors.d.ts +24 -0
- package/dist/styles/colors.js +31 -0
- package/dist/styles/shared.d.ts +168 -0
- package/dist/styles/shared.js +177 -0
- package/dist/types/index.d.ts +136 -2
- package/dist/types/index.js +7 -1
- package/dist/utils/api.d.ts +20 -0
- package/dist/utils/api.js +546 -0
- package/dist/utils/authEvents.d.ts +44 -0
- package/dist/utils/authEvents.js +73 -0
- package/dist/utils/errorHandler.d.ts +68 -0
- package/dist/utils/errorHandler.js +166 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.js +41 -0
- package/dist/utils/logger.d.ts +100 -0
- package/dist/utils/logger.js +298 -0
- package/dist/utils/socket.d.ts +6 -0
- package/dist/utils/socket.js +179 -0
- package/dist/utils/socketConfig.d.ts +32 -0
- package/dist/utils/socketConfig.js +67 -0
- package/dist/utils/storage.d.ts +54 -0
- package/dist/utils/storage.js +253 -0
- package/package.json +71 -59
- package/dist/assets/dot-icon.d.ts +0 -3
- package/dist/assets/dot-icon.d.ts.map +0 -1
- package/dist/assets/dot-icon.js +0 -6
- package/dist/assets/verified-icon.d.ts +0 -3
- package/dist/assets/verified-icon.d.ts.map +0 -1
- package/dist/assets/verified-icon.js +0 -10
- package/dist/components/assets/oxy-logo.d.ts +0 -3
- package/dist/components/assets/oxy-logo.d.ts.map +0 -1
- package/dist/components/assets/oxy-logo.js +0 -30
- package/dist/components/auth/AccountSwitcherModal.d.ts +0 -7
- package/dist/components/auth/AccountSwitcherModal.d.ts.map +0 -1
- package/dist/components/auth/AccountSwitcherModal.js +0 -91
- package/dist/components/auth/SessionOwnerButton.d.ts +0 -3
- package/dist/components/auth/SessionOwnerButton.d.ts.map +0 -1
- package/dist/components/auth/SessionOwnerButton.js +0 -35
- package/dist/components/auth/SignInButton.d.ts +0 -8
- package/dist/components/auth/SignInButton.d.ts.map +0 -1
- package/dist/components/auth/SignInButton.js +0 -15
- package/dist/components/auth/styles/account-switcher-modal.module.css +0 -29
- package/dist/components/auth/styles/account-switcher-modal.module.css.map +0 -1
- package/dist/components/auth/styles/oavatar.module.css +0 -34
- package/dist/components/auth/styles/oavatar.module.css.map +0 -1
- package/dist/components/auth/styles/session-owner-modal.module.css +0 -35
- package/dist/components/auth/styles/session-owner-modal.module.css.map +0 -1
- package/dist/components/auth/styles/sign-in-button.module.css +0 -30
- package/dist/components/auth/styles/sign-in-button.module.css.map +0 -1
- package/dist/components/elements/button/components/button.d.ts +0 -7
- package/dist/components/elements/button/components/button.d.ts.map +0 -1
- package/dist/components/elements/button/components/button.js +0 -6
- package/dist/components/elements/button/components/styles/button.module.css +0 -25
- package/dist/components/elements/button/components/styles/button.module.css.map +0 -1
- package/dist/components/elements/button/index.d.ts +0 -2
- package/dist/components/elements/button/index.d.ts.map +0 -1
- package/dist/components/elements/button/index.js +0 -1
- package/dist/components/elements/ellipsis-wrapper/components/EllipsisWrapper.d.ts +0 -5
- package/dist/components/elements/ellipsis-wrapper/components/EllipsisWrapper.d.ts.map +0 -1
- package/dist/components/elements/ellipsis-wrapper/components/EllipsisWrapper.js +0 -4
- package/dist/components/elements/ellipsis-wrapper/components/ellipsis-wrapper.d.ts +0 -5
- package/dist/components/elements/ellipsis-wrapper/components/ellipsis-wrapper.d.ts.map +0 -1
- package/dist/components/elements/ellipsis-wrapper/components/ellipsis-wrapper.js +0 -4
- package/dist/components/elements/ellipsis-wrapper/components/styles/ellipses-wrapper.module.css +0 -11
- package/dist/components/elements/ellipsis-wrapper/components/styles/ellipses-wrapper.module.css.map +0 -1
- package/dist/components/elements/ellipsis-wrapper/index.d.ts +0 -2
- package/dist/components/elements/ellipsis-wrapper/index.d.ts.map +0 -1
- package/dist/components/elements/ellipsis-wrapper/index.js +0 -1
- package/dist/components/elements/modal/components/confirmation-modal.d.ts +0 -12
- package/dist/components/elements/modal/components/confirmation-modal.d.ts.map +0 -1
- package/dist/components/elements/modal/components/confirmation-modal.js +0 -21
- package/dist/components/elements/modal/components/modal.d.ts +0 -13
- package/dist/components/elements/modal/components/modal.d.ts.map +0 -1
- package/dist/components/elements/modal/components/modal.js +0 -111
- package/dist/components/elements/modal/components/styles/confirmation-modal.module.css +0 -105
- package/dist/components/elements/modal/components/styles/confirmation-modal.module.css.map +0 -1
- package/dist/components/elements/modal/components/styles/modal.module.css +0 -10
- package/dist/components/elements/modal/components/styles/modal.module.css.map +0 -1
- package/dist/components/elements/modal/hooks/use-track-position.d.ts +0 -5
- package/dist/components/elements/modal/hooks/use-track-position.d.ts.map +0 -1
- package/dist/components/elements/modal/hooks/use-track-position.js +0 -35
- package/dist/components/elements/modal/index.d.ts +0 -4
- package/dist/components/elements/modal/index.d.ts.map +0 -1
- package/dist/components/elements/modal/index.js +0 -3
- package/dist/config/index.d.ts +0 -21
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -7
- package/dist/features/profile/components/avatar.d.ts +0 -10
- package/dist/features/profile/components/avatar.d.ts.map +0 -1
- package/dist/features/profile/components/avatar.js +0 -7
- package/dist/features/profile/components/styles/avatar.module.css +0 -15
- package/dist/features/profile/components/styles/avatar.module.css.map +0 -1
- package/dist/features/profile/components/styles/user-name.module.css +0 -18
- package/dist/features/profile/components/styles/user-name.module.css.map +0 -1
- package/dist/features/profile/components/styles/user-username.module.css +0 -6
- package/dist/features/profile/components/styles/user-username.module.css.map +0 -1
- package/dist/features/profile/components/user-name.d.ts +0 -7
- package/dist/features/profile/components/user-name.d.ts.map +0 -1
- package/dist/features/profile/components/user-name.js +0 -8
- package/dist/features/profile/components/user-username.d.ts +0 -5
- package/dist/features/profile/components/user-username.d.ts.map +0 -1
- package/dist/features/profile/components/user-username.js +0 -7
- package/dist/features/profile/index.d.ts +0 -4
- package/dist/features/profile/index.d.ts.map +0 -1
- package/dist/features/profile/index.js +0 -3
- package/dist/hooks/get-user.d.ts +0 -2
- package/dist/hooks/get-user.d.ts.map +0 -1
- package/dist/hooks/get-user.js +0 -31
- package/dist/hooks/getClientKey.d.ts +0 -2
- package/dist/hooks/getClientKey.d.ts.map +0 -1
- package/dist/hooks/getClientKey.js +0 -19
- package/dist/hooks/getUserById.d.ts +0 -11
- package/dist/hooks/getUserById.d.ts.map +0 -1
- package/dist/hooks/getUserById.js +0 -31
- package/dist/hooks/use-user.d.ts +0 -14
- package/dist/hooks/use-user.d.ts.map +0 -1
- package/dist/hooks/use-user.js +0 -8
- package/dist/hooks/useCrossDomainStorage.d.ts +0 -6
- package/dist/hooks/useCrossDomainStorage.d.ts.map +0 -1
- package/dist/hooks/useCrossDomainStorage.js +0 -24
- package/dist/hooks/useOxySession.d.ts +0 -30
- package/dist/hooks/useOxySession.d.ts.map +0 -1
- package/dist/hooks/useOxySession.js +0 -64
- package/dist/index.css +0 -5
- package/dist/index.css.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/interfaces/index.d.ts +0 -10
- package/dist/interfaces/index.d.ts.map +0 -1
- package/dist/interfaces/index.js +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/utils/cn.d.ts +0 -3
- package/dist/utils/cn.d.ts.map +0 -1
- package/dist/utils/cn.js +0 -5
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.useProfile = void 0;
|
|
13
|
+
const react_1 = require("react");
|
|
14
|
+
const services_1 = require("../services");
|
|
15
|
+
const useProfile = () => {
|
|
16
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
17
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
18
|
+
const getProfile = (0, react_1.useCallback)((id) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
+
try {
|
|
20
|
+
setLoading(true);
|
|
21
|
+
setError(null);
|
|
22
|
+
const profileService = (0, services_1.getProfileService)();
|
|
23
|
+
return yield profileService.getProfileById(id);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch profile');
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
setLoading(false);
|
|
31
|
+
}
|
|
32
|
+
}), []);
|
|
33
|
+
const updateProfile = (0, react_1.useCallback)((data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
|
+
try {
|
|
35
|
+
setLoading(true);
|
|
36
|
+
setError(null);
|
|
37
|
+
const profileService = (0, services_1.getProfileService)();
|
|
38
|
+
return yield profileService.updateProfile(data);
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
setError(err instanceof Error ? err.message : 'Failed to update profile');
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
setLoading(false);
|
|
46
|
+
}
|
|
47
|
+
}), []);
|
|
48
|
+
const getFollowers = (0, react_1.useCallback)((userId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
+
try {
|
|
50
|
+
setLoading(true);
|
|
51
|
+
setError(null);
|
|
52
|
+
const profileService = (0, services_1.getProfileService)();
|
|
53
|
+
return yield profileService.getFollowers(userId);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch followers');
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
setLoading(false);
|
|
61
|
+
}
|
|
62
|
+
}), []);
|
|
63
|
+
const getFollowing = (0, react_1.useCallback)((userId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
|
+
try {
|
|
65
|
+
setLoading(true);
|
|
66
|
+
setError(null);
|
|
67
|
+
const profileService = (0, services_1.getProfileService)();
|
|
68
|
+
return yield profileService.getFollowing(userId);
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch following');
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
setLoading(false);
|
|
76
|
+
}
|
|
77
|
+
}), []);
|
|
78
|
+
const followUser = (0, react_1.useCallback)((userId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
79
|
+
try {
|
|
80
|
+
setLoading(true);
|
|
81
|
+
setError(null);
|
|
82
|
+
const profileService = (0, services_1.getProfileService)();
|
|
83
|
+
yield profileService.follow(userId);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
setError(err instanceof Error ? err.message : 'Failed to follow user');
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
setLoading(false);
|
|
92
|
+
}
|
|
93
|
+
}), []);
|
|
94
|
+
const unfollowUser = (0, react_1.useCallback)((userId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
95
|
+
try {
|
|
96
|
+
setLoading(true);
|
|
97
|
+
setError(null);
|
|
98
|
+
const profileService = (0, services_1.getProfileService)();
|
|
99
|
+
yield profileService.unfollow(userId);
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
setError(err instanceof Error ? err.message : 'Failed to unfollow user');
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
setLoading(false);
|
|
108
|
+
}
|
|
109
|
+
}), []);
|
|
110
|
+
const getFollowingStatus = (0, react_1.useCallback)((userId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
111
|
+
try {
|
|
112
|
+
setLoading(true);
|
|
113
|
+
setError(null);
|
|
114
|
+
const profileService = (0, services_1.getProfileService)();
|
|
115
|
+
return yield profileService.getFollowingStatus(userId);
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
setError(err instanceof Error ? err.message : 'Failed to get following status');
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
setLoading(false);
|
|
123
|
+
}
|
|
124
|
+
}), []);
|
|
125
|
+
const getIdByUsername = (0, react_1.useCallback)((username) => __awaiter(void 0, void 0, void 0, function* () {
|
|
126
|
+
try {
|
|
127
|
+
setLoading(true);
|
|
128
|
+
setError(null);
|
|
129
|
+
const profileService = (0, services_1.getProfileService)();
|
|
130
|
+
const profile = yield profileService.getProfileByUsername(username);
|
|
131
|
+
return (profile === null || profile === void 0 ? void 0 : profile._id) || (profile === null || profile === void 0 ? void 0 : profile.userID) || null;
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch user ID by username');
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
setLoading(false);
|
|
139
|
+
}
|
|
140
|
+
}), []);
|
|
141
|
+
return {
|
|
142
|
+
loading,
|
|
143
|
+
error,
|
|
144
|
+
getProfile,
|
|
145
|
+
updateProfile,
|
|
146
|
+
getFollowers,
|
|
147
|
+
getFollowing,
|
|
148
|
+
followUser,
|
|
149
|
+
unfollowUser,
|
|
150
|
+
getFollowingStatus,
|
|
151
|
+
getIdByUsername
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
exports.useProfile = useProfile;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSession = useSession;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const SessionProvider_1 = require("../components/SessionProvider");
|
|
6
|
+
function useSession() {
|
|
7
|
+
const context = (0, react_1.useContext)(SessionProvider_1.SessionContext);
|
|
8
|
+
if (!context) {
|
|
9
|
+
throw new Error('useSession must be used within a SessionProvider');
|
|
10
|
+
}
|
|
11
|
+
return context;
|
|
12
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const useSubscription: () => {
|
|
2
|
+
updateSubscription: (plan: "basic" | "pro" | "business") => Promise<any>;
|
|
3
|
+
cancelSubscription: () => Promise<void>;
|
|
4
|
+
loading: boolean;
|
|
5
|
+
error: string | null;
|
|
6
|
+
plan: "basic" | "pro" | "business";
|
|
7
|
+
features: {
|
|
8
|
+
analytics: boolean;
|
|
9
|
+
premiumBadge: boolean;
|
|
10
|
+
unlimitedFollowing: boolean;
|
|
11
|
+
higherUploadLimits: boolean;
|
|
12
|
+
promotedPosts: boolean;
|
|
13
|
+
businessTools: boolean;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.useSubscription = void 0;
|
|
13
|
+
const react_1 = require("react");
|
|
14
|
+
const subscription_service_1 = require("../services/subscription.service");
|
|
15
|
+
const useAuth_1 = require("./useAuth");
|
|
16
|
+
const useSubscription = () => {
|
|
17
|
+
const { user } = (0, useAuth_1.useAuth)();
|
|
18
|
+
const [state, setState] = (0, react_1.useState)({
|
|
19
|
+
loading: true,
|
|
20
|
+
error: null,
|
|
21
|
+
plan: 'basic',
|
|
22
|
+
features: {
|
|
23
|
+
analytics: false,
|
|
24
|
+
premiumBadge: false,
|
|
25
|
+
unlimitedFollowing: false,
|
|
26
|
+
higherUploadLimits: false,
|
|
27
|
+
promotedPosts: false,
|
|
28
|
+
businessTools: false,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
(0, react_1.useEffect)(() => {
|
|
32
|
+
const loadSubscription = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
if (!(user === null || user === void 0 ? void 0 : user.id)) {
|
|
34
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { loading: false })));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { loading: true, error: null })));
|
|
39
|
+
const subscription = yield subscription_service_1.subscriptionService.getSubscription(user.id);
|
|
40
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { loading: false, plan: subscription.plan, features: subscription.features })));
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { loading: false, error: error instanceof Error ? error.message : 'Failed to load subscription' })));
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
loadSubscription();
|
|
47
|
+
}, [user === null || user === void 0 ? void 0 : user.id]);
|
|
48
|
+
const updateSubscription = (plan) => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
+
if (!(user === null || user === void 0 ? void 0 : user.id))
|
|
50
|
+
return;
|
|
51
|
+
try {
|
|
52
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { loading: true, error: null })));
|
|
53
|
+
const subscription = yield subscription_service_1.subscriptionService.updateSubscription(user.id, plan);
|
|
54
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { loading: false, plan: subscription.plan, features: subscription.features })));
|
|
55
|
+
return subscription;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { loading: false, error: error instanceof Error ? error.message : 'Failed to update subscription' })));
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
const cancelSubscription = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
63
|
+
if (!(user === null || user === void 0 ? void 0 : user.id))
|
|
64
|
+
return;
|
|
65
|
+
try {
|
|
66
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { loading: true, error: null })));
|
|
67
|
+
yield subscription_service_1.subscriptionService.cancelSubscription(user.id);
|
|
68
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { loading: false, plan: 'basic', features: {
|
|
69
|
+
analytics: false,
|
|
70
|
+
premiumBadge: false,
|
|
71
|
+
unlimitedFollowing: false,
|
|
72
|
+
higherUploadLimits: false,
|
|
73
|
+
promotedPosts: false,
|
|
74
|
+
businessTools: false,
|
|
75
|
+
} })));
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { loading: false, error: error instanceof Error ? error.message : 'Failed to cancel subscription' })));
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return Object.assign(Object.assign({}, state), { updateSubscription,
|
|
83
|
+
cancelSubscription });
|
|
84
|
+
};
|
|
85
|
+
exports.useSubscription = useSubscription;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
/**
|
|
2
|
+
* OxyHQ Services Module
|
|
3
|
+
*
|
|
4
|
+
* This module provides authentication, profile management, file handling, and other
|
|
5
|
+
* services for interacting with the OxyHQ API.
|
|
6
|
+
*
|
|
7
|
+
* @module oxyhqservices
|
|
8
|
+
*/
|
|
9
|
+
export * from './config';
|
|
10
|
+
export * from './constants';
|
|
11
|
+
export * from './services';
|
|
12
|
+
export * from './hooks';
|
|
13
|
+
export * from './types';
|
|
14
|
+
export * from './utils';
|
|
15
|
+
export * from './reducers';
|
|
16
|
+
export * from './styles/shared';
|
|
17
|
+
export * from './utils';
|
|
18
|
+
/**
|
|
19
|
+
* Initialize the OxyHQ services module
|
|
20
|
+
* @param options Configuration options
|
|
21
|
+
*/
|
|
22
|
+
export declare function initialize(options?: {
|
|
23
|
+
apiUrl?: string;
|
|
24
|
+
cloudUrl?: string;
|
|
25
|
+
enableLogging?: boolean;
|
|
26
|
+
logLevel?: string;
|
|
27
|
+
enableOfflineMode?: boolean;
|
|
28
|
+
}): void;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,82 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OxyHQ Services Module
|
|
4
|
+
*
|
|
5
|
+
* This module provides authentication, profile management, file handling, and other
|
|
6
|
+
* services for interacting with the OxyHQ API.
|
|
7
|
+
*
|
|
8
|
+
* @module oxyhqservices
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
22
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.initialize = initialize;
|
|
26
|
+
// Configuration
|
|
27
|
+
__exportStar(require("./config"), exports);
|
|
28
|
+
// Constants
|
|
29
|
+
__exportStar(require("./constants"), exports);
|
|
30
|
+
// Core Services
|
|
31
|
+
__exportStar(require("./services"), exports);
|
|
32
|
+
// Hooks
|
|
33
|
+
__exportStar(require("./hooks"), exports);
|
|
34
|
+
// Types
|
|
35
|
+
__exportStar(require("./types"), exports);
|
|
36
|
+
// Utils
|
|
37
|
+
__exportStar(require("./utils"), exports);
|
|
38
|
+
// Redux Reducers
|
|
39
|
+
__exportStar(require("./reducers"), exports);
|
|
40
|
+
// Shared styles
|
|
41
|
+
__exportStar(require("./styles/shared"), exports);
|
|
42
|
+
// Utilities
|
|
43
|
+
__exportStar(require("./utils"), exports);
|
|
44
|
+
// Import package version
|
|
45
|
+
const package_json_1 = require("./package.json");
|
|
46
|
+
/**
|
|
47
|
+
* Initialize the OxyHQ services module
|
|
48
|
+
* @param options Configuration options
|
|
49
|
+
*/
|
|
50
|
+
function initialize(options) {
|
|
51
|
+
// Import configuration and services
|
|
52
|
+
const { OXY_CONFIG } = require('./config');
|
|
53
|
+
const { logger } = require('./utils/logger');
|
|
54
|
+
// Override configuration with provided options
|
|
55
|
+
if (options) {
|
|
56
|
+
if (options.apiUrl) {
|
|
57
|
+
OXY_CONFIG.API.BASE_URL = options.apiUrl;
|
|
58
|
+
}
|
|
59
|
+
if (options.cloudUrl) {
|
|
60
|
+
OXY_CONFIG.API.CLOUD_URL = options.cloudUrl;
|
|
61
|
+
}
|
|
62
|
+
if (options.enableLogging !== undefined) {
|
|
63
|
+
OXY_CONFIG.LOGGING.ENABLE_REMOTE_LOGGING = options.enableLogging;
|
|
64
|
+
}
|
|
65
|
+
if (options.logLevel) {
|
|
66
|
+
OXY_CONFIG.LOGGING.LEVEL = options.logLevel;
|
|
67
|
+
logger.setLogLevel(options.logLevel);
|
|
68
|
+
}
|
|
69
|
+
if (options.enableOfflineMode !== undefined) {
|
|
70
|
+
OXY_CONFIG.FEATURES.ENABLE_OFFLINE_MODE = options.enableOfflineMode;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Log initialization
|
|
74
|
+
logger.info('OxyHQ Services initialized', 'Initialization', {
|
|
75
|
+
version: package_json_1.version,
|
|
76
|
+
config: {
|
|
77
|
+
apiUrl: OXY_CONFIG.API.BASE_URL,
|
|
78
|
+
cloudUrl: OXY_CONFIG.API.CLOUD_URL,
|
|
79
|
+
environment: OXY_CONFIG.ENV.IS_PROD ? 'production' : 'development'
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@oxyhq/services",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "The Oxy Services Module is a comprehensive package designed to provide reusable services and components for building front-end applications with Oxy.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"clean": "rimraf dist",
|
|
13
|
+
"prepare": "npm run clean && npm run build",
|
|
14
|
+
"test": "jest",
|
|
15
|
+
"lint": "eslint . --ext .ts,.tsx"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@react-native-async-storage/async-storage": "^2.1.2",
|
|
19
|
+
"@reduxjs/toolkit": "^2.5.0",
|
|
20
|
+
"@tanstack/react-query": "^5.68.0",
|
|
21
|
+
"axios": "^1.6.7",
|
|
22
|
+
"date-fns": "^4.1.0",
|
|
23
|
+
"expo-document-picker": "^13.0.3",
|
|
24
|
+
"expo-image-picker": "^16.0.6",
|
|
25
|
+
"expo-router": "^4.0.18",
|
|
26
|
+
"expo-secure-store": "^14.0.1",
|
|
27
|
+
"i18next": "^24.0.5",
|
|
28
|
+
"jwt-decode": "^4.0.0",
|
|
29
|
+
"lodash": "^4.17.21",
|
|
30
|
+
"react": ">=18.0.0",
|
|
31
|
+
"react-dom": "18.3.1",
|
|
32
|
+
"react-i18next": "^15.1.3",
|
|
33
|
+
"react-native": ">=0.70.0",
|
|
34
|
+
"react-native-blob-util": "^0.21.2",
|
|
35
|
+
"react-native-gesture-handler": "~2.20.2",
|
|
36
|
+
"react-native-reanimated": "~3.16.1",
|
|
37
|
+
"react-native-safe-area-context": "4.12.0",
|
|
38
|
+
"react-native-screens": "~4.4.0",
|
|
39
|
+
"react-native-svg": "^15.11.2",
|
|
40
|
+
"react-redux": "^9.2.0",
|
|
41
|
+
"redux": "^5.0.1",
|
|
42
|
+
"socket.io-client": "^4.8.1",
|
|
43
|
+
"sonner": "^1.7.1",
|
|
44
|
+
"sonner-native": "^0.16.2"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@babel/core": "^7.25.2",
|
|
48
|
+
"@babel/preset-env": "^7.26.7",
|
|
49
|
+
"@babel/preset-react": "^7.23.3",
|
|
50
|
+
"@babel/preset-typescript": "^7.23.3",
|
|
51
|
+
"@types/jest": "^29.5.12",
|
|
52
|
+
"@types/lodash": "^4.17.15",
|
|
53
|
+
"@types/node": "^20.11.24",
|
|
54
|
+
"@types/react": "~18.3.12",
|
|
55
|
+
"@types/react-native": "^0.73.0",
|
|
56
|
+
"@typescript-eslint/eslint-plugin": "^7.1.1",
|
|
57
|
+
"@typescript-eslint/parser": "^7.1.1",
|
|
58
|
+
"eslint": "^8.57.0",
|
|
59
|
+
"jest": "^29.7.0",
|
|
60
|
+
"rimraf": "^5.0.5",
|
|
61
|
+
"typescript": "^5.3.3"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"react": ">=18.0.0",
|
|
65
|
+
"react-native": ">=0.70.0"
|
|
66
|
+
},
|
|
67
|
+
"engines": {
|
|
68
|
+
"node": ">=18.0.0"
|
|
69
|
+
},
|
|
70
|
+
"license": "MIT"
|
|
71
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OxyHQ Services Reducers
|
|
3
|
+
*
|
|
4
|
+
* This file exports all Redux reducers used in the OxyHQ services module.
|
|
5
|
+
* These reducers manage global state for various features.
|
|
6
|
+
*/
|
|
7
|
+
export { default as profileReducer } from './profileReducer';
|
|
8
|
+
export * from './profileReducer';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OxyHQ Services Reducers
|
|
4
|
+
*
|
|
5
|
+
* This file exports all Redux reducers used in the OxyHQ services module.
|
|
6
|
+
* These reducers manage global state for various features.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.profileReducer = void 0;
|
|
27
|
+
var profileReducer_1 = require("./profileReducer");
|
|
28
|
+
Object.defineProperty(exports, "profileReducer", { enumerable: true, get: function () { return __importDefault(profileReducer_1).default; } });
|
|
29
|
+
__exportStar(require("./profileReducer"), exports);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Profile Reducer
|
|
3
|
+
*
|
|
4
|
+
* Redux slice for managing user profile state and operations.
|
|
5
|
+
* Provides async thunks for fetching and updating profile data.
|
|
6
|
+
*/
|
|
7
|
+
import { OxyProfile } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Profile state interface
|
|
10
|
+
*/
|
|
11
|
+
interface ProfileState {
|
|
12
|
+
profile: OxyProfile | null;
|
|
13
|
+
loading: boolean;
|
|
14
|
+
error: string | null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Helper function to get a user ID from username
|
|
18
|
+
*/
|
|
19
|
+
export declare const getUsernameToId: ({ username }: {
|
|
20
|
+
username: string;
|
|
21
|
+
}) => Promise<string | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Async thunk to fetch a user profile by username
|
|
24
|
+
*/
|
|
25
|
+
export declare const fetchProfile: import("@reduxjs/toolkit").AsyncThunk<OxyProfile, {
|
|
26
|
+
username: string;
|
|
27
|
+
}, {
|
|
28
|
+
state?: unknown;
|
|
29
|
+
dispatch?: import("redux-thunk").ThunkDispatch<unknown, unknown, import("redux").UnknownAction>;
|
|
30
|
+
extra?: unknown;
|
|
31
|
+
rejectValue?: unknown;
|
|
32
|
+
serializedErrorType?: unknown;
|
|
33
|
+
pendingMeta?: unknown;
|
|
34
|
+
fulfilledMeta?: unknown;
|
|
35
|
+
rejectedMeta?: unknown;
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* Async thunk to update a user profile
|
|
39
|
+
*/
|
|
40
|
+
export declare const updateProfileData: import("@reduxjs/toolkit").AsyncThunk<OxyProfile, {
|
|
41
|
+
id: string;
|
|
42
|
+
data: Partial<OxyProfile>;
|
|
43
|
+
}, {
|
|
44
|
+
state?: unknown;
|
|
45
|
+
dispatch?: import("redux-thunk").ThunkDispatch<unknown, unknown, import("redux").UnknownAction>;
|
|
46
|
+
extra?: unknown;
|
|
47
|
+
rejectValue?: unknown;
|
|
48
|
+
serializedErrorType?: unknown;
|
|
49
|
+
pendingMeta?: unknown;
|
|
50
|
+
fulfilledMeta?: unknown;
|
|
51
|
+
rejectedMeta?: unknown;
|
|
52
|
+
}>;
|
|
53
|
+
export declare const setProfile: import("@reduxjs/toolkit").ActionCreatorWithPayload<OxyProfile, "profile/setProfile">, clearProfile: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"profile/clearProfile">;
|
|
54
|
+
declare const _default: import("redux").Reducer<ProfileState>;
|
|
55
|
+
export default _default;
|