@oxyhq/services
Version:
172 lines (165 loc) • 5.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useUsersBySessions = exports.useUserProfiles = exports.useUserProfile = exports.useUserByUsername = exports.useUserById = exports.usePrivacySettings = exports.useCurrentUser = void 0;
var _reactQuery = require("@tanstack/react-query");
var _core = require("@oxyhq/core");
var _queryKeys = require("./queryKeys.js");
var _OxyContext = require("../../context/OxyContext.js");
/**
* Get user profile by session ID
*/
const useUserProfile = (sessionId, options) => {
const {
oxyServices
} = (0, _OxyContext.useOxy)();
return (0, _reactQuery.useQuery)({
queryKey: _queryKeys.queryKeys.users.profile(sessionId || ''),
queryFn: async () => {
if (!sessionId) {
throw new Error('Session ID is required');
}
return await oxyServices.getUserBySession(sessionId);
},
enabled: options?.enabled !== false && !!sessionId,
staleTime: 5 * 60 * 1000,
// 5 minutes
gcTime: 30 * 60 * 1000 // 30 minutes
});
};
/**
* Get multiple user profiles by session IDs (batch query)
*/
exports.useUserProfile = useUserProfile;
const useUserProfiles = (sessionIds, options) => {
const {
oxyServices
} = (0, _OxyContext.useOxy)();
return (0, _reactQuery.useQueries)({
queries: sessionIds.map(sessionId => ({
queryKey: _queryKeys.queryKeys.users.profile(sessionId),
queryFn: async () => {
const results = await oxyServices.getUsersBySessions([sessionId]);
return results[0]?.user || null;
},
enabled: options?.enabled !== false && !!sessionId,
staleTime: 5 * 60 * 1000,
gcTime: 30 * 60 * 1000
}))
});
};
/**
* Get current authenticated user
*/
exports.useUserProfiles = useUserProfiles;
const useCurrentUser = options => {
const {
oxyServices,
activeSessionId,
isAuthenticated
} = (0, _OxyContext.useOxy)();
return (0, _reactQuery.useQuery)({
queryKey: _queryKeys.queryKeys.accounts.current(),
queryFn: async () => {
if (!activeSessionId) {
throw new Error('No active session');
}
return await oxyServices.getUserBySession(activeSessionId);
},
enabled: options?.enabled !== false && isAuthenticated && !!activeSessionId,
staleTime: 1 * 60 * 1000,
// 1 minute for current user
gcTime: 30 * 60 * 1000
});
};
/**
* Get user by ID
*/
exports.useCurrentUser = useCurrentUser;
const useUserById = (userId, options) => {
const {
oxyServices
} = (0, _OxyContext.useOxy)();
return (0, _reactQuery.useQuery)({
queryKey: _queryKeys.queryKeys.users.detail(userId || ''),
queryFn: async () => {
if (!userId) {
throw new Error('User ID is required');
}
return await oxyServices.getUserById(userId);
},
enabled: options?.enabled !== false && !!userId,
staleTime: 5 * 60 * 1000,
gcTime: 30 * 60 * 1000
});
};
/**
* Get user profile by username
*/
exports.useUserById = useUserById;
const useUserByUsername = (username, options) => {
const {
oxyServices
} = (0, _OxyContext.useOxy)();
return (0, _reactQuery.useQuery)({
queryKey: [..._queryKeys.queryKeys.users.details(), 'username', username || ''],
queryFn: async () => {
if (!username) {
throw new Error('Username is required');
}
return await oxyServices.getProfileByUsername(username);
},
enabled: options?.enabled !== false && !!username,
staleTime: 5 * 60 * 1000,
gcTime: 30 * 60 * 1000
});
};
/**
* Batch get users by session IDs (optimized single API call)
*/
exports.useUserByUsername = useUserByUsername;
const useUsersBySessions = (sessionIds, options) => {
const {
oxyServices
} = (0, _OxyContext.useOxy)();
return (0, _reactQuery.useQuery)({
queryKey: _queryKeys.queryKeys.accounts.list(sessionIds),
queryFn: async () => {
if (sessionIds.length === 0) {
return [];
}
return await oxyServices.getUsersBySessions(sessionIds);
},
enabled: options?.enabled !== false && sessionIds.length > 0,
staleTime: 5 * 60 * 1000,
gcTime: 30 * 60 * 1000
});
};
/**
* Get privacy settings for a user
*/
exports.useUsersBySessions = useUsersBySessions;
const usePrivacySettings = (userId, options) => {
const {
oxyServices,
activeSessionId,
user
} = (0, _OxyContext.useOxy)();
const targetUserId = userId || user?.id;
return (0, _reactQuery.useQuery)({
queryKey: _queryKeys.queryKeys.privacy.settings(targetUserId),
queryFn: async () => {
if (!targetUserId) {
throw new Error('User ID is required');
}
return (0, _core.authenticatedApiCall)(oxyServices, activeSessionId, () => oxyServices.getPrivacySettings(targetUserId));
},
enabled: options?.enabled !== false && !!targetUserId,
staleTime: 2 * 60 * 1000,
// 2 minutes
gcTime: 10 * 60 * 1000 // 10 minutes
});
};
exports.usePrivacySettings = usePrivacySettings;
//# sourceMappingURL=useAccountQueries.js.map