Skip to content

Commit

Permalink
Android: Fix toolbar symbols insert into codeEditor (#815)
Browse files Browse the repository at this point in the history
^ALTAPPS-1088
  • Loading branch information
XanderZhu authored Dec 23, 2023
1 parent 503c44e commit 0015d9c
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,27 @@ object CodeEditorKeyboardExtensionUtil {
)
}

fun interface OnToolbarSymbolClickListener {
fun onToolbarSymbolClick(symbol: String, resultCode: String)
}

fun setupKeyboardExtension(
context: Context,
rootView: View,
recyclerView: RecyclerView,
codeLayout: CodeEditorLayout,
codeToolbarAdapter: CodeToolbarAdapter,
isToolbarEnabled: () -> Boolean = { true },
onToolbarSymbolClicked: ((String) -> Unit)? = null,
onToolbarSymbolClicked: OnToolbarSymbolClickListener? = null,
codeEditorKeyboardListener: CodeEditorKeyboardListener? = null
) {
codeToolbarAdapter.onSymbolClickListener = CodeToolbarAdapter.OnSymbolClickListener { symbol, offset ->
onToolbarSymbolClicked?.invoke(symbol)
// insert should be done first
applySymbolTo(codeLayout, symbol, offset)
onToolbarSymbolClicked?.onToolbarSymbolClick(
symbol = symbol,
resultCode = codeLayout.text
)
}

codeLayout.codeToolbarAdapter = codeToolbarAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ constructor(
codeEditor.theme = value
}

val text: CharSequence
val text: String
get() = codeEditor.text.toString()

var langExtension: String
Expand Down Expand Up @@ -72,7 +72,7 @@ constructor(
}

fun setTextIfChanged(text: String) {
if (this.text.toString() != text) {
if (this.text != text) {
codeEditor.setText(text)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,11 @@ class CodeStepQuizFragment :
recyclerView = keyboardExtensionViewBinding.stepQuizCodeKeyboardExtensionRecycler,
codeLayout = viewBinding.stepQuizCodeEmbeddedEditor.codeStepLayout,
codeToolbarAdapter = requireNotNull(codeToolbarAdapter),
onToolbarSymbolClicked = ::onKeyboardExtensionSymbolClicked,
onToolbarSymbolClicked = { symbol, _ ->
logAnalyticEventMessage(
StepQuizFeature.Message.CodeEditorClickedInputAccessoryButtonEventMessage(symbol)
)
},
codeEditorKeyboardListener = { isKeyboardShown, toolbarHeight ->
if (isResumed) {
onKeyboardStateChanged(isKeyboardShown)
Expand Down Expand Up @@ -177,7 +181,8 @@ class CodeStepQuizFragment :
onRetryButtonClicked()
}

override fun onKeyboardExtensionSymbolClicked(symbol: String) {
override fun onKeyboardExtensionSymbolClicked(symbol: String, code: String) {
syncReplyState(config.createReply(code))
logAnalyticEventMessage(
StepQuizFeature.Message.CodeEditorClickedInputAccessoryButtonEventMessage(symbol)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,8 @@ class CodeStepQuizFullScreenDialogFragment : DialogFragment() {
}

private fun initViewPager() {
val pagerAdapter = CodeStepQuizFullScreenPagerAdapter(requireContext())
val pagerAdapter =
CodeStepQuizFullScreenPagerAdapter(requireContext())

viewBinding.fullScreenCodeViewPager.adapter = pagerAdapter
viewBinding.fullScreenCodeTabs.setupWithViewPager(viewBinding.fullScreenCodeViewPager)
Expand Down Expand Up @@ -285,8 +286,8 @@ class CodeStepQuizFullScreenDialogFragment : DialogFragment() {
// We show the keyboard extension only when "Code" tab is opened
viewBinding.fullScreenCodeViewPager.currentItem == CODE_TAB
},
onToolbarSymbolClicked = { symbol ->
callback?.onKeyboardExtensionSymbolClicked(symbol)
onToolbarSymbolClicked = { symbol, resultCode ->
callback?.onKeyboardExtensionSymbolClicked(symbol, resultCode)
},
codeEditorKeyboardListener = { isKeyboardShown, toolbarHeight ->
with(codeLayout) {
Expand Down Expand Up @@ -325,14 +326,14 @@ class CodeStepQuizFullScreenDialogFragment : DialogFragment() {
}

private fun syncCodeStateWithParent(onSubmitClicked: Boolean = false) {
callback?.onSyncCodeStateWithParent(codeLayout.text.toString(), onSubmitClicked)
callback?.onSyncCodeStateWithParent(codeLayout.text, onSubmitClicked)
}

interface Callback {
fun onSyncCodeStateWithParent(code: String, onSubmitClicked: Boolean = false)
fun onResetCodeClick()

fun onKeyboardExtensionSymbolClicked(symbol: String)
fun onKeyboardExtensionSymbolClicked(symbol: String, code: String)
}

data class Params(
Expand Down

0 comments on commit 0015d9c

Please sign in to comment.