22/* eslint-disable prettier/prettier */
33/* eslint-disable max-len */
44import { type ProtocolAction , JoystickProtocol } from '@/types/joystick'
5+ import i18n from '@/plugins/i18n'
56
67/**
78 * Possible functions in the MAVLink `MANUAL_CONTROL` message protocol
@@ -36,21 +37,24 @@ export class CockpitAction implements ProtocolAction {
3637 }
3738}
3839
39- // Predefined actions
40- export const predefinedCockpitActions : { [ key in CockpitActionsFunction ] : CockpitAction } = {
41- [ CockpitActionsFunction . go_to_next_view ] : new CockpitAction ( CockpitActionsFunction . go_to_next_view , 'Go to next view' ) ,
42- [ CockpitActionsFunction . go_to_previous_view ] : new CockpitAction ( CockpitActionsFunction . go_to_previous_view , 'Go to previous view' ) ,
43- [ CockpitActionsFunction . toggle_full_screen ] : new CockpitAction ( CockpitActionsFunction . toggle_full_screen , 'Toggle full screen' ) ,
44- [ CockpitActionsFunction . mavlink_arm ] : new CockpitAction ( CockpitActionsFunction . mavlink_arm , 'Mavlink arm' ) ,
45- [ CockpitActionsFunction . mavlink_disarm ] : new CockpitAction ( CockpitActionsFunction . mavlink_disarm , 'Mavlink disarm' ) ,
46- [ CockpitActionsFunction . toggle_bottom_bar ] : new CockpitAction ( CockpitActionsFunction . toggle_bottom_bar , 'Toggle bottom bar' ) ,
47- [ CockpitActionsFunction . toggle_top_bar ] : new CockpitAction ( CockpitActionsFunction . toggle_top_bar , 'Toggle top bar' ) ,
48- [ CockpitActionsFunction . start_recording_all_streams ] : new CockpitAction ( CockpitActionsFunction . start_recording_all_streams , 'Start recording all streams' ) ,
49- [ CockpitActionsFunction . stop_recording_all_streams ] : new CockpitAction ( CockpitActionsFunction . stop_recording_all_streams , 'Stop recording all streams' ) ,
50- [ CockpitActionsFunction . toggle_recording_all_streams ] : new CockpitAction ( CockpitActionsFunction . toggle_recording_all_streams , 'Toggle recording all streams' ) ,
51- [ CockpitActionsFunction . take_snapshot ] : new CockpitAction ( CockpitActionsFunction . take_snapshot , 'Take snapshot' ) ,
52- [ CockpitActionsFunction . hold_to_confirm ] : new CockpitAction ( CockpitActionsFunction . hold_to_confirm , 'Hold to confirm' ) ,
53- }
40+ // Getter function for dynamic translations
41+ export const getCockpitActions = ( ) : { [ key in CockpitActionsFunction ] : CockpitAction } => ( {
42+ [ CockpitActionsFunction . go_to_next_view ] : new CockpitAction ( CockpitActionsFunction . go_to_next_view , i18n . global . t ( 'configuration.joystick.goToNextView' ) ) ,
43+ [ CockpitActionsFunction . go_to_previous_view ] : new CockpitAction ( CockpitActionsFunction . go_to_previous_view , i18n . global . t ( 'configuration.joystick.goToPreviousView' ) ) ,
44+ [ CockpitActionsFunction . toggle_full_screen ] : new CockpitAction ( CockpitActionsFunction . toggle_full_screen , i18n . global . t ( 'configuration.joystick.toggleFullScreen' ) ) ,
45+ [ CockpitActionsFunction . mavlink_arm ] : new CockpitAction ( CockpitActionsFunction . mavlink_arm , i18n . global . t ( 'configuration.joystick.mavlinkArm' ) ) ,
46+ [ CockpitActionsFunction . mavlink_disarm ] : new CockpitAction ( CockpitActionsFunction . mavlink_disarm , i18n . global . t ( 'configuration.joystick.mavlinkDisarm' ) ) ,
47+ [ CockpitActionsFunction . toggle_bottom_bar ] : new CockpitAction ( CockpitActionsFunction . toggle_bottom_bar , i18n . global . t ( 'configuration.joystick.toggleBottomBar' ) ) ,
48+ [ CockpitActionsFunction . toggle_top_bar ] : new CockpitAction ( CockpitActionsFunction . toggle_top_bar , i18n . global . t ( 'configuration.joystick.toggleTopBar' ) ) ,
49+ [ CockpitActionsFunction . start_recording_all_streams ] : new CockpitAction ( CockpitActionsFunction . start_recording_all_streams , i18n . global . t ( 'configuration.joystick.startRecordingAllStreams' ) ) ,
50+ [ CockpitActionsFunction . stop_recording_all_streams ] : new CockpitAction ( CockpitActionsFunction . stop_recording_all_streams , i18n . global . t ( 'configuration.joystick.stopRecordingAllStreams' ) ) ,
51+ [ CockpitActionsFunction . toggle_recording_all_streams ] : new CockpitAction ( CockpitActionsFunction . toggle_recording_all_streams , i18n . global . t ( 'configuration.joystick.toggleRecordingAllStreams' ) ) ,
52+ [ CockpitActionsFunction . take_snapshot ] : new CockpitAction ( CockpitActionsFunction . take_snapshot , i18n . global . t ( 'configuration.joystick.takeSnapshot' ) ) ,
53+ [ CockpitActionsFunction . hold_to_confirm ] : new CockpitAction ( CockpitActionsFunction . hold_to_confirm , i18n . global . t ( 'configuration.joystick.holdToConfirm' ) ) ,
54+ } )
55+
56+ // Predefined actions (for backward compatibility, initialized once)
57+ export const predefinedCockpitActions : { [ key in CockpitActionsFunction ] : CockpitAction } = getCockpitActions ( )
5458
5559export type CockpitActionCallback = ( ) => void
5660
@@ -72,15 +76,21 @@ interface CallbackEntry {
7276 * Responsible for routing cockpit actions
7377 */
7478export class CockpitActionsManager {
75- availableActions : { [ key in CockpitActionsFunction ] : CockpitAction } = { ...predefinedCockpitActions }
7679 actionsCallbacks : Record < string , CallbackEntry > = { }
7780
81+ // Make availableActions a getter so it always returns fresh translations
82+ get availableActions ( ) : { [ key in CockpitActionsFunction ] : CockpitAction } {
83+ return getCockpitActions ( )
84+ }
85+
7886 registerNewAction = ( action : CockpitAction ) : void => {
79- this . availableActions [ action . id ] = action
87+ // Note: This won't work with getter, but it's not commonly used
88+ console . warn ( 'registerNewAction is not supported with dynamic translations' )
8089 }
8190
8291 unregisterAction = ( id : CockpitActionsFunction ) : void => {
83- delete this . availableActions [ id ]
92+ // Note: This won't work with getter, but it's not commonly used
93+ console . warn ( 'unregisterAction is not supported with dynamic translations' )
8494 }
8595
8696 registerActionCallback = ( action : CockpitAction , callback : CockpitActionCallback ) : string => {
@@ -132,8 +142,14 @@ export const executeActionCallback = (id: string): void => {
132142 cockpitActionsManager . executeActionCallback ( id )
133143}
134144
145+ // Export for backward compatibility
135146export const availableCockpitActions = cockpitActionsManager . availableActions
136147
148+ // Export getter function for dynamic translations
149+ export const getAvailableCockpitActions = ( ) : { [ key in CockpitActionsFunction ] : CockpitAction } => {
150+ return getCockpitActions ( )
151+ }
152+
137153/**
138154 * Action configuration interface
139155 */
0 commit comments