31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
// Metro module 4733 (f4734).
|
|
import { NativePermissionTypes } from "./NativePermissionConstants";
|
|
import { InputModes } from "../../Constants";
|
|
import LifecycleManager from "../../lib/LifecycleManager";
|
|
import { isDesktop, isMac } from "../../utils/PlatformUtils";
|
|
import { ProcessArgs } from "../../utils/ProcessArgs";
|
|
import Dispatcher from "../../Dispatcher";
|
|
import * as _NativePermissionUtils from "./NativePermissionUtils";
|
|
class NativePermissionManager extends LifecycleManager {
|
|
isEnabled() {
|
|
return isDesktop() && isMac() && !ProcessArgs.isDiscordTestSet();
|
|
}
|
|
_initialize() {
|
|
if (this.isEnabled()) {
|
|
Dispatcher.subscribe("AUDIO_SET_MODE", this.handleAudioSetMode);
|
|
}
|
|
}
|
|
_terminate() {
|
|
if (this.isEnabled()) {
|
|
Dispatcher.unsubscribe("AUDIO_SET_MODE", this.handleAudioSetMode);
|
|
}
|
|
}
|
|
handleAudioSetMode(a0) {
|
|
if (a0.mode === InputModes.PUSH_TO_TALK) {
|
|
_NativePermissionUtils.default.requestPermission(NativePermissionTypes.INPUT_MONITORING);
|
|
}
|
|
}
|
|
}
|
|
const nativePermissionManager = new NativePermissionManager();
|
|
export default nativePermissionManager;
|