@@ -258,7 +258,7 @@ object ActionDataEntityMapper {
258258
259259 ActionId .VOLUME_INCREASE_STREAM ,
260260 ActionId .VOLUME_DECREASE_STREAM ,
261- -> {
261+ -> {
262262 val stream =
263263 entity.extras.getData(ActionEntity .EXTRA_STREAM_TYPE ).then {
264264 VOLUME_STREAM_MAP .getKey(it)!! .success()
@@ -283,7 +283,7 @@ object ActionDataEntityMapper {
283283 ActionId .VOLUME_TOGGLE_MUTE ,
284284 ActionId .VOLUME_UNMUTE ,
285285 ActionId .VOLUME_MUTE ,
286- -> {
286+ -> {
287287 val showVolumeUi =
288288 entity.flags.hasFlag(ActionEntity .ACTION_FLAG_SHOW_VOLUME_UI )
289289
@@ -304,7 +304,7 @@ object ActionDataEntityMapper {
304304 ActionId .TOGGLE_FLASHLIGHT ,
305305 ActionId .ENABLE_FLASHLIGHT ,
306306 ActionId .CHANGE_FLASHLIGHT_STRENGTH ,
307- -> {
307+ -> {
308308 val lens = entity.extras.getData(ActionEntity .EXTRA_LENS ).then {
309309 LENS_MAP .getKey(it)!! .success()
310310 }.valueOrNull() ? : return null
@@ -330,7 +330,7 @@ object ActionDataEntityMapper {
330330 }
331331
332332 ActionId .DISABLE_FLASHLIGHT ,
333- -> {
333+ -> {
334334 val lens = entity.extras.getData(ActionEntity .EXTRA_LENS ).then {
335335 LENS_MAP .getKey(it)!! .success()
336336 }.valueOrNull() ? : return null
@@ -339,7 +339,7 @@ object ActionDataEntityMapper {
339339
340340 ActionId .TOGGLE_DND_MODE ,
341341 ActionId .ENABLE_DND_MODE ,
342- -> {
342+ -> {
343343 val dndMode = entity.extras.getData(ActionEntity .EXTRA_DND_MODE ).then {
344344 DND_MODE_MAP .getKey(it)!! .success()
345345 }.valueOrNull() ? : return null
@@ -369,7 +369,7 @@ object ActionDataEntityMapper {
369369 ActionId .STOP_MEDIA_PACKAGE ,
370370 ActionId .STEP_FORWARD_PACKAGE ,
371371 ActionId .STEP_BACKWARD_PACKAGE ,
372- -> {
372+ -> {
373373 val packageName =
374374 entity.extras.getData(ActionEntity .EXTRA_PACKAGE_NAME ).valueOrNull()
375375 ? : return null
@@ -498,7 +498,6 @@ object ActionDataEntityMapper {
498498 ActionId .DISABLE_NFC -> ActionData .Nfc .Disable
499499 ActionId .TOGGLE_NFC -> ActionData .Nfc .Toggle
500500
501- ActionId .MOVE_CURSOR_TO_END -> ActionData .MoveCursorToEnd
502501 ActionId .TOGGLE_KEYBOARD -> ActionData .ToggleKeyboard
503502 ActionId .SHOW_KEYBOARD -> ActionData .ShowKeyboard
504503 ActionId .HIDE_KEYBOARD -> ActionData .HideKeyboard
@@ -606,6 +605,39 @@ object ActionDataEntityMapper {
606605 nodeActions = actions,
607606 )
608607 }
608+
609+ ActionId .MOVE_CURSOR -> {
610+ // For compatibility with the old "Move cursor to the end" action.
611+ if (entity.extras.isEmpty()) {
612+ return ActionData .MoveCursor (
613+ moveType = ActionData .MoveCursor .Type .PAGE ,
614+ ActionData .MoveCursor .Direction .END
615+ )
616+ }
617+
618+ val type =
619+ entity.extras.getData(ActionEntity .EXTRA_MOVE_CURSOR_TYPE ).then { value ->
620+ when (value) {
621+ ActionEntity .CURSOR_TYPE_CHAR -> Success (ActionData .MoveCursor .Type .CHAR )
622+ ActionEntity .CURSOR_TYPE_WORD -> Success (ActionData .MoveCursor .Type .WORD )
623+ ActionEntity .CURSOR_TYPE_LINE -> Success (ActionData .MoveCursor .Type .LINE )
624+ ActionEntity .CURSOR_TYPE_PARAGRAPH -> Success (ActionData .MoveCursor .Type .PARAGRAPH )
625+ ActionEntity .CURSOR_TYPE_PAGE -> Success (ActionData .MoveCursor .Type .PAGE )
626+ else -> KMError .Exception (IllegalArgumentException (" Unknown move cursor type: $value " ))
627+ }
628+ }.valueOrNull() ? : return null
629+
630+ val direction =
631+ entity.extras.getData(ActionEntity .EXTRA_MOVE_CURSOR_DIRECTION ).then { value ->
632+ when (value) {
633+ ActionEntity .CURSOR_DIRECTION_START -> Success (ActionData .MoveCursor .Direction .START )
634+ ActionEntity .CURSOR_DIRECTION_END -> Success (ActionData .MoveCursor .Direction .END )
635+ else -> KMError .Exception (IllegalArgumentException (" Unknown move cursor direction: $value " ))
636+ }
637+ }.valueOrNull() ? : return null
638+
639+ ActionData .MoveCursor (moveType = type, direction = direction)
640+ }
609641 }
610642 }
611643
@@ -918,6 +950,24 @@ object ActionDataEntityMapper {
918950 }
919951 }
920952
953+ is ActionData .MoveCursor -> buildList {
954+ val typeString = when (data.moveType) {
955+ ActionData .MoveCursor .Type .CHAR -> ActionEntity .CURSOR_TYPE_CHAR
956+ ActionData .MoveCursor .Type .WORD -> ActionEntity .CURSOR_TYPE_WORD
957+ ActionData .MoveCursor .Type .LINE -> ActionEntity .CURSOR_TYPE_LINE
958+ ActionData .MoveCursor .Type .PARAGRAPH -> ActionEntity .CURSOR_TYPE_PARAGRAPH
959+ ActionData .MoveCursor .Type .PAGE -> ActionEntity .CURSOR_TYPE_PAGE
960+ }
961+ add(EntityExtra (ActionEntity .EXTRA_MOVE_CURSOR_TYPE , typeString))
962+
963+ val directionString = when (data.direction) {
964+ ActionData .MoveCursor .Direction .START -> ActionEntity .CURSOR_DIRECTION_START
965+ ActionData .MoveCursor .Direction .END -> ActionEntity .CURSOR_DIRECTION_END
966+ }
967+ add(EntityExtra (ActionEntity .EXTRA_MOVE_CURSOR_DIRECTION , directionString))
968+ }
969+
970+
921971 else -> emptyList()
922972 }
923973
@@ -1051,7 +1101,9 @@ object ActionDataEntityMapper {
10511101 ActionId .DISABLE_NFC to " nfc_disable" ,
10521102 ActionId .TOGGLE_NFC to " nfc_toggle" ,
10531103
1054- ActionId .MOVE_CURSOR_TO_END to " move_cursor_to_end" ,
1104+ // This action used to just move the cursor to the end. Do not change the
1105+ // id for compatibility reasons.
1106+ ActionId .MOVE_CURSOR to " move_cursor_to_end" ,
10551107 ActionId .TOGGLE_KEYBOARD to " toggle_keyboard" ,
10561108 ActionId .SHOW_KEYBOARD to " show_keyboard" ,
10571109 ActionId .HIDE_KEYBOARD to " hide_keyboard" ,
0 commit comments