@oxyhq/services
Version:
56 lines (54 loc) • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useAvatarPicker = useAvatarPicker;
var _react = require("react");
var _core = require("@oxyhq/core");
var _sonner = require("../../lib/sonner");
var _avatarUtils = require("../utils/avatarUtils.js");
/**
* Avatar Picker Hook
*
* Extracts avatar selection logic from OxyContext for better modularity.
* Opens the FileManagement bottom sheet in select mode for image files,
* then updates the user's profile avatar.
*/
function useAvatarPicker({
oxyServices,
currentLanguage,
activeSessionId,
queryClient,
showBottomSheet
}) {
const openAvatarPicker = (0, _react.useCallback)(() => {
showBottomSheet({
screen: 'FileManagement',
props: {
selectMode: true,
multiSelect: false,
disabledMimeTypes: ['video/', 'audio/', 'application/pdf'],
afterSelect: 'none',
onSelect: async file => {
if (!file.contentType.startsWith('image/')) {
_sonner.toast.error((0, _core.translate)(currentLanguage ?? undefined, 'editProfile.toasts.selectImage') || 'Please select an image file');
return;
}
try {
await (0, _avatarUtils.updateAvatarVisibility)(file.id, oxyServices, 'OxyContext');
await (0, _avatarUtils.updateProfileWithAvatar)({
avatar: file.id
}, oxyServices, activeSessionId, queryClient);
_sonner.toast.success((0, _core.translate)(currentLanguage ?? undefined, 'editProfile.toasts.avatarUpdated') || 'Avatar updated');
} catch (e) {
_sonner.toast.error(e.message || (0, _core.translate)(currentLanguage ?? undefined, 'editProfile.toasts.updateAvatarFailed') || 'Failed to update avatar');
}
}
}
});
}, [oxyServices, currentLanguage, showBottomSheet, activeSessionId, queryClient]);
return {
openAvatarPicker
};
}
//# sourceMappingURL=useAvatarPicker.js.map