From 65f148de7d22e0e2fbdc89db5fcb2a088042bcb3 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Mon, 9 Apr 2018 18:58:52 +0200 Subject: [PATCH] Add type for react-native-permissions (#24793) --- types/react-native-permissions/index.d.ts | 28 +++++++++++++++++++ .../react-native-permissions-tests.ts | 9 ++++++ types/react-native-permissions/tsconfig.json | 23 +++++++++++++++ types/react-native-permissions/tslint.json | 1 + 4 files changed, 61 insertions(+) create mode 100644 types/react-native-permissions/index.d.ts create mode 100644 types/react-native-permissions/react-native-permissions-tests.ts create mode 100644 types/react-native-permissions/tsconfig.json create mode 100644 types/react-native-permissions/tslint.json diff --git a/types/react-native-permissions/index.d.ts b/types/react-native-permissions/index.d.ts new file mode 100644 index 0000000000..4b08cee5b3 --- /dev/null +++ b/types/react-native-permissions/index.d.ts @@ -0,0 +1,28 @@ +// Type definitions for react-native-permissions 1.1 +// Project: https://github.com/yonahforst/react-native-permissions +// Definitions by: Vincent Langlet +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +type Status = 'authorized' | 'denied' | 'restricted' | 'undetermined'; + +interface Rationale { + title: string; + message: string; +} + +type CheckOptions = string | { type: string }; + +type RequestOptions = string | { type: string, rationale?: Rationale }; + +interface ReactNativePermissions { + canOpenSettings: () => Promise; + openSettings: () => Promise; + getTypes: () => string[]; + check: (permission: string, options?: CheckOptions) => Promise; + request: (permission: string, options?: RequestOptions) => Promise; + checkMultiple: (permissions: string[]) => Promise<{ [key: string]: string }>; +} + +declare const Permissions: ReactNativePermissions; + +export default Permissions; diff --git a/types/react-native-permissions/react-native-permissions-tests.ts b/types/react-native-permissions/react-native-permissions-tests.ts new file mode 100644 index 0000000000..f4595f558c --- /dev/null +++ b/types/react-native-permissions/react-native-permissions-tests.ts @@ -0,0 +1,9 @@ +import Permissions from 'react-native-permissions'; + +const firstType = Permissions.getTypes()[0]; + +Permissions.canOpenSettings().then(); +Permissions.openSettings().then(); +Permissions.check('geolocation').then(); +Permissions.request('geolocation').then(); +Permissions.checkMultiple(['geolocation', 'notification']).then(); diff --git a/types/react-native-permissions/tsconfig.json b/types/react-native-permissions/tsconfig.json new file mode 100644 index 0000000000..6c1dc92447 --- /dev/null +++ b/types/react-native-permissions/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "react-native-permissions-tests.ts" + ] +} diff --git a/types/react-native-permissions/tslint.json b/types/react-native-permissions/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/react-native-permissions/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }