@forthtilliath/react-native-kit 0.15.0 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -198,6 +198,8 @@ Recognizes French by default (`fr-FR`, or `en-US` with `locale="en"`); pass `lan
|
|
|
198
198
|
|
|
199
199
|
Photo picker (camera or library) with a preview and a remove link. `savePhoto` is injected rather than hard-coded, so where/how the picked image gets persisted is entirely up to the caller.
|
|
200
200
|
|
|
201
|
+
Only the camera asks for a permission: the library opens the system photo picker, which needs none — the app can block `READ_EXTERNAL_STORAGE` / `WRITE_EXTERNAL_STORAGE` / `READ_MEDIA_IMAGES` (e.g. `android.blockedPermissions` in `app.json`).
|
|
202
|
+
|
|
201
203
|
```tsx
|
|
202
204
|
import { PhotoPicker } from "@forthtilliath/react-native-kit/components/picker/PhotoPicker";
|
|
203
205
|
|
|
@@ -15,7 +15,12 @@ export interface PhotoPickerLabels {
|
|
|
15
15
|
addPlaceholderText?: string;
|
|
16
16
|
cameraPermissionTitle?: string;
|
|
17
17
|
cameraPermissionMessage?: string;
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated Unused: choosing from the library needs no permission (the
|
|
20
|
+
* system photo picker), so no "access denied" alert is ever shown.
|
|
21
|
+
*/
|
|
18
22
|
libraryPermissionTitle?: string;
|
|
23
|
+
/** @deprecated Unused — see `libraryPermissionTitle`. */
|
|
19
24
|
libraryPermissionMessage?: string;
|
|
20
25
|
takePhoto?: string;
|
|
21
26
|
chooseFromLibrary?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhotoPicker.d.ts","sourceRoot":"","sources":["../../../src/components/picker/PhotoPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKhF,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,sBAAsB,CAAC;AAGpE,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,oBAAoB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,sBAAsB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACvD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"PhotoPicker.d.ts","sourceRoot":"","sources":["../../../src/components/picker/PhotoPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKhF,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,sBAAsB,CAAC;AAGpE,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,oBAAoB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,sBAAsB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACvD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,yDAAyD;IACzD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAyED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE,gBAAgB,+BAqGlB"}
|
|
@@ -41,8 +41,6 @@ const defaultLabels = {
|
|
|
41
41
|
addPlaceholderText: "Ajouter une photo",
|
|
42
42
|
cameraPermissionTitle: "Accès à l'appareil photo refusé",
|
|
43
43
|
cameraPermissionMessage: "Autorise l'accès dans les réglages du téléphone pour prendre une photo.",
|
|
44
|
-
libraryPermissionTitle: "Accès aux photos refusé",
|
|
45
|
-
libraryPermissionMessage: "Autorise l'accès dans les réglages du téléphone pour choisir une photo.",
|
|
46
44
|
takePhoto: "Prendre une photo",
|
|
47
45
|
chooseFromLibrary: "Choisir dans la galerie",
|
|
48
46
|
cancel: "Annuler",
|
|
@@ -55,8 +53,6 @@ const defaultLabels = {
|
|
|
55
53
|
addPlaceholderText: "Add a photo",
|
|
56
54
|
cameraPermissionTitle: "Camera access denied",
|
|
57
55
|
cameraPermissionMessage: "Allow access in the phone's settings to take a photo.",
|
|
58
|
-
libraryPermissionTitle: "Photo access denied",
|
|
59
|
-
libraryPermissionMessage: "Allow access in the phone's settings to choose a photo.",
|
|
60
56
|
takePhoto: "Take a photo",
|
|
61
57
|
chooseFromLibrary: "Choose from library",
|
|
62
58
|
cancel: "Cancel",
|
|
@@ -86,12 +82,10 @@ export function PhotoPicker({ photoUri, onChange, savePhoto, photoLabel, labels,
|
|
|
86
82
|
onChange(await savePhoto(result.assets[0].uri));
|
|
87
83
|
}
|
|
88
84
|
}
|
|
85
|
+
// No permission request: the library is opened through the system photo
|
|
86
|
+
// picker, which needs none — so apps don't have to keep the storage
|
|
87
|
+
// permissions just for this.
|
|
89
88
|
async function pickFromLibrary() {
|
|
90
|
-
const permission = await ImagePicker.requestMediaLibraryPermissionsAsync();
|
|
91
|
-
if (!permission.granted) {
|
|
92
|
-
Alert.alert(t.libraryPermissionTitle, t.libraryPermissionMessage);
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
89
|
const result = await ImagePicker.launchImageLibraryAsync({
|
|
96
90
|
mediaTypes: "images",
|
|
97
91
|
quality: 0.5,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forthtilliath/react-native-kit",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"./*": "./dist/*.js"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@forthtilliath/expo-release-updates-ui": "^0.3.
|
|
25
|
+
"@forthtilliath/expo-release-updates-ui": "^0.3.1",
|
|
26
26
|
"@forthtilliath/ts-kit": "^0.11.0"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|