stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
41 lines • 1.78 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useAfterKeyboardOpenCallback = void 0;
var _react = require("react");
var _reactNative = require("react-native");
var _useStableCallback = require("./useStableCallback");
var _MessageInputContext = require("../contexts/messageInputContext/MessageInputContext");
var useAfterKeyboardOpenCallback = callback => {
var _useMessageInputConte = (0, _MessageInputContext.useMessageInputContext)(),
inputBoxRef = _useMessageInputConte.inputBoxRef;
var keyboardSubscriptionRef = (0, _react.useRef)(undefined);
var stableCallback = (0, _useStableCallback.useStableCallback)(callback);
var clearKeyboardSubscription = (0, _useStableCallback.useStableCallback)(() => {
var _keyboardSubscription;
(_keyboardSubscription = keyboardSubscriptionRef.current) == null || _keyboardSubscription.remove();
keyboardSubscriptionRef.current = undefined;
});
(0, _react.useEffect)(() => clearKeyboardSubscription, [clearKeyboardSubscription]);
return (0, _useStableCallback.useStableCallback)((...args) => {
clearKeyboardSubscription();
var runCallback = () => {
clearKeyboardSubscription();
stableCallback(...args);
};
if (!inputBoxRef.current) {
runCallback();
return;
}
if (_reactNative.Keyboard.isVisible()) {
inputBoxRef.current.focus();
runCallback();
return;
}
var keyboardEvent = _reactNative.Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';
keyboardSubscriptionRef.current = _reactNative.Keyboard.addListener(keyboardEvent, runCallback);
inputBoxRef.current.focus();
});
};
exports.useAfterKeyboardOpenCallback = useAfterKeyboardOpenCallback;
//# sourceMappingURL=useAfterKeyboardOpenCallback.js.map