文件
mynode/packages/app-mobile/utils/checkPermissions.ts
chen 301194963b
一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
feat: Initial clean release of CHM
2026-11-04 11:29:39 +08:00

37 行
1.1 KiB
TypeScript

import Logger from '@joplin/utils/Logger';
import { Platform, PermissionsAndroid, Permission } from 'react-native';
const logger = Logger.create('checkPermissions');
type Rationale = {
title: string;
message: string;
buttonPositive: string;
buttonNegative?: string;
buttonNeutral?: string;
};
interface Options {
rationale?: Rationale;
onRequestConfirmation?: ()=> Promise<boolean>;
}
export default async (permissions: Permission, { rationale, onRequestConfirmation }: Options = {}) => {
// On iOS, permissions are prompted for by the system, so here we assume it's granted.
if (Platform.OS !== 'android') return PermissionsAndroid.RESULTS.GRANTED;
const granted = await PermissionsAndroid.check(permissions);
logger.info('Checked permission:', granted);
if (granted) {
return PermissionsAndroid.RESULTS.GRANTED;
} else {
if (onRequestConfirmation && !await onRequestConfirmation()) {
return PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN;
}
const result = await PermissionsAndroid.request(permissions, rationale);
logger.info('Requested permission:', result);
return result;
}
};