import { checkPermission } from "tauri-api-adapter/permissions" import type { ISystem } from "../../api/client" import { ejectAllDisks, emptyTrash, getFrontmostApp, getSelectedFilesInFileExplorer, hideAllAppsExceptFrontmost, logoutUser, mute, openTrash, quitAllApps, reboot, setVolume, setVolumeTo0, setVolumeTo25, setVolumeTo50, setVolumeTo75, setVolumeTo100, showDesktop, shutdown, sleep, sleepDisplays, toggleBluetooth, toggleHiddenFiles, toggleMute, toggleStageManager, toggleSystemAppearance, turnVolumeDown, turnVolumeUp, unmute } from "../../commands/system" import { AllKunkunPermission, type FsPermissionScoped, type KunkunFsPermission, type SystemPermission } from "../../permissions" import { SystemPermissionMap } from "../../permissions/permission-map" export function constructSystemApi(permissions: SystemPermission[]): ISystem { return { openTrash: checkPermission( SystemPermissionMap.openTrash, permissions )(openTrash), emptyTrash: checkPermission( SystemPermissionMap.emptyTrash, permissions )(emptyTrash), shutdown: checkPermission( SystemPermissionMap.shutdown, permissions )(shutdown), reboot: checkPermission(SystemPermissionMap.reboot, permissions)(reboot), sleep: checkPermission(SystemPermissionMap.sleep, permissions)(sleep), toggleSystemAppearance: checkPermission( SystemPermissionMap.toggleSystemAppearance, permissions )(toggleSystemAppearance), showDesktop: checkPermission( SystemPermissionMap.showDesktop, permissions )(showDesktop), quitAllApps: checkPermission( SystemPermissionMap.quitAllApps, permissions )(quitAllApps), sleepDisplays: checkPermission( SystemPermissionMap.sleepDisplays, permissions )(sleepDisplays), setVolume: checkPermission( SystemPermissionMap.setVolume, permissions )(setVolume), setVolumeTo0: checkPermission( SystemPermissionMap.setVolumeTo0, permissions )(setVolumeTo0), setVolumeTo25: checkPermission( SystemPermissionMap.setVolumeTo25, permissions )(setVolumeTo25), setVolumeTo50: checkPermission( SystemPermissionMap.setVolumeTo50, permissions )(setVolumeTo50), setVolumeTo75: checkPermission( SystemPermissionMap.setVolumeTo75, permissions )(setVolumeTo75), setVolumeTo100: checkPermission( SystemPermissionMap.setVolumeTo100, permissions )(setVolumeTo100), turnVolumeUp: checkPermission( SystemPermissionMap.turnVolumeUp, permissions )(turnVolumeUp), turnVolumeDown: checkPermission( SystemPermissionMap.turnVolumeDown, permissions )(turnVolumeDown), toggleStageManager: checkPermission( SystemPermissionMap.toggleStageManager, permissions )(toggleStageManager), toggleBluetooth: checkPermission([], permissions)(toggleBluetooth), toggleHiddenFiles: checkPermission( SystemPermissionMap.toggleHiddenFiles, permissions )(toggleHiddenFiles), ejectAllDisks: checkPermission( SystemPermissionMap.ejectAllDisks, permissions )(ejectAllDisks), logoutUser: checkPermission( SystemPermissionMap.logoutUser, permissions )(logoutUser), toggleMute: checkPermission( SystemPermissionMap.toggleMute, permissions )(toggleMute), mute: checkPermission(SystemPermissionMap.mute, permissions)(mute), unmute: checkPermission(SystemPermissionMap.unmute, permissions)(unmute), getFrontmostApp: checkPermission( SystemPermissionMap.getFrontmostApp, permissions )(getFrontmostApp), hideAllAppsExceptFrontmost: checkPermission( SystemPermissionMap.hideAllAppsExceptFrontmost, permissions )(hideAllAppsExceptFrontmost), getSelectedFilesInFileExplorer: checkPermission( SystemPermissionMap.getSelectedFilesInFileExplorer, permissions )(getSelectedFilesInFileExplorer) } } // all enabled by default // export const defaultSystemApi = constructSystemApi([ // "system:volumn", // "system:boot", // "system:disk", // "system:apps", // "system:fs" // ])