Skip to content

Commit

Permalink
joystick: Remove options to import/export mappings from/to vehicle
Browse files Browse the repository at this point in the history
This is now done automatically by the settings syncer.
  • Loading branch information
rafaellehmkuhl committed Feb 7, 2024
1 parent 47d7f87 commit b742866
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 97 deletions.
59 changes: 0 additions & 59 deletions src/stores/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,10 @@ import { computed, ref, toRaw, watch } from 'vue'

import { availableGamepadToCockpitMaps, cockpitStandardToProtocols } from '@/assets/joystick-profiles'
import { useBlueOsStorage } from '@/composables/settingsSyncer'
import { getKeyDataFromCockpitVehicleStorage, setKeyDataOnCockpitVehicleStorage } from '@/libs/blueos'
import { type JoystickEvent, EventType, joystickManager, JoystickModel } from '@/libs/joystick/manager'
import { allAvailableAxes, allAvailableButtons } from '@/libs/joystick/protocols'
import { modifierKeyActions, otherAvailableActions } from '@/libs/joystick/protocols/other'
import {
type GamepadToCockpitStdMapping,
type JoystickProtocolActionsMapping,
type JoystickState,
type ProtocolAction,
Expand Down Expand Up @@ -245,36 +243,6 @@ export const useControllerStore = defineStore('controller', () => {
reader.readAsText(e.target.files[0])
}

const exportJoysticksMappingsToVehicle = async (
vehicleAddress: string,
joystickMappings: { [key in JoystickModel]: GamepadToCockpitStdMapping }
): Promise<void> => {
await setKeyDataOnCockpitVehicleStorage(vehicleAddress, cockpitStdMappingsKey, joystickMappings)
Swal.fire({ icon: 'success', text: 'Joystick mapping exported to vehicle.', timer: 3000 })
}

const importJoysticksMappingsFromVehicle = async (vehicleAddress: string): Promise<void> => {
const newMapping = await getKeyDataFromCockpitVehicleStorage(vehicleAddress, cockpitStdMappingsKey)
if (!newMapping) {
Swal.fire({ icon: 'error', text: 'No joystick mappings to import from vehicle.', timer: 3000 })
return
}
try {
Object.values(newMapping).forEach((mapping) => {
if (!mapping['name'] || !mapping['axes'] || !mapping['buttons']) {
throw Error('Invalid joystick mapping inside vehicle.')
}
})
} catch (error) {
Swal.fire({ icon: 'error', text: `Could not import joystick mapping from vehicle. ${error}`, timer: 3000 })
return
}

// @ts-ignore: We check for the necessary fields in the if before
cockpitStdMappings.value = newMapping
Swal.fire({ icon: 'success', text: 'Joystick mapping imported from vehicle.', timer: 3000 })
}

const exportFunctionsMapping = (protocolActionsMapping: JoystickProtocolActionsMapping): void => {
const blob = new Blob([JSON.stringify(protocolActionsMapping)], { type: 'text/plain;charset=utf-8' })
saveAs(blob, `cockpit-std-profile-joystick-${protocolActionsMapping.name}.json`)
Expand All @@ -300,29 +268,6 @@ export const useControllerStore = defineStore('controller', () => {
reader.readAsText(e.target.files[0])
}

const exportFunctionsMappingToVehicle = async (
vehicleAddress: string,
functionsMapping: JoystickProtocolActionsMapping[]
): Promise<void> => {
await setKeyDataOnCockpitVehicleStorage(vehicleAddress, protocolMappingsKey, functionsMapping)
Swal.fire({ icon: 'success', text: 'Joystick functions mapping exported to vehicle.', timer: 3000 })
}

const importFunctionsMappingFromVehicle = async (vehicleAddress: string): Promise<void> => {
const newMappings = await getKeyDataFromCockpitVehicleStorage(vehicleAddress, protocolMappingsKey)
if (!newMappings) {
throw new Error('Could not import functions mapping from vehicle. No data available.')
}

newMappings.forEach((mapping: JoystickProtocolActionsMapping) => {
if (!mapping || !mapping['name'] || !mapping['axesCorrespondencies'] || !mapping['buttonsCorrespondencies']) {
throw new Error('Could not import joystick funtions from vehicle. Invalid data.')
}
})
// @ts-ignore: We check for the necessary fields in the if before
protocolMappings.value = newMappings
}

return {
registerControllerUpdateCallback,
enableForwarding,
Expand All @@ -336,11 +281,7 @@ export const useControllerStore = defineStore('controller', () => {
loadProtocolMapping,
exportJoystickMapping,
importJoystickMapping,
exportJoysticksMappingsToVehicle,
importJoysticksMappingsFromVehicle,
exportFunctionsMapping,
importFunctionsMapping,
exportFunctionsMappingToVehicle,
importFunctionsMappingFromVehicle,
}
})
38 changes: 0 additions & 38 deletions src/views/ConfigurationJoystickView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -132,20 +132,6 @@
/>
Import from computer
</label>
<button
class="p-2 m-1 font-medium border rounded-md text-uppercase"
@click="
controllerStore.exportJoysticksMappingsToVehicle(globalAddress, controllerStore.cockpitStdMappings)
"
>
Export to vehicle
</button>
<button
class="p-2 m-1 font-medium border rounded-md text-uppercase"
@click="controllerStore.importJoysticksMappingsFromVehicle(globalAddress)"
>
Import from vehicle
</button>
</div>
</div>
<div class="flex flex-col items-center max-w-[30%] mb-4">
Expand All @@ -166,20 +152,6 @@
/>
Import from computer
</label>
<button
class="p-2 m-1 font-medium border rounded-md text-uppercase"
@click="
controllerStore.exportFunctionsMappingToVehicle(globalAddress, controllerStore.protocolMappings)
"
>
Export to vehicle
</button>
<button
class="p-2 m-1 font-medium border rounded-md text-uppercase"
@click="importFunctionsMappingFromVehicle"
>
Import from vehicle
</button>
</div>
</div>
</div>
Expand Down Expand Up @@ -295,7 +267,6 @@

<script setup lang="ts">
import semver from 'semver'
import Swal from 'sweetalert2'
import { type Ref, computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue'
import Button from '@/components/Button.vue'
Expand Down Expand Up @@ -372,15 +343,6 @@ const setCurrentInputs = (joystick: Joystick, inputs: JoystickInput[]): void =>
inputClickedDialog.value = true
}
const importFunctionsMappingFromVehicle = async (): Promise<void> => {
try {
await controllerStore.importFunctionsMappingFromVehicle(globalAddress)
Swal.fire({ icon: 'success', text: 'Joystick functions mappings imported from the vehicle.' })
} catch (error) {
Swal.fire({ icon: 'error', text: `${error}` })
}
}
/**
* Remaps the input of a given joystick. The function waits for a button press on the joystick and then
* updates the mapping to associate the joystick input with the pressed button. If no button is pressed
Expand Down

0 comments on commit b742866

Please sign in to comment.