Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 35 additions & 7 deletions app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
UIBackgroundModes: ['remote-notification', 'audio', 'bluetooth-central', 'voip'],
ITSAppUsesNonExemptEncryption: false,
UIViewControllerBasedStatusBarAppearance: false,
NSBluetoothAlwaysUsageDescription: 'Allow Resgrid Unit to connect to bluetooth devices for PTT.',
NSBluetoothAlwaysUsageDescription:
'Resgrid Unit uses Bluetooth to connect to wireless headsets and speaker-microphone accessories for Push-to-Talk audio. For example, when you pair a Bluetooth speaker-mic, pressing its talk button transmits your voice to your department audio channel.',
// Allow the app to open its own custom-scheme deep links (needed for SSO callbacks)
LSApplicationQueriesSchemes: ['resgridunit'],
},
Expand Down Expand Up @@ -138,7 +139,13 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
'expo-router',
['react-native-edge-to-edge'],
'expo-web-browser',
'expo-secure-store',
[
'expo-secure-store',
{
// Biometric-gated secure storage is not used; omit NSFaceIDUsageDescription.
faceIDPermission: false,
},
],
'expo-image',
'expo-sharing',
'expo-status-bar',
Expand All @@ -154,9 +161,14 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
[
'expo-location',
{
locationWhenInUsePermission: 'Allow Resgrid Unit to show current location on map.',
locationAlwaysAndWhenInUsePermission: 'Allow Resgrid Unit to use your location for department updates.',
locationAlwaysPermission: 'Resgrid Unit needs to track your location for department AVL.',
locationWhenInUsePermission:
'Resgrid Unit uses your location while you use the app to show your unit position on the department map and to attach your coordinates when you set a status or respond to a call. For example, when you respond to a call, your location is shared with dispatch so they can see which unit is closest to the scene.',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kody code-review Kody Rules high

Sensitive permission copy in app.config.ts exposes operational and health-adjacent incident details by describing live location sharing with dispatch and incident-scene proximity. Minimize the permission text in app.config.ts, including at app.config.ts:167-167 and app.config.ts:169-169, and remove scenario-specific references such as incident scenes or dispatch tracking examples.

Kody rule violation: Do not log PHI; mask and drop sensitive fields

'Resgrid Unit uses your location while you use the app to show your unit position on the department map and to support dispatch coordination for active incidents.',
Prompt for LLM

File app.config.ts:

Line 165:

Sensitive permission copy in app.config.ts exposes operational and health-adjacent incident details by describing live location sharing with dispatch and incident-scene proximity. Minimize the permission text in app.config.ts, including at app.config.ts:167-167 and app.config.ts:169-169, and remove scenario-specific references such as incident scenes or dispatch tracking examples.

Suggested Code:

'Resgrid Unit uses your location while you use the app to show your unit position on the department map and to support dispatch coordination for active incidents.',

Talk to Kody by mentioning @kody

Was this suggestion helpful? React with 👍 or 👎 to help Kody learn from this interaction.

locationAlwaysAndWhenInUsePermission:
'Resgrid Unit uses your location, including in the background, to keep your department dispatch map updated with your unit position (automatic vehicle location). For example, while you are en route to an emergency call, your unit location is periodically sent to dispatchers so they can track your arrival and coordinate resources, even when the app is not on screen.',
locationAlwaysPermission:
'Resgrid Unit uses your location in the background to keep your department dispatch map updated with your unit position (automatic vehicle location). For example, while you are en route to an emergency call, your unit location is periodically sent to dispatchers so they can track your arrival and coordinate resources, even when the app is not on screen.',
// Motion activity APIs (getMotionActivityAsync) are not used; omit NSMotionUsageDescription.
motionUsagePermission: false,
isIosBackgroundLocationEnabled: true,
isAndroidBackgroundLocationEnabled: true,
isAndroidForegroundServiceEnabled: true,
Expand Down Expand Up @@ -216,6 +228,15 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
iCloudContainerEnvironment: 'Production',
},
],
[
'expo-image-picker',
{
photosPermission:
'Resgrid Unit uses your photo library so you can attach existing photos to calls and chat messages. For example, you can select a saved photo of an incident scene and share it with dispatch and other responders on the call.',
cameraPermission:
'Resgrid Unit uses the camera to take photos that you attach to calls and for video during department video sessions. For example, you can photograph an incident scene and attach the image to the active call for other responders to see.',
},
],
[
'@sentry/react-native/expo',
{
Expand All @@ -235,13 +256,20 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
[
'expo-audio',
{
microphonePermission: 'Allow Resgrid Unit to access the microphone for audio input used in PTT and calls.',
microphonePermission:
'Resgrid Unit uses the microphone to capture your voice for Push-to-Talk and voice calls with your department. For example, when you press and hold the talk button, your voice is transmitted live to other responders on the channel.',
},
],
'expo-video',
'react-native-ble-manager',
'@livekit/react-native-expo-plugin',
'@config-plugins/react-native-webrtc',
[
'@config-plugins/react-native-webrtc',
{
cameraPermission:
'Resgrid Unit uses the camera to take photos that you attach to calls and for video during department video sessions. For example, you can photograph an incident scene and attach the image to the active call for other responders to see.',
},
],
'@config-plugins/react-native-callkeep',
'expo-notifications',
'./customGradle.plugin.js',
Expand Down
Loading