From 107949846117b87fcd1eb9f53473a02a4b13f807 Mon Sep 17 00:00:00 2001 From: Miguel Alatzar Date: Tue, 31 Mar 2020 17:43:18 -0700 Subject: [PATCH] [MM-23708] Send HW key pressed event only when a HW keyboard is connected (#4100) * Check if HW keyboard is connected * Call super * Fix double new line insert --- .../com/mattermost/rnbeta/MainActivity.java | 23 +++++++++++++++++-- .../post_textbox/post_textbox_base.js | 3 ++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/com/mattermost/rnbeta/MainActivity.java b/android/app/src/main/java/com/mattermost/rnbeta/MainActivity.java index 41508156a..78dd0d1dc 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/MainActivity.java +++ b/android/app/src/main/java/com/mattermost/rnbeta/MainActivity.java @@ -2,16 +2,31 @@ package com.mattermost.rnbeta; import android.os.Bundle; import androidx.annotation.Nullable; +import android.view.KeyEvent; +import android.content.res.Configuration; import com.reactnativenavigation.NavigationActivity; -import android.view.KeyEvent; import com.github.emilioicai.hwkeyboardevent.HWKeyboardEventModule; public class MainActivity extends NavigationActivity { + private boolean HWKeyboardConnected = false; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.launch_screen); + setHWKeyboardConnected(); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + + if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { + HWKeyboardConnected = true; + } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) { + HWKeyboardConnected = false; + } } /* @@ -21,11 +36,15 @@ public class MainActivity extends NavigationActivity { */ @Override public boolean dispatchKeyEvent(KeyEvent event) { - if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) { + if (HWKeyboardConnected && event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) { String keyPressed = event.isShiftPressed() ? "shift-enter" : "enter"; HWKeyboardEventModule.getInstance().keyPressed(keyPressed); return true; } return super.dispatchKeyEvent(event); }; + + private void setHWKeyboardConnected() { + HWKeyboardConnected = getResources().getConfiguration().keyboard == Configuration.KEYBOARD_QWERTY; + } } diff --git a/app/components/post_textbox/post_textbox_base.js b/app/components/post_textbox/post_textbox_base.js index a2f078494..eb23dd2e3 100644 --- a/app/components/post_textbox/post_textbox_base.js +++ b/app/components/post_textbox/post_textbox_base.js @@ -53,6 +53,7 @@ import { const {RNTextInputReset} = NativeModules; const INPUT_LINE_HEIGHT = 20; const EXTRA_INPUT_PADDING = 3; +const HW_SHIFT_ENTER_TEXT = Platform.OS === 'ios' ? '\n' : ''; export default class PostTextBoxBase extends PureComponent { static propTypes = { @@ -387,7 +388,7 @@ export default class PostTextBoxBase extends PureComponent { switch (keyEvent.pressedKey) { case 'enter': this.handleSendMessage(); break; - case 'shift-enter': this.handleInsertTextToDraft('\n'); + case 'shift-enter': this.handleInsertTextToDraft(HW_SHIFT_ENTER_TEXT); } }