mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-27 02:42:25 +08:00
feat(native): windows audio monitoring & recording (#12615)
fix AF-2692 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added comprehensive Windows support for audio and application capture, including real-time microphone usage detection, combined microphone and system audio recording, and application state monitoring. - The "meetings" setting is now enabled on Windows as well as macOS. - Conditional UI styling and attributes introduced for Windows environments in the Electron renderer. - **Bug Fixes** - Enhanced file path handling and validation for Windows in Electron file requests. - **Refactor** - Unified application info handling across platforms by consolidating types into a single `ApplicationInfo` structure. - Updated native module APIs by removing deprecated types, refining method signatures, and improving error messages. - Streamlined audio tapping APIs to use process IDs and consistent callback types. - **Documentation** - Added detailed documentation for the Windows-specific audio recording and microphone listener modules. - **Chores** - Updated development dependencies in multiple packages. - Reorganized and added platform-specific dependencies and configuration for Windows support. <!-- end of auto-generated comment: release notes by coderabbit.ai --> #### PR Dependency Tree * **PR #12615** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) --------- Co-authored-by: LongYinan <lynweklm@gmail.com>
This commit is contained in:
@@ -95,7 +95,10 @@ export const useGeneralSettingList = (): GeneralSettingList => {
|
||||
});
|
||||
}
|
||||
|
||||
if (environment.isMacOs && BUILD_CONFIG.isElectron) {
|
||||
if (
|
||||
(environment.isMacOs || environment.isWindows) &&
|
||||
BUILD_CONFIG.isElectron
|
||||
) {
|
||||
settings.push({
|
||||
key: 'meetings',
|
||||
title: t['com.affine.settings.meetings'](),
|
||||
|
||||
@@ -295,28 +295,31 @@ const MeetingsSettingsMain = () => {
|
||||
/>
|
||||
</SettingRow>
|
||||
</SettingWrapper>
|
||||
<SettingWrapper
|
||||
title={t['com.affine.settings.meetings.privacy.header']()}
|
||||
>
|
||||
<PermissionSettingRow
|
||||
nameKey="com.affine.settings.meetings.privacy.screen-system-audio-recording"
|
||||
descriptionKey="com.affine.settings.meetings.privacy.screen-system-audio-recording.description"
|
||||
permissionSettingKey="com.affine.settings.meetings.privacy.screen-system-audio-recording.permission-setting"
|
||||
hasPermission={permissions?.screen || false}
|
||||
onOpenPermissionSetting={() =>
|
||||
handleOpenPermissionSetting('screen')
|
||||
}
|
||||
/>
|
||||
<PermissionSettingRow
|
||||
nameKey="com.affine.settings.meetings.privacy.microphone"
|
||||
descriptionKey="com.affine.settings.meetings.privacy.microphone.description"
|
||||
permissionSettingKey="com.affine.settings.meetings.privacy.microphone.permission-setting"
|
||||
hasPermission={permissions?.microphone || false}
|
||||
onOpenPermissionSetting={() =>
|
||||
handleOpenPermissionSetting('microphone')
|
||||
}
|
||||
/>
|
||||
</SettingWrapper>
|
||||
{environment.isMacOs && (
|
||||
<SettingWrapper
|
||||
title={t['com.affine.settings.meetings.privacy.header']()}
|
||||
>
|
||||
<PermissionSettingRow
|
||||
nameKey="com.affine.settings.meetings.privacy.screen-system-audio-recording"
|
||||
descriptionKey="com.affine.settings.meetings.privacy.screen-system-audio-recording.description"
|
||||
permissionSettingKey="com.affine.settings.meetings.privacy.screen-system-audio-recording.permission-setting"
|
||||
hasPermission={permissions?.screen || false}
|
||||
onOpenPermissionSetting={() =>
|
||||
handleOpenPermissionSetting('screen')
|
||||
}
|
||||
/>
|
||||
<PermissionSettingRow
|
||||
nameKey="com.affine.settings.meetings.privacy.microphone"
|
||||
descriptionKey="com.affine.settings.meetings.privacy.microphone.description"
|
||||
permissionSettingKey="com.affine.settings.meetings.privacy.microphone.permission-setting"
|
||||
hasPermission={permissions?.microphone || false}
|
||||
onOpenPermissionSetting={() =>
|
||||
handleOpenPermissionSetting('microphone')
|
||||
}
|
||||
/>
|
||||
</SettingWrapper>
|
||||
)}
|
||||
|
||||
<SettingWrapper>
|
||||
<SettingRow
|
||||
name={t['com.affine.settings.meetings.privacy.issues']()}
|
||||
|
||||
Reference in New Issue
Block a user